Blob Blame History Raw
diff -r dbb8dc397d15 -r 057fabf9fdcb AUTHORS
--- a/AUTHORS	Mon Dec 18 13:22:51 2017 +0100
+++ b/AUTHORS	Wed Nov 07 12:34:44 2018 +0100
@@ -4,6 +4,7 @@
 Lillian Angel <langel@redhat.com>
 Andrew Azores <aazores@redhat.com>
 Deepak Bhole <dbhole@redhat.com>
+Laurent Bourgès <bourges.laurent@gmail.com>
 Adam Buchta <adbuch7@gmail.com>
 Ricardo Martín Camarero <rickyepoderi@yahoo.es>
 Marcin Cieslak <marcin.cieslak@gmail.com>
@@ -11,6 +12,7 @@
 Adam Domurad <adomurad@redhat.com>
 Lukasz Dracz <ldracz@redhat.com>
 Thomas Fitzsimmons <fitzsim@redhat.com>
+Olesya Gerasimenko <gammaray@basealt.ru>
 Michał Górny <mgorny@gentoo.org>
 Mark Greenwood <mark@dcs.shef.ac.uk>
 Tereza Hlavackova <hlavackova.tereza@gmail.com>
diff -r dbb8dc397d15 -r 057fabf9fdcb ChangeLog
--- a/ChangeLog	Mon Dec 18 13:22:51 2017 +0100
+++ b/ChangeLog	Wed Nov 07 12:34:44 2018 +0100
@@ -1,3 +1,219 @@
+2018-11-07  Olesya Gerasimenko <gammaray@basealt.ru>
+
+	Added Russian translation
+	* netx/net/sourceforge/jnlp/resources/Messages_ru.propertie: new file with Russian strings
+	* tests/netx/unit/net/sourceforge/jnlp/resources/MessagesPropertiesTest.java: added RU to iterated sets.
+	* AUTHORS: added Olesya
+
+2018-10-18  Jiri Vanek <jvanek@redhat.com>
+
+	Removed gcc if native plugin is not build
+	* acinclude.m4: AC_PROG_CC and AC_PROG_CXX moved behind enable_native_plugin condition
+	* configure.ac: AC_PROG_CC and AC_PROG_CXX moved behind enable_native_plugin condition, Faked fastDepC variables
+	otherwise configure always fell
+	* Makefile.am: plugin native tests made passing without plugin
+
+2018-10-17  Jiri Vanek <jvanek@redhat.com>
+            Alex Kashchenko <akashche@redhat.com>
+
+	* netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java: caching enabled, or at least semi-enabled on windows
+
+2018-10-17  Laurent Bourgès <bourges.laurent@gmail.com>
+
+	* netx/net/sourceforge/jnlp/controlpanel/CachePane.java: using SwingUtils.invokeLater instead of 
+	* netx/net/sourceforge/jnlp/controlpanel/CommandLine.java: same + calling SwingUtils.setup
+	* netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java: same
+	* netx/net/sourceforge/jnlp/controlpanel/PolicyPanel.java: same
+	* netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java: same
+	* netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/Blinker.java: same
+	* netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/FreeDesktopIntegrationEditorFrame.java: same
+	* netx/net/sourceforge/jnlp/runtime/Boot.java: same + calling SwingUtils.setup
+	* netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java: same
+	* netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java: same + calling SwingUtils.setup
+	* netx/net/sourceforge/jnlp/splashscreen/parts/BasicComponentErrorSplashScreen.java: same
+	* netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java: same
+	* netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java: same
+	* netx/net/sourceforge/jnlp/util/ImageResources.java: added check for null in stream
+	* netx/net/sourceforge/swing/SwingUtils.java: added setup-able. removed EDT_DAEMON_THREAD_POOL (thus currently not
+	working properly in jdk11+, but fix for JDK itself is on the way)
+
+2018-10-12  Jiri Vanek <jvanek@redhat.com>
+
+	reworked showDocument logic
+	* netx/net/sourceforge/jnlp/config/BasicValueValidators.java: added special validator for browser
+	* netx/net/sourceforge/jnlp/config/Defaults.java: used this validator
+	* netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: declared browser's constants and environment variable
+	* netx/net/sourceforge/jnlp/resources/Messages.properties: removed invalid lines, added new lines
+	* netx/net/sourceforge/jnlp/resources/Messages_cs.properties: removed invalid lines,
+	* netx/net/sourceforge/jnlp/resources/Messages_de.properties: removed invalid lines,
+	* netx/net/sourceforge/jnlp/resources/Messages_pl.properties: removed invalid lines,
+	* netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java: showDocument now works
+	* netx/net/sourceforge/jnlp/runtime/Translator.java: added shortcut method to call call VVPossibleBrowserValues
+	* netx/net/sourceforge/jnlp/runtime/html/browser/LinkingBrowser.java: split creation from stand alone launch
+	* netx/net/sourceforge/jnlp/services/XBasicService.java: fully reworked  showDocument. Focus on standard desktop api and customization
+	* tests/reproducers/signed/ShowDocument/resources/ShowDocumentApplet.jnlp: test jnlp for applet's context.showDocument
+	* tests/reproducers/signed/ShowDocument/resources/ShowDocumentMain.jnlp: test jnlp for application's  basicService.showDocument
+	* tests/reproducers/signed/ShowDocument/resources/document.txt: document to be shown in test
+	* tests/reproducers/signed/ShowDocument/srcs/ShowDocument.java: body of applet/jnlp-app
+	* tests/reproducers/signed/ShowDocument/testcases/ShowDocumentTest.java: two testcases - one for applet, second for app. Both running on headless.
+
+2018-09-26  Jiri Vanek <jvanek@redhat.com>
+
+	Allowed itw-settings to be opened from viewer
+	* netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java: used exit instead of dispose
+	* netx/net/sourceforge/jnlp/resources/Messages.properties: new string with key of ButLunchFullItwSettings
+	* netx/net/sourceforge/jnlp/runtime/Boot.java: get rid of exit, and only return from main method 
+	* netx/net/sourceforge/jnlp/security/SecurityDialog.java: call too showSingleCertInfoDialog changed to Window
+	* netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: added new button to launch ControlPanel main class 
+	* netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java: used exit instead of dispose
+	* netx/net/sourceforge/swing/SwingUtils.java: (info) now accepts Window instead of JDialog
+
+2018-10-01  Laurent Bourgès <bourges.laurent@gmail.com>
+
+	Fixed EDT hanging
+	* AUTHORS: added Laurent
+	* netx/net/sourceforge/jnlp/GuiLaunchHandler.java: invokeLater and invokeAndWait moved from SwingUtilities to the local wrapper SwingUtils.
+	Simplified splashscreen loading
+	* netx/net/sourceforge/jnlp/JNLPSplashScreen.java: called super and added name to the dialog
+	* netx/net/sourceforge/jnlp/Launcher.java: added log entry for main class loading. Highlighted usage of SwingUtilities on top SwingUtils
+	for this particular space
+	* netx/net/sourceforge/jnlp/about/AboutDialog.java: added name. InvokeLater and invokeAndWait moved from SwingUtilities to the 
+	local wrapper SwingUtils.
+	* netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java: reworked to work in SwingUtils.invokeAndWait. Added name.
+	* netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java: added name
+	* netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java: added name
+	* netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java: added top level setup for enabling SwingUtils debugging abilities
+	added log entry for main class loading. Highlighted usage of SwingUtilities on top SwingUtils for this particular space
+	* netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java: instead of invokeAndWait, used SwingUtils.callOnAppContext
+	* netx/net/sourceforge/jnlp/runtime/Boot.java: added top level setup for enabling SwingUtils debugging abilities
+	CertificateViwer moved to invokeAndWait. added log entry for main class loading. Highlighted usage of SwingUtilities instead
+	of SwingUtils for this particular case
+	* netx/net/sourceforge/jnlp/runtime/HtmlBoot.java: invokeLater and invokeAndWait moved from SwingUtilities to the local wrapper SwingUtils.
+	* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: removed import of import javax.swing.JWindow
+	* netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java: direct call to JWindow().getOwner(), moved to  SwingUtils.getOrCreateWindowOwner.
+	Its existence doubtful
+	* netx/net/sourceforge/jnlp/security/SecurityDialog.java: installPanel moved to invokeAndWait
+	* netx/net/sourceforge/jnlp/security/SecurityDialogs.java: used SwingUtils instead of SwingUtilities, added name
+	* netx/net/sourceforge/jnlp/security/dialogs/ViwableDialog.java: swing ops moved to invokeAndWait
+	* netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java: calling Swingutils.setup, still all the same
+	* netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java: still the same
+	* netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java: same - name, SwingUtils x SwingUtilities, and proper usage of invokes
+	* netx/net/sourceforge/jnlp/util/FileUtils.java: SwingUtils x SwingUtilities
+	* netx/net/sourceforge/jnlp/util/logging/JavaConsole.java: observable.notifyObservers moved to invokeLater and
+	and invoked only if observable.hasChanged
+	* netx/net/sourceforge/swing/SwingUtils.java: new class. Wrapper around most commonly used SwingUtilities calls. Add debugging bridge
+	property of icedtea-web.edt.debug set to true, can enable it on runtime.
+	* netx/net/sourceforge/swing/ThreadCheckingRepaintManager.java: Based on http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html
+	debugging repaint manager
+
+2018-10-01  Fridrich Strba  <fridrich.strba@suse.com>
+
+	Added eternal java version detection
+	* acinclude.m4: used sophisticated head-cut to determine single number major java version
+	* plugin/icedteanp/IcedTeaNPPlugin.cc: similar
+	* launcher/launchers.in: same
+
+2018-09-05  Jiri Vanek <jvanek@redhat.com>
+
+	* launcher/launchers.in: inverted logic to detect modular jdk.
+	If it is jdk8, then it is not modular JDK, otherwise it is.
+
+2018-08-13  Jiri Vanek <jvanek@redhat.com>
+
+	* LICENSE: new file. Added explicit license with details
+
+2018-06-20  Jiri Vanek <jvanek@redhat.com>
+
+	Enhanced itw-settngs' certificate viewer to show what file is backing showed certificate store.
+	* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: adapted to refactoring of KeyStores
+	* netx/net/sourceforge/jnlp/security/KeyStores.java: getKeyStore now returns wrapper with path alongside with ks itself
+	* netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java: adapted to refactoring of KeyStores
+	* netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: now shows read-only path to shown ks
+
+2018-06-20  Jiri Vanek <jvanek@redhat.com>
+
+	* netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java: fixed hex output of certificate signature 
+	for jdk8
+
+2018-06-20  Jiri Vanek <jvanek@redhat.com>
+
+	Added semi support for recognition jdk10 and up
+	* netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java: replaced hardcoded 9 by cycle from 9 to 99
+	* netx/net/sourceforge/jnlp/resources/Messages.properties: replaced jdk9 by jdk9 and up.
+
+2018-05-28  Jiri Vanek <jvanek@redhat.com>
+
+	added deployment property to enforce headfull execution
+	* netx/net/sourceforge/jnlp/config/Defaults.java: IGNORE_HEADLESS_CHECK set to false
+	* netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: deployment.headless.ignore
+	* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: if deployment.headless.ignore is true, then headless state is not checked
+	and environment is always considered as headfull
+
+2018-05-24  Jiri Vanek <jvanek@redhat.com>
+
+	Made headless detection softer
+	* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: JWindow().getOwner() repalced by GraphicsEnvironment.isHeadless()
+	JWindow().getOwner() was failing on headfull systems after headless check itself, on NPE.
+
+2018-05-14  Jiri Vanek <jvanek@redhat.com>
+
+	* netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java: getDocumentBase now returns codeBase as fallback when 
+	documentBase is null. Oracle Applications R12, Oracle Forms Java Webstart application is requesting getDocumentBase
+	where it shouldn't, however they refuse to modify their code and add ITW to supported platforms
+
+2018-02-06  Jiri Vanek <jvanek@redhat.com>
+
+	Added test for javafx-desc
+	* tests/reproducers/custom/JavaFx/resources/JavaFx.jar
+	* tests/reproducers/custom/JavaFx/resources/JavaFx.jnlp
+	* tests/reproducers/custom/JavaFx/srcs/Controller.class
+	* tests/reproducers/custom/JavaFx/srcs/Controller.java
+	* tests/reproducers/custom/JavaFx/srcs/Main.class
+	* tests/reproducers/custom/JavaFx/srcs/Main.java
+	* tests/reproducers/custom/JavaFx/srcs/Makefile
+	* tests/reproducers/custom/JavaFx/srcs/helloworld.fxml
+	* tests/reproducers/custom/JavaFx/testcases/JavaFxTest.java
+
+2018-02-05  Jiri Vanek <jvanek@redhat.com>
+
+	Added basic support for javafx desc
+	* netx/net/sourceforge/jnlp/ApplicationDesc.java: added flag fx to rember what was initiator
+	* netx/net/sourceforge/jnlp/Node.java: Added abstraction ElementName over string of element name to hold namespace
+	and separate it for name if present
+	* netx/net/sourceforge/jnlp/Parser.java: for javafx-desc ApplicationDesc is instantiated. Adapted to ElementName
+	* tests/netx/unit/net/sourceforge/jnlp/ParserCornerCases.java: ElementName
+	* tests/netx/unit/net/sourceforge/jnlp/ParserTest.java: ElementName
+
+2018-02-05  Jiri Vanek <jvanek@redhat.com>
+
+	Fixed news for latest changes
+	* NEWS: mentioned javafx-desc, -nosecurity enhancement and j2se/java resources
+
+2018-02-03  Jiri Vanek <jvanek@redhat.com>
+
+	Made ITW to load resources from j2se/java tag too
+	* netx/net/sourceforge/jnlp/Parser.java: constructors/methods made public to help unittests
+	* netx/net/sourceforge/jnlp/ShortcutDesc.java: same
+	* netx/net/sourceforge/jnlp/ResourcesDesc.java: getJars made to iterate recursively over content of j2se
+	* tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java: added testcase
+	* tests/netx/unit/net/sourceforge/jnlp/jarsInJreDesc.jnlp: testfile copied form omegat which have this strange resources
+
+2018-02-03  Jiri Vanek <jvanek@redhat.com>
+
+	nosecurity switch made extendable also for certificate issues
+	* netx/net/sourceforge/jnlp/config/Defaults.java: set deployment.security.itw.ignorecertissues
+	* netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: added deployment.security.itw.ignorecertissues
+	* netx/net/sourceforge/jnlp/resources/Messages.properties: BONosecurity is now tailed by rumor about deployment.security.itw.ignorecertissues
+	* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: when ITW was about to throw certificate-caused launch exception,
+	it i snow consulted with nosecurity and deployment.security.itw.ignorecertissues. If both are here, exception is only printed
+
+2018-02-03  Jiri Vanek <jvanek@redhat.com>
+
+	* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: autoformatted
+
+2018-02-03  Jiri Vanek <jvanek@redhat.com>
+	* netx/net/sourceforge/jnlp/Parser.java: auto-formatted
+
 2017-12-15  Jiri Vanek <jvanek@redhat.com>
 
 	Pre-release tuning
@@ -11,6 +227,12 @@
 	* NEWS: set date and added content for 1.7.1
 	* configure.ac: (AC_INIT) set to use 1.7.1
 
+2017-11-08 Alex Kashchenko <akashche@redhat.com>
+
+	Support creating cache files with restricted access on windows
+	* netx/net/sourceforge/jnlp/util/FileUtils.java: set proper ACLs for cache files and directories
+	* tests/netx/unit/net/sourceforge/jnlp/util/FileUtilsTest.java: added testCreateRestrictedFile test that checks ACLs for cache file
+
 2017-15-12  Jiri Vanek <jvanek@redhat.com>
             Tomáš Votava <tomcacolca@gmail.com>
 
diff -r dbb8dc397d15 -r 057fabf9fdcb LICENSE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LICENSE	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,8 @@
+***************************************
+** LGPLv2+ and GPLv2 with exceptions **
+***************************************
+
+
+Details:
+All newest files, unless claiming differently and all files inherited from  GNU Classpath (mostly base of plugin) are GPL+Exceptions
+NetX code is GPL and LGPL only.
diff -r dbb8dc397d15 -r 057fabf9fdcb Makefile.am
--- a/Makefile.am	Mon Dec 18 13:22:51 2017 +0100
+++ b/Makefile.am	Wed Nov 07 12:34:44 2018 +0100
@@ -204,6 +204,13 @@
 export COVERABLE_PLUGIN_DIR=$(TESTS_DIR)/icedteanp-build-with-jacoco
 endif
 
+if ENABLE_NATIVE_PLUGIN
+  CPPUNIT_IMPL = run-cpp-unit-tests-impl
+  CPPUNIT_CLEAN_IMPL = clean-cpp-unit-tests-impl
+else
+  CPPUNIT_IMPL = run-cpp-unit-tests-impl-placeholder
+  CPPUNIT_CLEAN_IMPL = clean-cpp-unit-tests-placeholder
+endif
 
 if CP_SUPPORTS_REFLINK
   REFLINK = --reflink=auto
@@ -573,12 +580,12 @@
 	  $(CPP_UNITTEST_FRAMEWORK_LIB)\
 	  $(BUILT_CPP_UNIT_TEST_FRAMEWORK) -o $@
 
-clean-cpp-unit-tests: 
+clean-cpp-unit-tests-impl: 
 	rm -f stamps/cpp-unit-tests-compile.stamp
 	rm -f $(CPP_UNITTEST_EXECUTABLE)
 	rm -f $(CPP_UNITTEST_DIR)/*.o
 
-run-cpp-unit-tests: $(CPP_UNITTEST_EXECUTABLE)
+run-cpp-unit-tests-impl: $(CPP_UNITTEST_EXECUTABLE)
 	$(CPP_UNITTEST_EXECUTABLE)
 
 # End of CPP Unit test targets
@@ -594,6 +601,17 @@
 	fi
 endif
 
+clean-cpp-unit-tests-placeholder:
+	echo "plugin disabled"
+
+run-cpp-unit-tests-impl-placeholder:
+	echo "plugin disabled"
+
+clean-cpp-unit-tests: $(CPPUNIT_CLEAN_IMPL)
+
+run-cpp-unit-tests: $(CPPUNIT_IMPL)
+
+
 stamps/plugin.stamp: $(ICEDTEAPLUGIN_TARGET)
 	mkdir -p stamps
 	touch stamps/plugin.stamp
diff -r dbb8dc397d15 -r 057fabf9fdcb NEWS
--- a/NEWS	Mon Dec 18 13:22:51 2017 +0100
+++ b/NEWS	Wed Nov 07 12:34:44 2018 +0100
@@ -7,6 +7,11 @@
 GX  - http://bugs.gentoo.org/show_bug.cgi?id=X
 
 CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
+
+New in release 1.7.2 (YYYY-MM-DD):
+* added support for javafx-desc and so allwong run of pure-javafx only applications
+* --nosecurity enhanced for possibility to skip invalid signatures
+* enhanced to allow resources to be read also from j2se/java element (OmegaT)
 
 New in release 1.7.1 (2017-12-15):
 * better work with authors file
diff -r dbb8dc397d15 -r 057fabf9fdcb README
--- a/README	Mon Dec 18 13:22:51 2017 +0100
+++ b/README	Wed Nov 07 12:34:44 2018 +0100
@@ -48,7 +48,7 @@
 
 IcedTea-Web contains a Free Software browser plugin based on NPRuntime
 called NPPlugin.  By default, this will be built, and it can be turned
-off using the -disable-plugin option.
+off using the --disable-native-plugin option.
 
 Building IcedTea-Web
 ====================
@@ -73,7 +73,7 @@
 Some distributions do not provide correct NPAPI headers so you can use those: 
 https://bitbucket.org/mgorny/npapi-sdk/downloads.
 
-The plugin can be disabled by passing --disable-plugin.
+The plugin can be disabled by passing --disable-native-plugin.
 
 The following optional dependencies enable additional features
 
@@ -120,7 +120,7 @@
 Other options may be supplied which enable or disable new features.
 These are documented fully in the relevant section below.
 
-* --disable-plugin: Don't build the browser plugin.
+* --disable-native-plugin: Don't build the browser plugin.
 * --with-rhino: Specify the location of rhino jar
 * --with-tagsoup: Specify the location of the tagsoup jar
 * --with-jacoco: Specify the location of the jacoco jar
diff -r dbb8dc397d15 -r 057fabf9fdcb acinclude.m4
--- a/acinclude.m4	Mon Dec 18 13:22:51 2017 +0100
+++ b/acinclude.m4	Wed Nov 07 12:34:44 2018 +0100
@@ -418,6 +418,8 @@
 dnl FIXME: use unstable
 AC_REQUIRE([IT_CHECK_NATIVE_PLUGIN])
 if test "x${enable_native_plugin}" = "xyes" ; then
+  AC_PROG_CC
+  AC_PROG_CXX
   PKG_CHECK_MODULES(GLIB, glib-2.0)
   AC_SUBST(GLIB_CFLAGS)
   AC_SUBST(GLIB_LIBS)
@@ -795,10 +797,16 @@
 [
   AC_REQUIRE([IT_FIND_JAVA])
   AC_MSG_CHECKING([JDK version])
-  JAVA_VERSION=`$JAVA -version 2>&1`
+  JAVA_VERSION=`$JAVA -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut -d'"' -f2 | cut -d'.' -f1`
+  if test "${JAVA_VERSION}" -eq "1"; then
+    JAVA_VERSION=`$JAVA -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut -d'"' -f2 | cut -d'.' -f2`
+  fi
   AC_MSG_RESULT($JAVA_VERSION)
-  HAVE_JAVA8=`if echo $JAVA_VERSION | grep -q -e 1.8.0 ; then echo yes ; fi`
-  HAVE_JAVA9=`if echo $JAVA_VERSION | grep -q -e 1.9.0 -e \"9 -e "build 9" ; then echo yes ; fi `
+  if test "${JAVA_VERSION}" -eq "8"; then
+    HAVE_JAVA8="yes"
+  elif test "$JAVA_VERSION" -ge "9"; then
+    HAVE_JAVA9="yes"
+  fi
   if test -z "$HAVE_JAVA8" -a -z "$HAVE_JAVA9"; then
     AC_MSG_ERROR([JDK8 or newer is required, detected was: $JAVA_VERSION])
   fi
diff -r dbb8dc397d15 -r 057fabf9fdcb configure.ac
--- a/configure.ac	Mon Dec 18 13:22:51 2017 +0100
+++ b/configure.ac	Wed Nov 07 12:34:44 2018 +0100
@@ -13,8 +13,6 @@
 AC_SUBST(abs_top_srcdir)
 
 AC_CANONICAL_HOST
-AC_PROG_CC
-AC_PROG_CXX
 IT_SET_ARCH_SETTINGS
 
 IT_CP_SUPPORTS_REFLINK
@@ -184,4 +182,18 @@
 AC_CONFIG_FILES([jrunscript], [chmod u+x jrunscript])
 AC_CONFIG_FILES([build.properties])
 
+# this is nasty hack to make GCC trully optional
+echo -n "destroying gcc config? ... "
+if test "x${enable_native_plugin}" = "xno" ; then
+am__fastdepCC_TRUE="#"
+am__fastdepCC_FALSE="#"
+am__fastdepCC="#"
+am__fastdepCXX_TRUE="#"
+am__fastdepCXX_FALSE="#"
+am__fastdepCXX="#"
+echo "destroyed!"
+else
+echo "no"
+fi 
+
 AC_OUTPUT
diff -r dbb8dc397d15 -r 057fabf9fdcb launcher/launchers.in
--- a/launcher/launchers.in	Mon Dec 18 13:22:51 2017 +0100
+++ b/launcher/launchers.in	Wed Nov 07 12:34:44 2018 +0100
@@ -37,9 +37,13 @@
   LAUNCHER_BOOTCLASSPATH="$LAUNCHER_BOOTCLASSPATH:@JRE@/$NASHORN"
 fi;
 
-JDK9="NO"
-if ${JAVA} -version 2>&1 | grep -q "version \"9-" ; then
-  JDK9="YES"
+MODULAR_JDK="NO"
+version=`${JAVA} -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut -d'"' -f2 | cut -d'.' -f1`
+if [ $version -eq "1" ]; then
+  version=`${JAVA} -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut -d'"' -f2 | cut -d'.' -f2`
+fi
+if [ $version -ge "9" ]; then
+  MODULAR_JDK="YES"
 fi
 
 JAVA_ARGS=( )
@@ -82,7 +86,7 @@
 COMMAND[k]="${LAUNCHER_FLAGS}"
 k=$((k+1))
 
-if [ "x$JDK9" == "xYES" ] ; then
+if [ "x$MODULAR_JDK" == "xYES" ] ; then
 COMMAND[k]="--patch-module"
 k=$((k+1))
 COMMAND[k]="java.desktop=@PLUGIN_JAR@:@NETX_JAR@"
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/ApplicationDesc.java
--- a/netx/net/sourceforge/jnlp/ApplicationDesc.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/ApplicationDesc.java	Wed Nov 07 12:34:44 2018 +0100
@@ -30,7 +30,8 @@
     private final String mainClass;
 
     /** the arguments */
-    private String arguments[];
+    private  String arguments[];
+    private final boolean fx;
 
     /**
      * Create an Application descriptor.
@@ -38,9 +39,10 @@
      * @param mainClass the main class name and package
      * @param arguments the arguments
      */
-    public ApplicationDesc(String mainClass, String arguments[]) {
+    public ApplicationDesc(String mainClass, String[] arguments, boolean isFX) {
         this.mainClass = mainClass;
         this.arguments = arguments;
+        this.fx = isFX;
     }
 
     /**
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/GuiLaunchHandler.java
--- a/netx/net/sourceforge/jnlp/GuiLaunchHandler.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/GuiLaunchHandler.java	Wed Nov 07 12:34:44 2018 +0100
@@ -37,10 +37,8 @@
 
 package net.sourceforge.jnlp;
 
-import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
-
-import javax.swing.SwingUtilities;
+import net.sourceforge.swing.SwingUtils;
 
 import net.sourceforge.jnlp.cache.ResourceTracker;
 import net.sourceforge.jnlp.cache.UpdatePolicy;
@@ -70,7 +68,7 @@
     @Override
     public void launchError(final LaunchException exception) {
         BasicExceptionDialog.willBeShown();
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 closeSplashScreen();
@@ -94,7 +92,7 @@
 
     @Override
     public void launchStarting(ApplicationInstance application) {
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 closeSplashScreen();
@@ -117,39 +115,17 @@
             resourceTracker.addResource(splashImageURL, file.getFileVersion(), null, policy);
         }
         synchronized (mutex) {
-            try {
-                SwingUtilities.invokeAndWait(new Runnable() {
+            SwingUtils.invokeAndWait(new Runnable() {
 
-                    @Override
-                    public void run() {
-                        splashScreen = new JNLPSplashScreen(resourceTracker, file);
-                    }
-                });
-            } catch (InterruptedException ie) {
-                // Wait till splash screen is created
-                while (splashScreen == null);
-            } catch (InvocationTargetException ite) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ite);
-            }
-            try {
-                SwingUtilities.invokeAndWait(new Runnable() {
-
-                    @Override
-                    public void run() {
-                        splashScreen.setSplashImageURL(splashImageURL);
-                    }
-                });
-            } catch (InterruptedException ie) {
-                // Wait till splash screen is created
-                while (!splashScreen.isSplashImageLoaded());
-            } catch (InvocationTargetException ite) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ite);
-            }
-
-
+                @Override
+                public void run() {
+                    splashScreen = new JNLPSplashScreen(resourceTracker, file);
+                    splashScreen.setSplashImageURL(splashImageURL);
+                }
+            });
         }
 
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
 
             @Override
             public void run() {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/JNLPSplashScreen.java
--- a/netx/net/sourceforge/jnlp/JNLPSplashScreen.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/JNLPSplashScreen.java	Wed Nov 07 12:34:44 2018 +0100
@@ -47,6 +47,7 @@
 import java.net.URL;
 import javax.imageio.ImageIO;
 import javax.swing.JDialog;
+import net.sourceforge.swing.SwingUtils;
 import net.sourceforge.jnlp.cache.ResourceTracker;
 import net.sourceforge.jnlp.splashscreen.SplashPanel;
 import net.sourceforge.jnlp.splashscreen.SplashUtils;
@@ -70,7 +71,9 @@
     private SplashPanel splash;
 
     public JNLPSplashScreen(ResourceTracker resourceTracker, final JNLPFile file) {
-
+        super();
+        this.setName("JNLPSplashScreen");
+        SwingUtils.info(this);
         setIconImages(ImageResources.INSTANCE.getApplicationImages());
 
         // If the JNLP file does not contain any icon images, the splash image
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/Launcher.java
--- a/netx/net/sourceforge/jnlp/Launcher.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/Launcher.java	Wed Nov 07 12:34:44 2018 +0100
@@ -40,11 +40,11 @@
 import net.sourceforge.jnlp.services.InstanceExistsException;
 import net.sourceforge.jnlp.services.ServiceUtil;
 
-import javax.swing.SwingUtilities;
 import javax.swing.text.html.parser.ParserDelegator;
 import net.sourceforge.jnlp.splashscreen.SplashUtils;
 import net.sourceforge.jnlp.util.StreamUtils;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import net.sourceforge.swing.SwingUtils;
 
 import sun.awt.SunToolkit;
 
@@ -549,12 +549,15 @@
                         R("LCantDetermineMainClassInfo")));
             }
 
+            OutputController.getLogger().log(OutputController.Level.ERROR_ALL, "Starting application [" + mainName + "] ...");
+            
             Class<?> mainClass = app.getClassLoader().loadClass(mainName);
 
             Method main = mainClass.getMethod("main", new Class<?>[] { String[].class });
             String args[] = file.getApplication().getArguments();
 
-            SwingUtilities.invokeAndWait(new Runnable() {
+            // create EDT within application context:
+            SwingUtils.callOnAppContext(new Runnable() {
                 // dummy method to force Event Dispatch Thread creation
                 @Override
                 public void run() {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/Node.java
--- a/netx/net/sourceforge/jnlp/Node.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/Node.java	Wed Nov 07 12:34:44 2018 +0100
@@ -40,6 +40,7 @@
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
+import java.util.Objects;
 
 import net.sourceforge.nanoxml.XMLElement;
 
@@ -52,7 +53,7 @@
  * regular XML Node interface (for the methods used by Parser).
  */
 /* NANO */
-class Node {
+public class Node {
     private XMLElement xml;
     private Node next;
     private Node children[];
@@ -124,18 +125,62 @@
         return (String) xml.getAttribute(name);
     }
 
-    String getNodeName() {
+    public ElementName getNodeName() {
         if (xml.getName() == null) {
-            return "";
+            return new ElementName("");
         }
         else {
-            return xml.getName();
+            return new ElementName(xml.getName());
         }
     }
 
+
     @Override
     public String toString() {
-        return getNodeName();
+        return getNodeName().getOriginal();
+    }
+
+    public static class ElementName {
+
+        private final String base;
+
+        public ElementName(String base) {
+            this.base = base;
+        }
+        
+        @Override
+        public boolean equals(Object obj) {
+            if (obj instanceof ElementName) {
+                return ((ElementName) obj).base.equals(base);
+            } else {
+                return false;
+            }
+        }
+
+        @Override
+        public int hashCode() {
+            return base.hashCode();
+        }
+
+        public String getName() {
+            if (base.contains(":")) {
+                return base.split(":")[1];
+            } else {
+                return base;
+            }
+        }
+        public String getPrefix() {
+            if (base.contains(":")) {
+                return base.split(":")[0];
+            } else {
+                return "";
+            }
+        }
+
+        private String getOriginal() {
+            return base + "(" + getPrefix() + ":" + getName() + ")";
+        }
+
     }
 }
 
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/Parser.java
--- a/netx/net/sourceforge/jnlp/Parser.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/Parser.java	Wed Nov 07 12:34:44 2018 +0100
@@ -14,7 +14,6 @@
 // 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.
-
 package net.sourceforge.jnlp;
 
 import static net.sourceforge.jnlp.runtime.Translator.R;
@@ -33,26 +32,25 @@
 import net.sourceforge.jnlp.util.logging.OutputController;
 
 /**
- * Contains methods to parse an XML document into a JNLPFile.
- * Implements JNLP specification version 1.0.
+ * Contains methods to parse an XML document into a JNLPFile. Implements JNLP
+ * specification version 1.0.
  *
- * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
+ * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell
+ * (JAM)</a> - initial author
  * @version $Revision: 1.13 $
  */
 public final class Parser {
-    
+
     private static String CODEBASE = "codebase";
     private static String MAINCLASS = "main-class";
     private static final Pattern anyWhiteSpace = Pattern.compile("\\s");
 
     // defines netx.jnlp.Node class if using Tiny XML or Nano XML
-
     // Currently uses the Nano XML parse.  Search for "SAX" or
     // "TINY" or "NANO" and uncomment those blocks and comment the
     // active ones (if any) to switch XML parsers.  Also
     // (un)comment appropriate Node class at end of this file and
     // do a clean build.
-
     /**
      * Ensure consistent error handling.
      */
@@ -69,80 +67,96 @@
             OutputController.getLogger().log(OutputController.Level.ERROR_ALL, exception);
         }
     };
-    */
-
+     */
     // fix: some descriptors need to use the jnlp file at a later
     // date and having file ref lets us pass it to their
     // constructors
     //
-    /** the file reference */
+    /**
+     * the file reference
+     */
     private final JNLPFile file; // do not use (uninitialized)
 
-    /** the root node */
+    /**
+     * the root node
+     */
     private final Node root;
 
-    /** the specification version */
+    /**
+     * the specification version
+     */
     private final Version spec;
 
-    /** the base URL that all hrefs are relative to */
+    /**
+     * the base URL that all hrefs are relative to
+     */
     private final URL base;
 
-    /** the codebase URL */
+    /**
+     * the codebase URL
+     */
     private URL codebase;
 
-    /** the file URL */
+    /**
+     * the file URL
+     */
     private final URL fileLocation;
 
-    /** whether to throw errors on non-fatal errors. */
+    /**
+     * whether to throw errors on non-fatal errors.
+     */
     private final boolean strict; // if strict==true parses a file with no error then strict==false should also
 
-    /** whether to allow extensions to the JNLP specification */
+    /**
+     * whether to allow extensions to the JNLP specification
+     */
     private final boolean allowExtensions; // true if extensions to JNLP spec are ok
-    
+
     /**
-     * Create a parser for the JNLP file. If the location
-     * parameters is not null it is used as the default codebase
-     * (does not override value of jnlp element's href
-     * attribute).
+     * Create a parser for the JNLP file. If the location parameters is not null
+     * it is used as the default codebase (does not override value of jnlp
+     * element's href attribute).
      * <p>
-     * The root node may be normalized as a side effect of this
-     * constructor.
+     * The root node may be normalized as a side effect of this constructor.
      * </p>
+     *
      * @param file the (uninitialized) file reference
-     * @param base if codebase is not specified, a default base for relative URLs
+     * @param base if codebase is not specified, a default base for relative
+     * URLs
      * @param root the root node
      * @param settings the parser settings to use when parsing the JNLP file
      * @throws ParseException if the JNLP file is invalid
      */
-    Parser(JNLPFile file, URL base, Node root, ParserSettings settings) throws ParseException {
-	this(file, base, root, settings, null);
+    public Parser(JNLPFile file, URL base, Node root, ParserSettings settings) throws ParseException {
+        this(file, base, root, settings, null);
     }
 
     /**
-     * Create a parser for the JNLP file. If the location
-     * parameters is not null it is used as the default codebase
-     * (does not override value of jnlp element's href
-     * attribute).
+     * Create a parser for the JNLP file. If the location parameters is not null
+     * it is used as the default codebase (does not override value of jnlp
+     * element's href attribute).
      * <p>
-     * The root node may be normalized as a side effect of this
-     * constructor.
+     * The root node may be normalized as a side effect of this constructor.
      * </p>
+     *
      * @param file the (uninitialized) file reference
-     * @param base if codebase is not specified, a default base for relative URLs
+     * @param base if codebase is not specified, a default base for relative
+     * URLs
      * @param root the root node
      * @param settings the parser settings to use when parsing the JNLP file
      * @param codebase codebase to use if we did not parse one from JNLP file.
      * @throws ParseException if the JNLP file is invalid
      */
-    Parser(JNLPFile file, URL base, Node root, ParserSettings settings, URL codebase) throws ParseException {
+    public Parser(JNLPFile file, URL base, Node root, ParserSettings settings, URL codebase) throws ParseException {
         this.file = file;
         this.root = root;
         this.strict = settings.isStrict();
         this.allowExtensions = settings.isExtensionAllowed();
 
         // ensure it's a JNLP node
-        if (root == null || !root.getNodeName().equals("jnlp"))
+        if (root == null || !root.getNodeName().getName().equals("jnlp")) {
             throw new ParseException(R("PInvalidRoot"));
+        }
 
         // JNLP tag information
         this.spec = getVersion(root, "spec", "1.0+");
@@ -154,7 +168,9 @@
         }
 
         if (this.codebase == null) // Codebase is overwritten if codebase was not specified in file or if parsing of it failed
+        {
             this.codebase = codebase;
+        }
 
         this.base = (this.codebase != null) ? this.codebase : base; // if codebase not specified use default codebase
         fileLocation = getURL(root, "href", this.base);
@@ -165,6 +181,7 @@
 
     /**
      * Returns the file version.
+     *
      * @return version of file
      */
     public Version getFileVersion() {
@@ -173,6 +190,7 @@
 
     /**
      * Returns the file location.
+     *
      * @return url of source file
      */
     public URL getFileLocation() {
@@ -188,7 +206,7 @@
 
     /**
      * @return the specification version.
-     *  
+     *
      */
     public Version getSpecVersion() {
         return spec;
@@ -198,7 +216,7 @@
         UpdateDesc updateDesc = null;
         Node child = parent.getFirstChild();
         while (child != null) {
-            if (child.getNodeName().equals("update")) {
+            if (child.getNodeName().getName().equals("update")) {
                 if (strict && updateDesc != null) {
                     throw new ParseException(R("PTwoUpdates"));
                 }
@@ -254,16 +272,15 @@
     //
     // This section loads the resources elements
     //
-
     /**
-     * @return all of the ResourcesDesc elements under the specified
-     * node (jnlp or j2se).
+     * @return all of the ResourcesDesc elements under the specified node (jnlp
+     * or j2se).
      *
      * @param parent the parent node (either jnlp or j2se)
      * @param j2se true if the resources are located under a j2se or java node
      * @throws ParseException if the JNLP file is invalid
      */
-    List<ResourcesDesc> getResources(Node parent, boolean j2se)
+    public List<ResourcesDesc> getResources(Node parent, boolean j2se)
             throws ParseException {
         List<ResourcesDesc> result = new ArrayList<>();
         Node resources[] = getChildNodes(parent, "resources");
@@ -285,34 +302,39 @@
      * @param j2se true if the resources are located under a j2se or java node
      * @throws ParseException if the JNLP file is invalid
      */
-    private  ResourcesDesc getResourcesDesc(Node node, boolean j2se) throws ParseException {
+    private ResourcesDesc getResourcesDesc(Node node, boolean j2se) throws ParseException {
         boolean mainFlag = false; // if found a main tag
 
         // create resources
-        ResourcesDesc resources =
-                new ResourcesDesc(file,
-                              getLocales(node),
-                              splitString(getAttribute(node, "os", null)),
-                              splitString(getAttribute(node, "arch", null)));
+        ResourcesDesc resources
+                = new ResourcesDesc(file,
+                        getLocales(node),
+                        splitString(getAttribute(node, "os", null)),
+                        splitString(getAttribute(node, "arch", null)));
 
         // step through the elements
         Node child = node.getFirstChild();
         while (child != null) {
-            String name = child.getNodeName();
+            String name = child.getNodeName().getName();
 
             // check for nativelib but no trusted environment
-            if ("nativelib".equals(name))
-                if (!isTrustedEnvironment())
+            if ("nativelib".equals(name)) {
+                if (!isTrustedEnvironment()) {
                     throw new ParseException(R("PUntrustedNative"));
+                }
+            }
 
             if ("j2se".equals(name) || "java".equals(name)) {
-                if (getChildNode(root, "component-desc") != null)
-                    if (strict)
+                if (getChildNode(root, "component-desc") != null) {
+                    if (strict) {
                         throw new ParseException(R("PExtensionHasJ2SE"));
-                if (!j2se)
+                    }
+                }
+                if (!j2se) {
                     resources.addResource(getJRE(child));
-                else
+                } else {
                     throw new ParseException(R("PInnerJ2SE"));
+                }
             }
 
             if ("jar".equals(name) || "nativelib".equals(name)) {
@@ -331,14 +353,17 @@
                 resources.addResource(jar);
             }
 
-            if ("extension".equals(name))
+            if ("extension".equals(name)) {
                 resources.addResource(getExtension(child));
+            }
 
-            if ("property".equals(name))
+            if ("property".equals(name)) {
                 resources.addResource(getProperty(child));
+            }
 
-            if ("package".equals(name))
+            if ("package".equals(name)) {
                 resources.addResource(getPackage(child));
+            }
 
             child = child.getNextSibling();
         }
@@ -378,16 +403,18 @@
      * @throws ParseException if the JNLP file is invalid
      */
     private JARDesc getJAR(Node node) throws ParseException {
-        boolean nativeJar = "nativelib".equals(node.getNodeName());
+        boolean nativeJar = "nativelib".equals(node.getNodeName().getName());
         URL location = getRequiredURL(node, "href", base);
         Version version = getVersion(node, "version", null);
         String part = getAttribute(node, "part", null);
         boolean main = "true".equals(getAttribute(node, "main", "false"));
         boolean lazy = "lazy".equals(getAttribute(node, "download", "eager"));
 
-        if (nativeJar && main)
-            if (strict)
+        if (nativeJar && main) {
+            if (strict) {
                 throw new ParseException(R("PNativeHasMain"));
+            }
+        }
 
         return new JARDesc(location, version, part, lazy, main, nativeJar, true);
 
@@ -445,14 +472,15 @@
     //
     // This section loads the information elements
     //
-
     /**
      * Make sure a title and vendor are present and nonempty and localized as
      * best matching as possible for the JVM's current locale. Fallback to a
-     * generalized title and vendor otherwise. If none is found, throw an exception.
+     * generalized title and vendor otherwise. If none is found, throw an
+     * exception.
      *
-     * Additionally prints homepage, description, title and vendor to stdout
-     * if in Debug mode.
+     * Additionally prints homepage, description, title and vendor to stdout if
+     * in Debug mode.
+     *
      * @throws RequiredElementException
      */
     void checkForInformation() throws RequiredElementException {
@@ -462,30 +490,34 @@
         String title = file.getTitle();
         String vendor = file.getVendor();
 
-        if (title == null || title.trim().isEmpty())
+        if (title == null || title.trim().isEmpty()) {
             throw new MissingTitleException();
-        else OutputController.getLogger().log("Acceptable title tag found, contains: " + title);
+        } else {
+            OutputController.getLogger().log("Acceptable title tag found, contains: " + title);
+        }
 
-        if (vendor == null || vendor.trim().isEmpty())
+        if (vendor == null || vendor.trim().isEmpty()) {
             throw new MissingVendorException();
-        else OutputController.getLogger().log("Acceptable vendor tag found, contains: " + vendor);
+        } else {
+            OutputController.getLogger().log("Acceptable vendor tag found, contains: " + vendor);
+        }
     }
 
     /**
-     * @return all of the information elements under the specified
-     * node.
+     * @return all of the information elements under the specified node.
      *
      * @param parent the parent node (jnlp)
      * @throws ParseException if the JNLP file is invalid
      */
-    List<InformationDesc> getInfo(Node parent)
+    public List<InformationDesc> getInfo(Node parent)
             throws ParseException {
         List<InformationDesc> result = new ArrayList<>();
         Node info[] = getChildNodes(parent, "information");
 
         // ensure that there are at least one information section present
-        if (info.length == 0)
+        if (info.length == 0) {
             throw new MissingInformationException();
+        }
 
         // create objects from the info sections
         for (Node infoNode : info) {
@@ -501,7 +533,7 @@
      * @param node the information node
      * @throws ParseException if the JNLP file is invalid
      */
-     InformationDesc getInformationDesc(Node node) throws ParseException {
+    InformationDesc getInformationDesc(Node node) throws ParseException {
         List<String> descriptionsUsed = new ArrayList<>();
 
         // locale
@@ -513,30 +545,38 @@
         // step through the elements
         Node child = node.getFirstChild();
         while (child != null) {
-            String name = child.getNodeName();
+            String name = child.getNodeName().getName();
 
-            if ("title".equals(name))
+            if ("title".equals(name)) {
                 addInfo(info, child, null, getSpanText(child, false));
-            if ("vendor".equals(name))
+            }
+            if ("vendor".equals(name)) {
                 addInfo(info, child, null, getSpanText(child, false));
+            }
             if ("description".equals(name)) {
                 String kind = getAttribute(child, "kind", "default");
-                if (descriptionsUsed.contains(kind))
-                    if (strict)
+                if (descriptionsUsed.contains(kind)) {
+                    if (strict) {
                         throw new ParseException(R("PTwoDescriptions", kind));
+                    }
+                }
 
                 descriptionsUsed.add(kind);
                 addInfo(info, child, kind, getSpanText(child, false));
             }
-            if ("homepage".equals(name))
+            if ("homepage".equals(name)) {
                 addInfo(info, child, null, getRequiredURL(child, "href", base));
-            if ("icon".equals(name))
+            }
+            if ("icon".equals(name)) {
                 addInfo(info, child, getAttribute(child, "kind", "default"), getIcon(child));
-            if ("offline-allowed".equals(name))
+            }
+            if ("offline-allowed".equals(name)) {
                 addInfo(info, child, null, Boolean.TRUE);
+            }
             if ("sharing-allowed".equals(name)) {
-                if (strict && !allowExtensions)
+                if (strict && !allowExtensions) {
                     throw new ParseException(R("PSharing"));
+                }
                 addInfo(info, child, null, Boolean.TRUE);
             }
             if ("association".equals(name)) {
@@ -566,10 +606,11 @@
     protected void addInfo(InformationDesc info, Node node, String mod, Object value) {
         String modStr = (mod == null) ? "" : "-" + mod;
 
-        if (node == null)
+        if (node == null) {
             return;
+        }
 
-        info.addItem(node.getNodeName() + modStr, value);
+        info.addItem(node.getNodeName().getName() + modStr, value);
     }
 
     /**
@@ -592,22 +633,23 @@
     //
     // This section loads the security descriptor element
     //
-
     /**
-     * @return the security descriptor element.  If no security
-     * element was specified in the JNLP file then a SecurityDesc
-     * with applet permissions is returned.
+     * @return the security descriptor element. If no security element was
+     * specified in the JNLP file then a SecurityDesc with applet permissions is
+     * returned.
      *
      * @param parent the parent node
      * @throws ParseException if the JNLP file is invalid
      */
-    SecurityDesc getSecurity(Node parent) throws ParseException {
+    public SecurityDesc getSecurity(Node parent) throws ParseException {
         Node nodes[] = getChildNodes(parent, "security");
 
         // test for too many security elements
-        if (nodes.length > 1)
-            if (strict)
+        if (nodes.length > 1) {
+            if (strict) {
                 throw new ParseException(R("PTwoSecurity"));
+            }
+        }
 
         Object type = SecurityDesc.SANDBOX_PERMISSIONS;
         RequestedPermissionLevel requestedPermissionLevel = RequestedPermissionLevel.NONE;
@@ -633,16 +675,17 @@
     }
 
     /**
-     * Returns whether the JNLP file requests a trusted execution
-     * environment.
+     * Returns whether the JNLP file requests a trusted execution environment.
      */
     private boolean isTrustedEnvironment() {
         Node security = getChildNode(root, "security");
 
-        if (security != null)
+        if (security != null) {
             if (getChildNode(security, "all-permissions") != null
-                    || getChildNode(security, "j2ee-application-client-permissions") != null)
+                    || getChildNode(security, "j2ee-application-client-permissions") != null) {
                 return true;
+            }
+        }
 
         return false;
     }
@@ -650,7 +693,6 @@
     //
     // This section loads the launch descriptor element
     //
-
     /**
      * @return the launch descriptor element, either AppletDesc,
      * ApplicationDesc, or InstallerDesc.
@@ -658,23 +700,31 @@
      * @param parent the parent node
      * @throws ParseException if the JNLP file is invalid
      */
-    LaunchDesc getLauncher(Node parent) throws ParseException {
+    public LaunchDesc getLauncher(Node parent) throws ParseException {
         // check for other than one application type
         if (1 < getChildNodes(parent, "applet-desc").length
                 + getChildNodes(parent, "application-desc").length
-                + getChildNodes(parent, "installer-desc").length)
+                + getChildNodes(parent, "javafx-desc").length
+                + getChildNodes(parent, "installer-desc").length) {
             throw new ParseException(R("PTwoDescriptors"));
+        }
 
         Node child = parent.getFirstChild();
         while (child != null) {
-            String name = child.getNodeName();
+            String name = child.getNodeName().getName();
 
-            if ("applet-desc".equals(name))
+            if ("applet-desc".equals(name)) {
                 return getApplet(child);
-            if ("application-desc".equals(name))
-                return getApplication(child);
-            if ("installer-desc".equals(name))
+            }
+            if ("application-desc".equals(name)) {
+                return getApplication(child, false);
+            }
+            if ("installer-desc".equals(name)) {
                 return getInstaller(child);
+            }
+            if ("javafx-desc".equals(name)) {
+                return getApplication(child, true);
+            }
 
             child = child.getNextSibling();
         }
@@ -682,6 +732,8 @@
         // not reached
         return null;
     }
+    
+    
 
     /**
      * @param node
@@ -701,8 +753,9 @@
             width = Integer.parseInt(getRequiredAttribute(node, "width", "100"));
             height = Integer.parseInt(getRequiredAttribute(node, "height", "100"));
         } catch (NumberFormatException nfe) {
-            if (width <= 0)
+            if (width <= 0) {
                 throw new ParseException(R("PBadWidth"));
+            }
             throw new ParseException(R("PBadWidth"));
         }
 
@@ -721,13 +774,12 @@
      * @param node
      * @throws ParseException if the JNLP file is invalid
      */
-    private ApplicationDesc getApplication(Node node) throws ParseException {
+    private ApplicationDesc getApplication(Node node, boolean isFx) throws ParseException {
         String main = getMainClass(node, false);
         List<String> argsList = new ArrayList<>();
 
         // if (main == null)
         //   only ok if can be found in main jar file (can't check here but make a note)
-
         // read parameters
         Node args[] = getChildNodes(node, "argument");
         for (Node arg : args) {
@@ -738,7 +790,7 @@
 
         String argStrings[] = argsList.toArray(new String[argsList.size()]);
 
-        return new ApplicationDesc(main, argStrings);
+        return new ApplicationDesc(main, argStrings, isFx);
     }
 
     /**
@@ -754,10 +806,11 @@
 
         Node child = parent.getFirstChild();
         while (child != null) {
-            String name = child.getNodeName();
+            String name = child.getNodeName().getName();
 
-            if ("component-desc".equals(name))
+            if ("component-desc".equals(name)) {
                 return new ComponentDesc();
+            }
 
             child = child.getNextSibling();
         }
@@ -801,19 +854,23 @@
         // step through the elements
         Node child = node.getFirstChild();
         while (child != null) {
-            String name = child.getNodeName();
+            String name = child.getNodeName().getName();
 
-            if (null != name) switch (name) {
-                case "desktop":
-                    if (showOnDesktop && strict) {
-                        throw new ParseException(R("PTwoDesktops"));
-                    }   showOnDesktop = true;
-                    break;
-                case "menu":
-                    if (menu != null && strict) {
-                        throw new ParseException(R("PTwoMenus"));
-                    }   menu = getMenu(child);
-                    break;
+            if (null != name) {
+                switch (name) {
+                    case "desktop":
+                        if (showOnDesktop && strict) {
+                            throw new ParseException(R("PTwoDesktops"));
+                        }
+                        showOnDesktop = true;
+                        break;
+                    case "menu":
+                        if (menu != null && strict) {
+                            throw new ParseException(R("PTwoMenus"));
+                        }
+                        menu = getMenu(child);
+                        break;
+                }
             }
 
             child = child.getNextSibling();
@@ -850,24 +907,29 @@
         // step through the elements
         Node child = node.getFirstChild();
         while (child != null) {
-            String name = child.getNodeName();
+            String name = child.getNodeName().getName();
 
-            if (null != name) switch (name) {
-                case "title":
-                    if (title != null && strict) {
-                        throw new ParseException(R("PTwoTitles"));
-                    }   title = getSpanText(child, false);
-                    break;
-                case "description":
-                    if (description != null && strict) {
-                        throw new ParseException(R("PTwoDescriptions"));
-                    }   description = getSpanText(child, false);
-                    break;
-                case "icon":
-                    if (icon != null && strict) {
-                        throw new ParseException(R("PTwoIcons"));
-                    }   icon = getIcon(child);
-                    break;
+            if (null != name) {
+                switch (name) {
+                    case "title":
+                        if (title != null && strict) {
+                            throw new ParseException(R("PTwoTitles"));
+                        }
+                        title = getSpanText(child, false);
+                        break;
+                    case "description":
+                        if (description != null && strict) {
+                            throw new ParseException(R("PTwoDescriptions"));
+                        }
+                        description = getSpanText(child, false);
+                        break;
+                    case "icon":
+                        if (icon != null && strict) {
+                            throw new ParseException(R("PTwoIcons"));
+                        }
+                        icon = getIcon(child);
+                        break;
+                }
             }
 
             child = child.getNextSibling();
@@ -883,16 +945,16 @@
     }
 
     // other methods
-
     /**
-     * @return an array of substrings seperated by spaces (spaces
-     * escaped with backslash do not separate strings).  This method
-     * splits strings as per the spec except that it does replace
-     * escaped other characters with their own value.
+     * @return an array of substrings seperated by spaces (spaces escaped with
+     * backslash do not separate strings). This method splits strings as per the
+     * spec except that it does replace escaped other characters with their own
+     * value.
      */
     private String[] splitString(String source) {
-        if (source == null)
+        if (source == null) {
             return new String[0];
+        }
 
         List<String> result = new ArrayList<String>();
         StringTokenizer st = new StringTokenizer(source, " ");
@@ -904,18 +966,20 @@
             while (true) {
                 part.append(st.nextToken());
 
-                if (st.hasMoreTokens() && part.charAt(part.length() - 1) == '\\')
+                if (st.hasMoreTokens() && part.charAt(part.length() - 1) == '\\') {
                     part.setCharAt(part.length() - 1, ' '); // join with the space
-                else
+                } else {
                     break; // bizarre while format gets \ at end of string right (no extra space added at end)
+                }
             }
 
             // delete \ quote chars
-            for (int i = part.length(); i-- > 0;)
-                // sweet syntax for reverse loop
-                if (part.charAt(i) == '\\')
+            for (int i = part.length(); i-- > 0;) // sweet syntax for reverse loop
+            {
+                if (part.charAt(i) == '\\') {
                     part.deleteCharAt(i--); // and skip previous char so \\ becomes \
-
+                }
+            }
             result.add(part.toString());
         }
 
@@ -929,13 +993,14 @@
      */
     private Locale[] getLocales(Node node) {
         List<Locale> locales = new ArrayList<>();
-        String localeParts[] =
-                splitString(getAttribute(node, "locale", ""));
+        String localeParts[]
+                = splitString(getAttribute(node, "locale", ""));
 
         for (String localePart : localeParts) {
             Locale l = getLocale(localePart);
-            if (l != null)
+            if (l != null) {
                 locales.add(l);
+            }
         }
 
         return locales.toArray(new Locale[locales.size()]);
@@ -948,8 +1013,9 @@
      * @return locale of document
      */
     public Locale getLocale(String localeStr) {
-        if (localeStr.length() < 2)
+        if (localeStr.length() < 2) {
             return null;
+        }
 
         String language = localeStr.substring(0, 2);
         String country = (localeStr.length() < 5) ? "" : localeStr.substring(3, 5);
@@ -965,7 +1031,7 @@
      * "&lt;description&gt;text&lt;/description&gt;".
      *
      * @param node the node with text under it
-     * @return 
+     * @return
      * @throws ParseException if the JNLP file is invalid
      */
     private String getSpanText(Node node) throws ParseException {
@@ -974,9 +1040,9 @@
 
     /**
      * Returns the implied text under a node, for example "text" in
-     * "&lt;description&gt;text&lt;/description&gt;". If preserveSpacing is false,
-     * sequences of whitespace characters are turned into a single
-     * space character.
+     * "&lt;description&gt;text&lt;/description&gt;". If preserveSpacing is
+     * false, sequences of whitespace characters are turned into a single space
+     * character.
      *
      * @param node the node with text under it
      * @param preserveSpacing if true, preserve whitespace
@@ -984,19 +1050,18 @@
      */
     private String getSpanText(Node node, boolean preserveSpacing)
             throws ParseException {
-        if (node == null)
+        if (node == null) {
             return null;
+        }
 
         // NANO
         String val = node.getNodeValue();
         if (preserveSpacing) {
             return val;
+        } else if (val == null) {
+            return null;
         } else {
-            if (val == null) {
-                return null;
-            } else {
-                return val.replaceAll("\\s+", " ");
-            }
+            return val.replaceAll("\\s+", " ");
         }
 
         /* TINY
@@ -1005,13 +1070,13 @@
         if (child == null) {
             if (strict)
                 // not sure if this is an error or whether "" is proper
-                throw new ParseException("No text specified (node="+node.getNodeName()+")");
+                throw new ParseException("No text specified (node="+node.getNodeName().getName()+")");
             else
                 return "";
         }
 
         return child.getNodeValue();
-        */
+         */
     }
 
     /**
@@ -1019,10 +1084,11 @@
      */
     private static Node getChildNode(Node node, String name) {
         Node[] result = getChildNodes(node, name);
-        if (result.length == 0)
+        if (result.length == 0) {
             return null;
-        else
+        } else {
             return result[0];
+        }
     }
 
     /**
@@ -1033,8 +1099,9 @@
 
         Node child = node.getFirstChild();
         while (child != null) {
-            if (child.getNodeName().equals(name))
+            if (child.getNodeName().getName().equals(name)) {
                 result.add(child);
+            }
             child = child.getNextSibling();
         }
 
@@ -1042,12 +1109,13 @@
     }
 
     /**
-     * Returns a URL with a trailing / appended to it if there is no
-     * trailing slash on the specifed URL.
+     * Returns a URL with a trailing / appended to it if there is no trailing
+     * slash on the specifed URL.
      */
     private URL addSlash(URL source) {
-        if (source == null)
+        if (source == null) {
             return null;
+        }
 
         if (!source.toString().endsWith("/")) {
             try {
@@ -1060,8 +1128,8 @@
     }
 
     /**
-     * @return the same result as getURL except that a
-     * ParseException is thrown if the attribute is null or empty.
+     * @return the same result as getURL except that a ParseException is thrown
+     * if the attribute is null or empty.
      *
      * @param node the node
      * @param name the attribute containing an href
@@ -1077,17 +1145,16 @@
     }
 
     /**
-     * @return a URL object from a href string relative to the
-     * code base. If the href denotes a relative URL, it must
-     * reference a location that is a subdirectory of the
-     * codebase.
+     * @return a URL object from a href string relative to the code base. If the
+     * href denotes a relative URL, it must reference a location that is a
+     * subdirectory of the codebase.
      *
      * @param node the node
      * @param name the attribute containing an href
      * @param base the base URL
      * @throws ParseException if the JNLP file is invalid
      */
-    URL getURL(Node node, String name, URL base) throws ParseException {
+    public URL getURL(Node node, String name, URL base) throws ParseException {
         String href;
         if (CODEBASE.equals(name)) {
             href = getCleanAttribute(node, name);
@@ -1099,17 +1166,17 @@
         } else {
             href = getAttribute(node, name, null);
         }
-        return getURL(href, node.getNodeName(), base, strict);
+        return getURL(href, node.getNodeName().getName(), base, strict);
     }
-    
+
     public static URL getURL(String href, String nodeName, URL base, boolean strict) throws ParseException {
-         if (href == null) {
+        if (href == null) {
             return null; // so that code can throw an exception if attribute was required
         }
         try {
-            if (base == null)
+            if (base == null) {
                 return new URL(href);
-            else {
+            } else {
                 try {
                     return new URL(href);
                 } catch (MalformedURLException ex) {
@@ -1119,7 +1186,7 @@
                 URL result = new URL(base, href);
 
                 // check for going above the codebase
-                if (!result.toString().startsWith(base.toString()) &&  !base.toString().startsWith(result.toString())){
+                if (!result.toString().startsWith(base.toString()) && !base.toString().startsWith(result.toString())) {
                     if (strict) {
                         throw new ParseException(R("PUrlNotInCodebase", nodeName, href, base));
                     }
@@ -1128,16 +1195,16 @@
             }
 
         } catch (MalformedURLException ex) {
-            if (base == null)
+            if (base == null) {
                 throw new ParseException(R("PBadNonrelativeUrl", nodeName, href));
-            else
+            } else {
                 throw new ParseException(R("PBadRelativeUrl", nodeName, href, base));
+            }
         }
     }
 
     /**
-     * @return a Version from the specified attribute and default
-     * value.
+     * @return a Version from the specified attribute and default value.
      *
      * @param node the node
      * @param name the attribute
@@ -1146,14 +1213,16 @@
      */
     private Version getVersion(Node node, String name, String defaultValue) {
         String version = getAttribute(node, name, defaultValue);
-        if (version == null)
+        if (version == null) {
             return null;
-        else
+        } else {
             return new Version(version);
+        }
     }
 
     /**
      * Check that the VM args are valid and safe
+     *
      * @param vmArgs a string containing the args
      * @throws ParseException if the VM arguments are invalid or dangerous
      */
@@ -1191,76 +1260,75 @@
     /**
      * Returns an array of valid (ie safe and supported) arguments for the JVM
      *
-     * Based on http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html
+     * Based on
+     * http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html
      */
     private String[] getValidVMArguments() {
-        return new String[] {
-                "-d32", /* use a 32-bit data model if available */
-                "-client", /* to select the client VM */
-                "-server", /* to select the server VM */
-                "-verbose", /* enable verbose output */
-                "-version", /* print product version and exit */
-                "-showversion", /* print product version and continue */
-                "-help", /* print this help message */
-                "-X", /* print help on non-standard options */
-                "-ea", /* enable assertions */
-                "-enableassertions", /* enable assertions */
-                "-da", /* disable assertions */
-                "-disableassertions", /* disable assertions */
-                "-esa", /* enable system assertions */
-                "-enablesystemassertions", /* enable system assertions */
-                "-dsa", /* disable system assertione */
-                "-disablesystemassertions", /* disable system assertione */
-                "-Xmixed", /* mixed mode execution (default) */
-                "-Xint", /* interpreted mode execution only */
-                "-Xnoclassgc", /* disable class garbage collection */
-                "-Xincgc", /* enable incremental garbage collection */
-                "-Xbatch", /* disable background compilation */
-                "-Xprof", /* output cpu profiling data */
-                "-Xdebug", /* enable remote debugging */
-                "-Xfuture", /* enable strictest checks, anticipating future default */
-                "-Xrs", /* reduce use of OS signals by Java/VM (see documentation) */
-                "-XX:+ForceTimeHighResolution", /* use high resolution timer */
-                "-XX:-ForceTimeHighResolution", /* use low resolution (default) */
-        };
+        return new String[]{
+            "-d32", /* use a 32-bit data model if available */
+            "-client", /* to select the client VM */
+            "-server", /* to select the server VM */
+            "-verbose", /* enable verbose output */
+            "-version", /* print product version and exit */
+            "-showversion", /* print product version and continue */
+            "-help", /* print this help message */
+            "-X", /* print help on non-standard options */
+            "-ea", /* enable assertions */
+            "-enableassertions", /* enable assertions */
+            "-da", /* disable assertions */
+            "-disableassertions", /* disable assertions */
+            "-esa", /* enable system assertions */
+            "-enablesystemassertions", /* enable system assertions */
+            "-dsa", /* disable system assertione */
+            "-disablesystemassertions", /* disable system assertione */
+            "-Xmixed", /* mixed mode execution (default) */
+            "-Xint", /* interpreted mode execution only */
+            "-Xnoclassgc", /* disable class garbage collection */
+            "-Xincgc", /* enable incremental garbage collection */
+            "-Xbatch", /* disable background compilation */
+            "-Xprof", /* output cpu profiling data */
+            "-Xdebug", /* enable remote debugging */
+            "-Xfuture", /* enable strictest checks, anticipating future default */
+            "-Xrs", /* reduce use of OS signals by Java/VM (see documentation) */
+            "-XX:+ForceTimeHighResolution", /* use high resolution timer */
+            "-XX:-ForceTimeHighResolution", /* use low resolution (default) */};
     }
 
     /**
      * Returns an array containing the starts of valid (ie safe and supported)
      * arguments for the JVM
      *
-     * Based on http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html
+     * Based on
+     * http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html
      */
     private String[] getValidStartingVMArguments() {
-        return new String[] {
-                "-ea", /* enable assertions for classes */
-                "-enableassertions", /* enable assertions for classes */
-                "-da", /* disable assertions for classes */
-                "-disableassertions", /* disable assertions for classes */
-                "-verbose", /* enable verbose output */
-                "-Xms", /* set initial Java heap size */
-                "-Xmx", /* set maximum Java heap size */
-                "-Xss", /* set java thread stack size */
-                "-XX:NewRatio", /* set Ratio of new/old gen sizes */
-                "-XX:NewSize", /* set initial size of new generation */
-                "-XX:MaxNewSize", /* set max size of new generation */
-                "-XX:PermSize", /* set initial size of permanent gen */
-                "-XX:MaxPermSize", /* set max size of permanent gen */
-                "-XX:MaxHeapFreeRatio", /* heap free percentage (default 70) */
-                "-XX:MinHeapFreeRatio", /* heap free percentage (default 40) */
-                "-XX:UseSerialGC", /* use serial garbage collection */
-                "-XX:ThreadStackSize", /* thread stack size (in KB) */
-                "-XX:MaxInlineSize", /* set max num of bytecodes to inline */
-                "-XX:ReservedCodeCacheSize", /* Reserved code cache size (bytes) */
-                "-XX:MaxDirectMemorySize",
-
-        };
+        return new String[]{
+            "-ea", /* enable assertions for classes */
+            "-enableassertions", /* enable assertions for classes */
+            "-da", /* disable assertions for classes */
+            "-disableassertions", /* disable assertions for classes */
+            "-verbose", /* enable verbose output */
+            "-Xms", /* set initial Java heap size */
+            "-Xmx", /* set maximum Java heap size */
+            "-Xss", /* set java thread stack size */
+            "-XX:NewRatio", /* set Ratio of new/old gen sizes */
+            "-XX:NewSize", /* set initial size of new generation */
+            "-XX:MaxNewSize", /* set max size of new generation */
+            "-XX:PermSize", /* set initial size of permanent gen */
+            "-XX:MaxPermSize", /* set max size of permanent gen */
+            "-XX:MaxHeapFreeRatio", /* heap free percentage (default 70) */
+            "-XX:MinHeapFreeRatio", /* heap free percentage (default 40) */
+            "-XX:UseSerialGC", /* use serial garbage collection */
+            "-XX:ThreadStackSize", /* thread stack size (in KB) */
+            "-XX:MaxInlineSize", /* set max num of bytecodes to inline */
+            "-XX:ReservedCodeCacheSize", /* Reserved code cache size (bytes) */
+            "-XX:MaxDirectMemorySize",};
     }
 
     /**
-     * @return the same result as getAttribute except that if strict
-     * mode is enabled or the default value is null a parse
-     * exception is thrown instead of returning the default value.
+     * @return the same result as getAttribute except that if strict mode is
+     * enabled or the default value is null a parse exception is thrown instead
+     * of returning the default value.
      *
      * @param node the node
      * @param name the attribute
@@ -1270,19 +1338,22 @@
     private String getRequiredAttribute(Node node, String name, String defaultValue) throws ParseException {
         String result = getAttribute(node, name, null);
 
-        if (result == null || result.length() == 0)
-            if (strict || defaultValue == null)
-                throw new ParseException(R("PNeedsAttribute", node.getNodeName(), name));
+        if (result == null || result.length() == 0) {
+            if (strict || defaultValue == null) {
+                throw new ParseException(R("PNeedsAttribute", node.getNodeName().getName(), name));
+            }
+        }
 
-        if (result == null)
+        if (result == null) {
             return defaultValue;
-        else
+        } else {
             return result;
+        }
     }
 
     /**
-     * @return an attribute or the specified defaultValue if there is
-     * no such attribute.
+     * @return an attribute or the specified defaultValue if there is no such
+     * attribute.
      *
      * @param node the node
      * @param name the attribute
@@ -1305,32 +1376,31 @@
         return result;
     }
 
-    
     public static final String MALFORMED_PARSER_CLASS = "net.sourceforge.jnlp.MalformedXMLParser";
     public static final String NORMAL_PARSER_CLASS = "net.sourceforge.jnlp.XMLParser";
+
     /**
-     * @return the root node from the XML document in the specified
-     * input stream.
+     * @return the root node from the XML document in the specified input
+     * stream.
      *
      * @throws ParseException if the JNLP file is invalid
      */
-    static Node getRootNode(InputStream input, ParserSettings settings) throws ParseException {
+    public static Node getRootNode(InputStream input, ParserSettings settings) throws ParseException {
         try {
             Object parser = getParserInstance(settings);
             Method m = parser.getClass().getMethod("getRootNode", InputStream.class);
             return (Node) m.invoke(parser, input);
         } catch (InvocationTargetException e) {
             if (e.getCause() instanceof ParseException) {
-                throw (ParseException)(e.getCause());
+                throw (ParseException) (e.getCause());
             }
             throw new ParseException(R("PBadXML"), e);
         } catch (Exception e) {
             throw new ParseException(R("PBadXML"), e);
         }
     }
-    
 
-     public static Object getParserInstance(ParserSettings settings) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
+    public static Object getParserInstance(ParserSettings settings) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
         String className;
         if (settings.isMalformedXmlAllowed()) {
             className = MALFORMED_PARSER_CLASS;
@@ -1364,7 +1434,7 @@
         return instance;
     }
 
-  private String getOptionalMainClass(Node node) {
+    private String getOptionalMainClass(Node node) {
         try {
             return getMainClass(node, false);
         } catch (ParseException ex) {
@@ -1401,7 +1471,7 @@
                 OutputController.getLogger().log(OutputController.Level.MESSAGE_DEBUG, "Invlaid char in main-class: '" + main.charAt(0) + "'");
             }
             for (int i = 1; i < main.length(); i++) {
-                if (main.charAt(i)=='.'){
+                if (main.charAt(i) == '.') {
                     //dot connects identifiers
                     continue;
                 }
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/ResourcesDesc.java
--- a/netx/net/sourceforge/jnlp/ResourcesDesc.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/ResourcesDesc.java	Wed Nov 07 12:34:44 2018 +0100
@@ -213,15 +213,34 @@
      */
     public <T> List<T> getResources(Class<T> type) {
         List<T> result = new ArrayList<>();
-
         for (Object resource : resources) {
-            if (type.isAssignableFrom(resource.getClass()))
-                result.add(type.cast(resource));
+            if (resource instanceof JREDesc) {
+                JREDesc jre = (JREDesc) resource;
+                List<ResourcesDesc> descs = jre.getResourcesDesc();
+                for (ResourcesDesc desc : descs) {
+                    result.addAll(desc.getResources(type));
+                }
+            }
+            if (isWontedResource(resource, type)) {
+                result.add(getWontedResource(resource, type));
+            }
         }
 
         return result;
     }
 
+    private static <T> boolean isWontedResource(Object resource, Class<T> type) {
+        T l = getWontedResource(resource, type);
+        return l != null;
+    }
+
+    private static <T> T getWontedResource(Object resource, Class<T> type) {
+        if (type.isAssignableFrom(resource.getClass())) {
+            return type.cast(resource);
+        }
+        return null;
+    }
+
     /**
      * Add a resource.
      * @param resource to be added
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/ShortcutDesc.java
--- a/netx/net/sourceforge/jnlp/ShortcutDesc.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/ShortcutDesc.java	Wed Nov 07 12:34:44 2018 +0100
@@ -74,7 +74,7 @@
       * For testing purposes. Verify if it have been parsed out correctly.
      * @return whether the shortcut requires being online.
      */
-    boolean isOnlineValue() {
+    public boolean isOnlineValue() {
         return requiresOnline;
     }
 
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/about/AboutDialog.java
--- a/netx/net/sourceforge/jnlp/about/AboutDialog.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/about/AboutDialog.java	Wed Nov 07 12:34:44 2018 +0100
@@ -53,13 +53,13 @@
 import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JPanel;
-import javax.swing.SwingUtilities;
 import javax.swing.border.EmptyBorder;
 
 import net.sourceforge.jnlp.util.ScreenFinder;
 import net.sourceforge.jnlp.util.docprovider.TextsProvider;
 import net.sourceforge.jnlp.util.docprovider.formatters.formatters.HtmlFormatter;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import net.sourceforge.swing.SwingUtils;
 
 public final class AboutDialog extends JPanel implements Runnable, ActionListener {
 
@@ -95,10 +95,11 @@
         super(new GridBagLayout());
         this.app = app;
         frame = new JDialog((Frame) null, R("AboutDialogueTabAbout") + " IcedTea-Web", modal);
+        frame.setName("AboutDialog");
+        SwingUtils.info(frame);
         frame.setContentPane(this);
         frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
 
-
         aboutButton = new JButton( R("AboutDialogueTabAbout"));
         aboutButton.addActionListener(this);
 
@@ -267,7 +268,7 @@
     }
     
     public static void display(boolean modal, String app, ShowPage showPage) {
-        SwingUtilities.invokeLater(new AboutDialog(modal, app, showPage));
+        SwingUtils.invokeLater(new AboutDialog(modal, app, showPage));
     }
 }
 
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java
--- a/netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java	Wed Nov 07 12:34:44 2018 +0100
@@ -26,6 +26,7 @@
 import javax.swing.*;
 import javax.swing.Timer;
 import javax.jnlp.*;
+import net.sourceforge.swing.SwingUtils;
 
 import net.sourceforge.jnlp.runtime.*;
 import net.sourceforge.jnlp.util.ImageResources;
@@ -106,39 +107,48 @@
      * @return donload service listener attached to this app. instance
      */
     @Override
-    public DownloadServiceListener getListener(ApplicationInstance app, String downloadName, URL resources[]) {
-        DownloadPanel result = new DownloadPanel(downloadName);
+    public DownloadServiceListener getListener(ApplicationInstance app, final String downloadName, final URL resources[]) {
+        final FutureResult<DownloadPanel> result = new FutureResult<DownloadPanel>() {
+            @Override
+            public void run() {
+                DownloadPanel result = new DownloadPanel(downloadName);
+
+                synchronized (dialogMutex) {
+                    if (dialog == null) {
+                        dialog = createDownloadIndicatorWindow(true);
+                    }
 
-        synchronized (dialogMutex) {
-            if (dialog == null) {
-                dialog = createDownloadIndicatorWindow(true);
-            }
+                    if (resources != null) {
+                        for (URL url : resources) {
+                            result.addProgressPanel(url, null);
+                        }
+                    }
 
-            if (resources != null) {
-                for (URL url : resources) {
-                    result.addProgressPanel(url, null);
-        
+                    dialog.getContentPane().add(result, vertical);
+                    dialog.pack();
+                    placeFrameToLowerRight();
+                    
+                    result.addComponentListener(new ComponentAdapter() {
+                        @Override
+                        public void componentResized(ComponentEvent e) {
+                            placeFrameToLowerRight();
+                        }
+                    });
+
+                    dialog.setVisible(true);
+
+                    setRef(result);
                 }
             }
-
-            dialog.getContentPane().add(result, vertical);
-            dialog.pack();
-            placeFrameToLowerRight();
-            result.addComponentListener(new ComponentAdapter() {
-                @Override
-                public void componentResized(ComponentEvent e) {
-                    placeFrameToLowerRight();
-                }
-            });
-
-            dialog.setVisible(true);
-
-            return result;
-        }
+        };
+        SwingUtils.invokeAndWait(result);
+        return result.getRef();
     }
 
      public static JDialog createDownloadIndicatorWindow(boolean undecorated) throws HeadlessException {
         JDialog f = new JDialog((JFrame)null, downloading + "...");
+        f.setName("DownloadIndicatorDialog");
+        SwingUtils.info(f);
         f.setUndecorated(undecorated);
         f.setIconImages(ImageResources.INSTANCE.getApplicationImages());
         f.getContentPane().setLayout(new GridBagLayout());
@@ -328,7 +338,7 @@
 
                 }
             };
-            SwingUtilities.invokeLater(r);
+            SwingUtils.invokeLater(r);
         }
 
         /**
@@ -474,4 +484,15 @@
         }
     };
 
+    static abstract class FutureResult<V> implements Runnable {
+        private V ref = null;
+
+        public V getRef() {
+            return ref;
+        }
+
+        public void setRef(V ref) {
+            this.ref = ref;
+        }
+    }
 }
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/config/BasicValueValidators.java
--- a/netx/net/sourceforge/jnlp/config/BasicValueValidators.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/config/BasicValueValidators.java	Wed Nov 07 12:34:44 2018 +0100
@@ -45,6 +45,7 @@
 import java.net.URL;
 import java.util.Arrays;
 import java.util.Locale;
+import net.sourceforge.jnlp.runtime.Translator;
 
 /**
  * Provides {@link ValueValidator} implementations for some common value types
@@ -327,6 +328,52 @@
     public static ValueValidator getFilePathValidator() {
         return new FilePathValidator();
     }
+    
+     public static ValueValidator getBrowserPathValidator() {
+        return new ValueValidator() {
+            @Override
+            public void validate(Object value) throws IllegalArgumentException {
+                if (value == null) {
+                    return;
+                }
+                if (!(value instanceof String)) {
+                    throw new IllegalArgumentException("Value should be string!");
+                }
+               if (verifyFileOrCommand((String)value) == null){
+                    //jsut warn?
+                    throw new IllegalArgumentException("Value should be file, or on PATH, or known keyword. See possible values.");
+               }
+            }
+
+            @Override
+            public String getPossibleValues() {
+                return Translator.VVPossibleBrowserValues();
+            }
+        };
+    }
+     
+      public static String verifyFileOrCommand(String cmd) {
+        cmd = cmd.split("\\s+")[0];
+          if (cmd.equals(DeploymentConfiguration.ALWAYS_ASK) || cmd.equals(DeploymentConfiguration.INTERNAL_HTML)) {
+              return "keyword";
+          }
+        File fileCandidate = new File(cmd);
+        if (fileCandidate.exists() && !fileCandidate.isDirectory()) {
+            return cmd;
+        }
+        String path = System.getenv("PATH");
+        if (path != null) {
+            String[] pathMembers = path.split(File.pathSeparator);
+            for (String s : pathMembers) {
+                File pathCandidate = new File(s, cmd);
+                if (pathCandidate.exists() && !pathCandidate.isDirectory()) {
+                    return pathCandidate.toString();
+                }
+            }
+        }
+        return null;
+    }
+
 
     /**
      * Returns a {@link ValueValidator} that checks if an object represents a
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/config/Defaults.java
--- a/netx/net/sourceforge/jnlp/config/Defaults.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/config/Defaults.java	Wed Nov 07 12:34:44 2018 +0100
@@ -226,6 +226,11 @@
                         String.valueOf(false)
                 },
                 {
+                        DeploymentConfiguration.KEY_SECURITY_ITW_IGNORECERTISSUES,
+                        BasicValueValidators.getBooleanValidator(),
+                        String.valueOf(false)
+                },
+                {
                         DeploymentConfiguration.KEY_SECURITY_PROMPT_USER_FOR_JNLP,
                         BasicValueValidators.getBooleanValidator(),
                         String.valueOf(true)
@@ -398,7 +403,7 @@
                 /* browser selection */
                 {
                         DeploymentConfiguration.KEY_BROWSER_PATH,
-                        BasicValueValidators.getFilePathValidator(),
+                        BasicValueValidators.getBrowserPathValidator(),
                         null
                 },
                 /* check for update timeout */
@@ -407,6 +412,11 @@
                         BasicValueValidators.getRangedIntegerValidator(0, 10000),
                         String.valueOf(500)
                 },
+                {
+                        DeploymentConfiguration.IGNORE_HEADLESS_CHECK,
+                        BasicValueValidators.getBooleanValidator(),
+                        String.valueOf(false)
+                },
                 //JVM arguments for plugin
                 {
                         DeploymentConfiguration.KEY_PLUGIN_JVM_ARGUMENTS,
@@ -445,4 +455,4 @@
 
         return result;
     }
-}
\ No newline at end of file
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java
--- a/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java	Wed Nov 07 12:34:44 2018 +0100
@@ -150,6 +150,9 @@
     /** Boolean. Only install the custom authenticator if true */
     public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator";
 
+    /** Boolean. Only install the custom authenticator if true */
+    public static final String KEY_SECURITY_ITW_IGNORECERTISSUES = "deployment.security.itw.ignorecertissues";
+    
     public static final String KEY_STRICT_JNLP_CLASSLOADER = "deployment.jnlpclassloader.strict";
     
     /** Boolean. Do not prefere https over http */
@@ -218,7 +221,16 @@
     public static final String KEY_AUTO_DOWNLOAD_JRE = "deployment.javaws.autodownload";
 
     public static final String KEY_BROWSER_PATH = "deployment.browser.path";
+    //for legacy reasons, also $BROWSER variable is supported
+    public static final String BROWSER_ENV_VAR = "BROWSER";
+    // both browser.path and BROWSER can ave those for-fun keys:
+    public static final String ALWAYS_ASK="ALWAYS-ASK";
+    public static final String INTERNAL_HTML="INTERNAL-HTML";
+    public static final String LEGACY_WIN32_URL__HANDLER="rundll32 url.dll,FileProtocolHandler ";
+    
     public static final String KEY_UPDATE_TIMEOUT = "deployment.javaws.update.timeout";
+    
+    public static final String IGNORE_HEADLESS_CHECK = "deployment.headless.ignore";
 
     /*
      * JVM arguments for plugin
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java
--- a/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java	Wed Nov 07 12:34:44 2018 +0100
@@ -32,6 +32,7 @@
 import net.sourceforge.jnlp.runtime.Translator;
 import net.sourceforge.jnlp.util.ImageResources;
 import net.sourceforge.jnlp.util.ScreenFinder;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * This dialog provides a means for user to edit more of the proxy settings.
@@ -55,6 +56,8 @@
      */
     public AdvancedProxySettingsDialog(DeploymentConfiguration config) {
         super((Frame) null, dialogTitle, true); // Don't need a parent.
+        this.setName("AdvancedProxySettingsDialog");
+        SwingUtils.info(this);
         setIconImages(ImageResources.INSTANCE.getApplicationImages());
 
         this.config = config;
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/CachePane.java
--- a/netx/net/sourceforge/jnlp/controlpanel/CachePane.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/CachePane.java	Wed Nov 07 12:34:44 2018 +0100
@@ -21,7 +21,6 @@
 import java.awt.Component;
 import java.awt.Cursor;
 import java.awt.Dimension;
-import java.awt.EventQueue;
 import java.awt.FlowLayout;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -67,6 +66,7 @@
 import net.sourceforge.jnlp.util.PropertiesFile;
 import net.sourceforge.jnlp.util.logging.OutputController;
 import net.sourceforge.jnlp.util.ui.NonEditableTableModel;
+import net.sourceforge.swing.SwingUtils;
 
 public class CachePane extends JPanel {
     final JDialog parent;
@@ -267,7 +267,7 @@
      * @see CachePane#cacheTable
      */
     private  void invokeLaterDelete() {
-        EventQueue.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 try {
@@ -339,8 +339,7 @@
     }
 
     private void invokeLaterDeleteAll() {
-        EventQueue.invokeLater(new Runnable() {
-
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 try {
@@ -362,7 +361,7 @@
      * @see CachePane#populateTable
      */
     final void invokeLaterPopulateTable() {
-        EventQueue.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 try {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java
--- a/netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java	Wed Nov 07 12:34:44 2018 +0100
@@ -34,6 +34,7 @@
 import net.sourceforge.jnlp.runtime.Translator;
 import net.sourceforge.jnlp.util.ImageResources;
 import net.sourceforge.jnlp.util.ScreenFinder;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * This class will provide a visual way of viewing cache.
@@ -55,6 +56,8 @@
      */
     public CacheViewer(DeploymentConfiguration config) {
         super((Frame) null, dialogTitle, true); // Don't need a parent.
+        this.setName("CacheViewer");
+        SwingUtils.info(this);
         this.config = config;
         if (config == null) {
             throw new IllegalArgumentException("config: " + config);
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/CommandLine.java
--- a/netx/net/sourceforge/jnlp/controlpanel/CommandLine.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/CommandLine.java	Wed Nov 07 12:34:44 2018 +0100
@@ -37,6 +37,7 @@
 import net.sourceforge.jnlp.util.docprovider.formatters.formatters.PlainTextFormatter;
 import net.sourceforge.jnlp.util.logging.OutputController;
 import net.sourceforge.jnlp.util.optionparser.OptionParser;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * Encapsulates a command line interface to the deployment configuration.
@@ -495,6 +496,9 @@
      * @throws java.lang.Exception when it goes wrong
      */
     public static void main(String[] args) throws Exception {
+        // setup Swing EDT tracing:
+        SwingUtils.setup();
+
         try {
             OptionParser optionParser = new OptionParser(args, OptionsDefinitions.getItwsettingsCommands());
             if (optionParser.hasOption(OptionsDefinitions.OPTIONS.DETAILS) || optionParser.hasOption(OptionsDefinitions.OPTIONS.VERBOSE)){
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java	Wed Nov 07 12:34:44 2018 +0100
@@ -45,7 +45,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 import javax.swing.WindowConstants;
 import javax.swing.border.EmptyBorder;
@@ -55,10 +54,12 @@
 import net.sourceforge.jnlp.config.DeploymentConfiguration;
 import net.sourceforge.jnlp.config.PathsAndFiles;
 import net.sourceforge.jnlp.controlpanel.JVMPanel.JvmValidationResult;
+import net.sourceforge.jnlp.runtime.JNLPRuntime;
 import net.sourceforge.jnlp.runtime.Translator;
 import net.sourceforge.jnlp.security.viewer.CertificatePane;
 import net.sourceforge.jnlp.util.ImageResources;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * This is the control panel for Java. It provides a GUI for modifying the
@@ -118,7 +119,7 @@
         add(topPanel, BorderLayout.PAGE_START);
         add(mainPanel, BorderLayout.CENTER);
         add(buttonPanel, BorderLayout.PAGE_END);
-        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
         pack();
     }
 
@@ -184,7 +185,7 @@
                 if (validationResult!= JOptionPane.OK_OPTION){
                     return;
                 }
-                ControlPanel.this.dispose();
+                JNLPRuntime.exit(0);
             }
         });
         buttons.add(okButton);
@@ -211,7 +212,7 @@
         cancelButton.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                ControlPanel.this.dispose();
+                JNLPRuntime.exit(0);
             }
         });
         buttons.add(cancelButton);
@@ -418,8 +419,7 @@
             // ignore; not a big deal
         }
 
-
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 final ControlPanel editor = new ControlPanel(config);
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java	Wed Nov 07 12:34:44 2018 +0100
@@ -30,13 +30,13 @@
 import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JLabel;
-import javax.swing.SwingUtilities;
 import net.sourceforge.jnlp.ShortcutDesc;
 
 import net.sourceforge.jnlp.config.DeploymentConfiguration;
 import net.sourceforge.jnlp.controlpanel.desktopintegrationeditor.FreeDesktopIntegrationEditorFrame;
 import net.sourceforge.jnlp.runtime.JNLPRuntime;
 import net.sourceforge.jnlp.runtime.Translator;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * This class provides the panel that allows the user to set whether they want
@@ -79,7 +79,7 @@
 
             @Override
             public void actionPerformed(ActionEvent e) {
-                SwingUtilities.invokeLater(new Runnable() {
+                SwingUtils.invokeLater(new Runnable() {
 
                     @Override
                     public void run() {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java	Wed Nov 07 12:34:44 2018 +0100
@@ -281,8 +281,13 @@
         }
 
         boolean findRT = false;
-
-        if (processErrorStream.contains("\"9") || processStdOutStream.contains("\"9") || processErrorStream.contains("build 9") || processStdOutStream.contains("build 9")) {
+        boolean jdk9up = false;
+        for (int i = 9; i <= 99; i++) {
+            if (processErrorStream.contains("\"" + i) || processStdOutStream.contains("\"" + i)) {
+                jdk9up = true;
+            }
+        }
+        if (jdk9up) {
             validationResult += "<span color=\"green\">" + Translator.R("CPJVMjdk9") + "</span><br />";
             findRT = false;
         } else if (processErrorStream.contains("1.8.0") || processStdOutStream.contains("1.8.0")) {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/PolicyPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/PolicyPanel.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/PolicyPanel.java	Wed Nov 07 12:34:44 2018 +0100
@@ -55,7 +55,6 @@
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JTextField;
-import javax.swing.SwingUtilities;
 import net.sourceforge.jnlp.config.DeploymentConfiguration;
 
 import net.sourceforge.jnlp.config.PathsAndFiles;
@@ -64,6 +63,7 @@
 import net.sourceforge.jnlp.util.FileUtils;
 import net.sourceforge.jnlp.util.FileUtils.OpenFileResult;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * Implements a Policy Settings panel for the itweb-settings control panel.
@@ -264,7 +264,7 @@
         public void actionPerformed(final ActionEvent event) {
             try {
                 final URL fileUrl = new URL(fileUrlString);
-                SwingUtilities.invokeLater(new Runnable() {
+                SwingUtils.invokeLater(new Runnable() {
                     @Override
                     public void run() {
                         launchPolicyTool(frame, fileUrl.getPath());
@@ -290,7 +290,7 @@
         public void actionPerformed(final ActionEvent event) {
             try {
                 final URL fileUrl = new URL(fileUrlString);
-                SwingUtilities.invokeLater(new Runnable() {
+                SwingUtils.invokeLater(new Runnable() {
                     @Override
                     public void run() {
                         launchSimplePolicyEditor(fileUrl.getPath());
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java	Wed Nov 07 12:34:44 2018 +0100
@@ -44,7 +44,6 @@
 import java.awt.event.KeyListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.awt.event.WindowEvent;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -101,6 +100,7 @@
 import net.sourceforge.jnlp.security.dialogs.remember.ExecuteAppletAction;
 import net.sourceforge.jnlp.util.ScreenFinder;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import net.sourceforge.swing.SwingUtils;
 
 public class UnsignedAppletsTrustingListPanel extends JPanel {
 
@@ -146,7 +146,7 @@
         final String defaultFileName2 = "terrorList2";
         final String defaultFile1 = defaultDir + defaultFileName1;
         final String defaultFile2 = defaultDir + defaultFileName2;
-        java.awt.EventQueue.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 try {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/Blinker.java
--- a/netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/Blinker.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/Blinker.java	Wed Nov 07 12:34:44 2018 +0100
@@ -39,8 +39,8 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import javax.swing.JComponent;
-import javax.swing.SwingUtilities;
 import javax.swing.Timer;
+import net.sourceforge.swing.SwingUtils;
 
 public class Blinker {
 
@@ -76,7 +76,7 @@
             }
             if (counter == 5) {
                 ((Timer) e.getSource()).stop();
-                SwingUtilities.invokeLater(new Runnable() {
+                SwingUtils.invokeLater(new Runnable() {
 
                     @Override
                     public void run() {
@@ -86,7 +86,7 @@
                 });
                 return;
             }
-            SwingUtilities.invokeLater(new Runnable() {
+            SwingUtils.invokeLater(new Runnable() {
 
                 @Override
                 public void run() {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/FreeDesktopIntegrationEditorFrame.java
--- a/netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/FreeDesktopIntegrationEditorFrame.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/FreeDesktopIntegrationEditorFrame.java	Wed Nov 07 12:34:44 2018 +0100
@@ -63,6 +63,7 @@
 import net.sourceforge.jnlp.util.logging.ConsoleOutputPaneModel;
 
 import static net.sourceforge.jnlp.runtime.Translator.R;
+import net.sourceforge.swing.SwingUtils;
 
 public class FreeDesktopIntegrationEditorFrame extends JFrame {
 
@@ -213,8 +214,7 @@
     }
 
     public static void main(String args[]) {
-
-        java.awt.EventQueue.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 new FreeDesktopIntegrationEditorFrame().setVisible(true);
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/resources/Messages.properties
--- a/netx/net/sourceforge/jnlp/resources/Messages.properties	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/resources/Messages.properties	Wed Nov 07 12:34:44 2018 +0100
@@ -13,6 +13,7 @@
 ButCancel=\ Cancel\ 
 ButClose=Close
 ButAdvancedOptions=Advanced Options
+ButLunchFullItwSettings=Launch full settings
 ButCopy=Copy to Clipboard
 ButMoreInformation=More Information...
 ButOk=OK
@@ -253,9 +254,7 @@
 RPRoxyPacNotSupported=Using Proxy Auto Config (PAC) files is not supported.
 RProxyFirefoxNotFound=Unable to use Firefox''s proxy settings. Using "DIRECT" as proxy type.
 RProxyFirefoxOptionNotImplemented=Browser proxy option "{0}" ({1}) not supported yet.
-RBrowserLocationPromptTitle=Browser Location
-RBrowserLocationPromptMessage=Specify Browser Location
-RBrowserLocationPromptMessageWithReason=Specify Browser Location (the browser command "{0}" is invalid).
+RBrowserLocationPromptTitle=Please select handler (browser) for this url:
 HTMLnoneFound=No applet found on this html page (supported are object, embed and applet tags)
 HTMLmoreThenOne=More then one ({0}) applets found. Using  first. You can specify ''all'' or numbers to specify applets you want to run.
 
@@ -337,7 +336,7 @@
 BOVerbose   = Enable verbose output.
 BOAbout     = Shows a sample application.
 BOVersion   = Print the IcedTea-Web version and exit.
-BONosecurity= Disables the secure runtime environment.
+BONosecurity= Disables the secure runtime environment. You need also  deployment.security.itw.ignorecertissues to workaround corrupted signatures
 BONoupdate  = Disables checking for updates.
 BOHeadless  = Disables download window, other UIs.
 BOStrict    = Enables strict checking of JNLP file format.
@@ -582,6 +581,15 @@
 VVPossibleFileValues=include an absolute path to a file or directory
 VVPossibleRangedIntegerValues=are in range {0} to {1} (inclusive)
 VVPossibleUrlValues=include any valid url (eg. http://icedtea.classpath.org/hg/)
+VVPossibleBrowserValues=Set path to browser or any command launching url. If not set, default browser is used. If default browser is not available, you will be be prompted to provide URL consumer. \
+Eg: firefox, or (windows) {0}, microsoft-edge, (mac) safari, xdg-open (linux) like commands. \
+In headless mode you can use wget, curl or lynx. It can be also javaws itself to launch other jnlp. \
+You can set yor custom browser via {4} property. ${1} environment variable is serving same purpose. \
+You can use keyword {2} to launch internal browser. But be warned, it is terrible. Use {3} to enforce prompt each time instead of using defaults.
+VVBrowserVerificationPass=Verification Ok: {0}
+VVBrowserVerificationFail=Verification failed. See examples!
+VVBrowserSaveNotAllowed=You have set {0} as value for {1}. Can't overwrite.
+VVBrowserSaveAllowed=Will save your selection as {0}
 
 # Control Panel - Main
 CPMainDescriptionShort=Configure IcedTea-Web
@@ -612,7 +620,7 @@
 CPJVMjdk6=JDK6 recognized. JDK7 and older are longer supported.
 CPJVMjdk7=JDK7 recognized. JDK7 and older are longer supported.
 CPJVMjdk8=JDK8 recognized. Jdk8 and higher are supported
-CPJVMjdk9=JDK9 recognized. Jdk8 and higher are supported
+CPJVMjdk9=JDK9 or higher recognized. Jdk8 and higher are supported. Jdk9 and up can have modularity issues.
 CPJVMjdk=Unknown version. Hard to judge support. See tooltip or console/standard output (depends on verbosity)for real version.
 CPJVMoracleFound=Great, Oracle java detected
 CPJVMibmFound=Good, IBM java detected
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/resources/Messages_cs.properties
--- a/netx/net/sourceforge/jnlp/resources/Messages_cs.properties	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/resources/Messages_cs.properties	Wed Nov 07 12:34:44 2018 +0100
@@ -233,8 +233,6 @@
 RProxyFirefoxNotFound=Nelze pou\u017e\u00edt nastaven\u00ed proxy server\u016f prohl\u00ed\u017ee\u010de Firefox. Je pou\u017eito nastaven\u00ed bez proxy serveru (DIRECT).
 RProxyFirefoxOptionNotImplemented=Mo\u017enost nastaven\u00ed proxy serveru prohl\u00ed\u017ee\u010de {0} ({1}) je\u0161t\u011b nen\u00ed podporov\u00e1na.
 RBrowserLocationPromptTitle=Um\u00edst\u011bn\u00ed prohl\u00ed\u017ee\u010de
-RBrowserLocationPromptMessage=Zadejte um\u00edst\u011bn\u00ed prohl\u00ed\u017ee\u010de.
-RBrowserLocationPromptMessageWithReason=Zadejte um\u00edst\u011bn\u00ed prohl\u00ed\u017ee\u010de (p\u0159\u00edkaz prohl\u00ed\u017ee\u010de {0} je neplatn\u00fd).
 HTMLnoneFound=Na t\u00e9to str\u00e1nce html nebyl nalezen \u017e\u00e1dn\u00fd aplet (podporov\u00e1ny jsou zna\u010dky \u201eobject\u201c, \u201eembed\u201c a \u201eapplet\u201c).
 HTMLmoreThenOne=Bylo nalezeno v\u00edce aplet\u016f ({0}). Pou\u017eije se prvn\u00ed. M\u016f\u017eete specifikovat \u010d\u00edsla aplet\u016f nebo pou\u017e\u00edt volbu \u201ev\u0161echny\u201c (all) a vybrat tak, kter\u00e9 aplety chcete spustit.
 
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/resources/Messages_de.properties
--- a/netx/net/sourceforge/jnlp/resources/Messages_de.properties	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/resources/Messages_de.properties	Wed Nov 07 12:34:44 2018 +0100
@@ -252,8 +252,6 @@
 RProxyFirefoxNotFound=Es ist nicht m\u00f6glich Firefoxs Proxyeinstellungen zu verwenden. Nutze \u201eDIRECT\u201c als Proxytyp.
 RProxyFirefoxOptionNotImplemented=Browserproxyoption \u201e{0}\u201c ({1}) wird noch nicht unterst\u00fctzt.
 RBrowserLocationPromptTitle=Browserort
-RBrowserLocationPromptMessage=Bitte den Ort des Browsers angeben
-RBrowserLocationPromptMessageWithReason=Bitte den Ort des Browsers angeben (der Browserbefehl \u201e{0}\u201c ist ung\u00fcltig).
 HTMLnoneFound=Es wurde kein Applet auf dieser HTML-Seite gefunden (unterst\u00fctzt werden die Elemente \u201eOBJECT\u201c, \u201eEMBED\u201c und \u201eAPPLET\u201c).
 HTMLmoreThanOne=Mehr als ein ({0}) Applet wurde gefunden. Das erste Applet wird ausgef\u00fchrt. Mit der Angabe von \u201eall\u201c oder Zahlen k\u00f6nnen die gew\u00fcnschten Applets f\u00fcr die Ausf\u00fchrung angegeben werden.
 
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/resources/Messages_pl.properties
--- a/netx/net/sourceforge/jnlp/resources/Messages_pl.properties	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/resources/Messages_pl.properties	Wed Nov 07 12:34:44 2018 +0100
@@ -232,8 +232,6 @@
 RProxyFirefoxNotFound=Nie mo\u017cna u\u017cy\u0107 ustawie\u0144 proxy Firefox-a. Zastosowano \u201eDIRECT\u201d jako typ proxy.
 RProxyFirefoxOptionNotImplemented=Opcja proxy \u201e{0}\u201d ({1}) przegl\u0105darki jeszcze nie jest obs\u0142ugiwana.
 RBrowserLocationPromptTitle=Lokalizacja przegl\u0105darki
-RBrowserLocationPromptMessage=Podaj lokalizacj\u0119 przegl\u0105darki
-RBrowserLocationPromptMessageWithReason=Podaj lokalizacj\u0119 przegl\u0105darki (polecenie \u201e{0}\u201d jest nieprawid\u0142owe).
 BFileInfoAuthors=Nazwiska i adresy poczty elektronicznej zas\u0142u\u017conych dla tego projektu umieszczono w pliku AUTHORS, znajduj\u0105cym si\u0119 w katalogu g\u0142\u00f3wnym IcedTea-Web.
 BFileInfoCopying=Kompletny egzemplarz licencji GPLv2 tego projektu umieszczono w pliku COPYING, znajduj\u0105cym si\u0119 w katalogu g\u0142\u00f3wnym IcedTea-Web.
 BFileInfoNews=Nowo\u015bci o wydaniach tego projektu umieszczono w pliku NEWS, znajduj\u0105cym si\u0119 w katalogu g\u0142\u00f3wnym IcedTea-Web.
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/resources/Messages_ru.properties
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/netx/net/sourceforge/jnlp/resources/Messages_ru.properties	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,1203 @@
+# Default (English) UI messages for netx
+#
+# All messages are formatted using Java's MessageFormat class.
+# Apostrophe characters ' need to be escaped by using two: ''
+# Curly brackets need to be escaped by surrounding them with single apostrophes '{' '{hello}'
+#
+# L=Launcher, B=Boot, P=Parser, C=cache S=security
+#
+# General
+NullParameter=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Null
+ButAllow=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c
+ButBrowse=\u041e\u0431\u0437\u043e\u0440...
+ButCancel=\ \u041e\u0442\u043c\u0435\u043d\u0430 
+ButClose=\u0417\u0430\u043a\u0440\u044b\u0442\u044c
+ButAdvancedOptions=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438
+ButLunchFullItwSettings=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432
+ButCopy=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430
+ButMoreInformation=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f...
+ButOk=\u041e\u041a
+ButProceed=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c
+ButRun=\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c
+ButSandbox=\u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430
+ButApply=\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c
+ButDone=\u0413\u043e\u0442\u043e\u0432\u043e
+ButShowDetails=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438
+ButHideDetails=\u0421\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438
+ButYes=\u0414\u0430
+ButNo=\u041d\u0435\u0442
+BUTControlledBy=\u041f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c {0}
+BUTmodified=\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e
+BUTback=\u041d\u0430\u0437\u0430\u0434
+BUTforward=\u0412\u043f\u0435\u0440\u0451\u0434
+BUTreload=\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c
+ITWdocsMissingAuthors=\u0421\u043c. \u0444\u0430\u0439\u043b \u0430\u0432\u0442\u043e\u0440\u043e\u0432
+
+HEADLESS_MISSCONFIGURED=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0438. IcedTea-Web \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043d\u043e \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u0431\u0430\u0433 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.
+
+CertWarnRunTip=\u0414\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438
+CertWarnSandboxTip=\u041d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438
+CertWarnCancelTip=\u041d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
+CertWarnPolicyTip=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b
+CertWarnPolicyEditorItem=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438
+CertWarnHTTPSAcceptTip=\u041f\u0440\u0438\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c HTTPS-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e
+CertWarnHTTPSRejectTip=\u041d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c HTTPS-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435
+
+AFileOnTheMachine=\u0444\u0430\u0439\u043b \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435
+AlwaysAllowAction=\u0412\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435
+AlwaysForbidAction=\u0412\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435
+Usage=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435:
+Error=\u041e\u0448\u0438\u0431\u043a\u0430
+Warning=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435
+
+Continue=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?
+Field=\u041f\u043e\u043b\u0435
+From=\u041e\u0442
+Name=\u0418\u043c\u044f
+Password=\u041f\u0430\u0440\u043e\u043b\u044c:
+Publisher=\u0418\u0437\u0434\u0430\u0442\u0435\u043b\u044c
+Unknown=<\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e>
+Username=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:
+Value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
+Version=\u0412\u0435\u0440\u0441\u0438\u044f
+
+# about dialogue
+AboutDialogueTabAbout=\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435
+AboutDialogueTabAuthors=\u0410\u0432\u0442\u043e\u0440\u044b
+AboutDialogueTabChangelog=\u0416\u0443\u0440\u043d\u0430\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439
+AboutDialogueTabNews=\u041d\u043e\u0432\u043e\u0441\u0442\u0438
+AboutDialogueTabGPLv2=GPLv2
+
+# version check minidialogue
+JREversionDontMatch=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435: \u0432\u0430\u0448\u0430 \u0441\u0440\u0435\u0434\u0430 JRE - {0} - \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 JRE - {1}
+JREContinueDialogSentence2=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435?
+JREContinueDialogSentenceTitle=\u041d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430\u044f \u0441\u0440\u0435\u0434\u0430 JRE
+
+# missing permissions dialogue
+MissingPermissionsMainTitle=\u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 <span color=''red''> {0} </span> \u0438\u0437 <span color=''red''> {1} </span> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f?
+MissingPermissionsInfo=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:<br/><a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/manifest.html#permissions"> JAR File Manifest Attributes</a> <br/> \u0438<br/> <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html"> Preventing the repurposing of Applications</a>
+
+# missing Application-Library-Allowable-Codebase dialogue
+ALACAMissingMainTitle=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <span color=''red''> {0} </span> \u0438\u0437 <span color=''red''> {1} </span> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439: {2} \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435?
+ALACAMissingInfo=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:<br/><a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/manifest.html#app_library"> JAR File Manifest Attributes</a> <br/> \u0438<br/> <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html"> Preventing the Repurposing of an Application</a>
+
+# matching Application-Library-Allowable-Codebase dialogue
+ALACAMatchingMainTitle=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <span color=''green''> {0} </span> \u0438\u0437 <span color=''green''> {1} </span> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439:<br/>{2} <br/> \u0412\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435?
+ALACAMatchingInfo=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:<br/><a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/manifest.html#app_library"> JAR File Manifest Attributes</a> <br/> \u0438<br/> <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html"> Preventing the Repurposing of an Application</a>
+
+MACDisabledMessage=\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b.
+MACCheckSkipped=\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 {0} \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 deployment.manifest.attributes.check \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 ALL \u0438\u043b\u0438 \u043e\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 {1} \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u043e\u043f\u0446\u0438\u0439
+
+# LS - Severity
+LSMinor=\u041d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f
+LSFatal=\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f
+
+# LC - Category 
+LCSystem=\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430
+LCExternalLaunch=\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430
+LCFileFormat=\u041e\u0448\u0438\u0431\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0444\u0430\u0439\u043b\u0430
+LCReadError=\u041e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f
+LCClient=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
+LCLaunching=\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430
+LCNotSupported=\u041d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c
+LCInit=\u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438
+
+LAllThreadGroup=\u0412\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f JNLP
+LNullUpdatePolicy=\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 null.
+
+LThreadInterrupted=\u041f\u043e\u0442\u043e\u043a \u0431\u044b\u043b \u043f\u0440\u0435\u0440\u0432\u0430\u043d \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u0430.
+LThreadInterruptedInfo=\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0432\u0437\u0430\u0438\u043c\u043e\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0435 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438. \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435/\u0431\u0440\u0430\u0443\u0437\u0435\u0440.
+LCouldNotLaunch=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b JNLP.
+LCouldNotLaunchInfo=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 javaws/browser \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043e\u0442\u0447\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435.
+LCantRead=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b JNLP.
+LCantReadInfo=\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043e\u0442\u0447\u0451\u0442\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 IcedTea-Web.
+LNullLocation=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 .jnlp.
+LNullLocationInfo=\u0411\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 JNLP \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 JVM, \u043d\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b.  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044e\u044e JVM, \u0441\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b .jnlp \u043b\u0438\u0431\u043e \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043b\u0438\u0431\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.
+LNetxJarMissing=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b netx.jar.
+LNetxJarMissingInfo=\u0411\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 JNLP \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 JVM, \u043d\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b netx.jar.  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044e\u044e JVM, \u0441\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b netx.jar.
+LNotToSpec=\u0424\u0430\u0439\u043b JNLP \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u043c.
+LNotToSpecInfo=\u0424\u0430\u0439\u043b JNLP \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 JNLP.  \u0421\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0444\u0430\u0439\u043b\u0430.
+LNotApplication=\u041d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.
+LNotApplicationInfo=\u0411\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.
+LNotApplet=\u041d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u043c \u0430\u043f\u043b\u0435\u0442\u0430.
+LNotAppletInfo=\u0411\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 \u0444\u0430\u0439\u043b\u0430 \u0430\u043f\u043b\u0435\u0442\u0430, \u043a\u0430\u043a \u0430\u043f\u043b\u0435\u0442\u0430.
+LNoInstallers=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.
+LNoInstallersInfo=\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 JNLP \u0435\u0449\u0451 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430.
+LInitApplet=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043f\u043b\u0435\u0442.
+LInitAppletInfo=\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 "\u043a\u043d\u043e\u043f\u043a\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439".
+LInitApplication=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.
+LInitApplicationInfo=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 javaws.
+LNotLaunchable=\u041d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u043c JNLP.
+LNotLaunchableInfo=\u0424\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c JNLP, \u0430\u043f\u043b\u0435\u0442\u043e\u043c \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u043e\u043c.
+LCantDetermineMainClass=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 Main-Class.
+LCantDetermineMainClassInfo=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.
+LUnsignedJarWithSecurity=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c JAR.
+LUnsignedJarWithSecurityInfo=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0444\u0430\u0439\u043b\u044b JAR \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b.
+LSignedJNLPAppDifferentCerts=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 JNLP \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e \u043e\u0434\u043d\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c.
+LSignedJNLPAppDifferentCertsInfo=\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f JNLP \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0434\u0438\u043d\u043e\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0438\u0435.
+LUnsignedApplet=\u0410\u043f\u043b\u0435\u0442 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d.
+LUnsignedAppletPolicyDenied=\u0410\u043f\u043b\u0435\u0442 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d. \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u043b\u0430 \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.
+LUnsignedAppletUserDenied=\u0410\u043f\u043b\u0435\u0442 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u0438 \u043d\u0435 \u0441\u0442\u0430\u043b \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c.
+LPartiallySignedApplet=\u0410\u043f\u043b\u0435\u0442 \u0431\u044b\u043b \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d.
+LPartiallySignedAppletUserDenied=\u0410\u043f\u043b\u0435\u0442 \u0431\u044b\u043b \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0435\u043c\u0443.
+LSignedAppJarUsingUnsignedJar=\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b JAR.
+LSignedAppJarUsingUnsignedJarInfo=\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b JAR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 JAR, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442, \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b.
+LRunInSandboxError=\u0412\u044b\u0437\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u0437\u0434\u043d\u043e.
+LRunInSandboxErrorInfo=\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0430\u043f\u043b\u0435\u0442\u0430 \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b.
+LSignedJNLPFileDidNotMatch=\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b JNLP \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 JNLP.
+LNoSecInstance=\u041e\u0448\u0438\u0431\u043a\u0430: \u043d\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f {0}. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f
+LCertFoundIn={0} \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0432 cacerts ({1})
+LSingleInstanceExists=\u0423\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430. \u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440.
+
+JNotApplet=\u0424\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043f\u043b\u0435\u0442\u043e\u043c.
+JNotApplication=\u0424\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.
+JNotComponent=\u0424\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c.
+JNotInstaller=\u0424\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u043e\u043c.
+JInvalidExtensionDescriptor=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0443 (name={1}, location={2}).
+
+LNotVerified=\u0424\u0430\u0439\u043b\u044b JAR \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b.
+LCancelOnUserRequest=\u041e\u0442\u043c\u0435\u043d\u0435\u043d\u043e \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.
+LFatalVerification=\u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b JAR \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430.
+LFatalVerificationInfo=\u0412 \u043a\u043b\u0430\u0441\u0441\u0435 JarCertVerifier \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b cacerts \u0438\u043b\u0438 trusted.certs \u043c\u043e\u0433\u043b\u0430 \u0441\u0442\u0430\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.
+
+LNotVerifiedDialog=\u0423\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0435 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b JAR.
+LAskToContinue=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f?
+
+# Parser
+PInvalidRoot=\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c JNLP.
+PNoResources=\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (resources).
+PUntrustedNative=\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a (nativelib) \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b.
+PExtensionHasJ2SE=\u042d\u043b\u0435\u043c\u0435\u043d\u0442 j2se \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0444\u0430\u0439\u043b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.
+PInnerJ2SE=\u042d\u043b\u0435\u043c\u0435\u043d\u0442 j2se \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 j2se.
+PTwoMains=\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (resources) (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d)
+PNativeHasMain=\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a (nativelib).
+PNoInfoElement=\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (information).
+PMissingTitle=\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435
+PMissingVendor=\u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a
+PMissingElement=\u0420\u0430\u0437\u0434\u0435\u043b {0} \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u0438. \u0412 \u0444\u0430\u0439\u043b\u0435 JNLP \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
+PTwoDescriptions=\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f (description) c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c kind {0} \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e.
+PSharing=\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u043c \u043e\u0431\u0449\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c (sharing-allowed) \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 JNLP
+PTwoSecurity=\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 JNLP \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (security).
+PEmptySecurity=\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (security) \u0443\u043a\u0430\u0437\u0430\u043d, \u043d\u043e \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439.
+PTwoDescriptors=\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 JNLP \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (application-desc).
+PTwoDesktops=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 (desktop)
+PTwoMenus=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044e (menu)
+PTwoTitles=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f (title)
+PTwoIcons=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u043a\u0430 (icon)
+PTwoUpdates=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (update)
+PUnknownApplet=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442
+PBadWidth=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0430\u043f\u043b\u0435\u0442\u0430.
+PBadHeight=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u044b\u0441\u043e\u0442\u0430 \u0430\u043f\u043b\u0435\u0442\u0430.
+PUrlNotInCodebase=\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430. (\u0443\u0437\u0435\u043b={0}, href={1}, \u0431\u0430\u0437\u0430={2})
+PBadRelativeUrl=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 (\u0443\u0437\u0435\u043b={0}, href={1}, \u0431\u0430\u0437\u0430={2})
+PBadNonrelativeUrl=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043d\u0435\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 (\u0443\u0437\u0435\u043b={0}, href={1})
+PNeedsAttribute=\u042d\u043b\u0435\u043c\u0435\u043d\u0442 {0} \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 {1}.
+PBadXML=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 XML.
+PBadHeapSize=\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u0443\u0447\u0438 ({0})
+
+# Runtime
+BLaunchAbout=\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u043a\u043d\u0430 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435...
+BLaunchAboutFailure=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u043a\u043d\u043e \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435
+BNeedsFile=\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b .jnlp
+RNoAboutJnlp=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b about.jnlp
+BFileLoc=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 JNLP
+BBadProp=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 {0} (\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043a\u043b\u044e\u0447=\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435)
+BBadParam=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 {0} (\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u043c\u044f=\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435)
+BNoDir=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 {0} \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.
+BNoCodeOrObjectApplet=\u0422\u0435\u0433 \u0430\u043f\u043b\u0435\u0442\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 ''code'' \u0438\u043b\u0438 ''object'', \u0438\u043b\u0438 ''jnlp_href''.
+RNoResource=\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441: {0}
+RShutdown=\u042d\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f JVM, \u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0431\u044b\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d.
+RExitTaken=\u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0443\u0436\u0435 \u0437\u0430\u0434\u0430\u043d, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c.
+RCantReplaceSM=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 SecurityManager \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e.
+RCantCreateFile=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b {0}
+RCantDeleteFile=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b {0}
+RCantOpenFile=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b {0}
+RCantWriteFile=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0444\u0430\u0439\u043b {0}
+RFileReadOnly=\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f
+RExpectedFile=\u041e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e {0} \u0431\u0443\u0434\u0435\u0442 \u0444\u0430\u0439\u043b\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0444\u0430\u0439\u043b
+RRemoveRPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0}
+RRemoveWPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0}
+RRemoveXPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0}
+RGetRPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0}
+RGetWPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0}
+RGetXPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0}
+RCantCreateDir=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 {0}
+RCantRename=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c {0} \u0432 {1}
+RDenyStopped=\u0423 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439.
+RExitNoApp=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 JVM, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.
+RNoLockDir=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a ({0})
+RNestedJarExtration=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b JAR.
+RUnexpected=\u041d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e {0} \u0432 {1}
+RConfigurationError=\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c
+RConfigurationFatal=\u041e\u0428\u0418\u0411\u041a\u0410: \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438 \u0435\u0451 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438
+RFailingToDefault=\u041e\u0448\u0438\u0431\u043a\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
+RPRoxyPacNotSupported=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438 (Proxy Auto Config, PAC) \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.
+RProxyFirefoxNotFound=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u043a\u0441\u0438 Firefox. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0438\u043f\u0430 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f "DIRECT".
+RProxyFirefoxOptionNotImplemented=\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u043f\u0446\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 "{0}" ({1}) \u0435\u0449\u0451 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430.
+RBrowserLocationPromptTitle=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a (\u0431\u0440\u0430\u0443\u0437\u0435\u0440) \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430:
+HTMLnoneFound=\u041d\u0430 \u044d\u0442\u043e\u0439 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0430\u043f\u043b\u0435\u0442\u044b (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u0433\u0438 object, embed \u0438 applet)
+HTMLmoreThenOne=\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e ({0}) \u0430\u043f\u043b\u0435\u0442\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439. \u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c ''all'' \u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c.
+
+# icedtea-web man (note, spaces are important due to man pages markup
+ITWintroL1={0}\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0430\u043f\u043b\u0435\u0442\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Java, \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Java Web Start, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 NetX.
+ITWintroL2=NetX \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u043e \u0441\u0435\u0442\u0438, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043f\u043b\u0435\u0442\u044b \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Java. \u041f\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0445 \u0430\u043f\u043b\u0435\u0442\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b itw-settings.
+ITWintroL3={0} \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f {1} \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432.
+ITWintroUrlCaption= \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u044b Java
+BFileInfoAuthors=\u0418\u043c\u0435\u043d\u0430 \u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 AUTHORS \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 IcedTea-Web.
+BFileInfoCopying=\u041f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 GPLv2 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 COPYING \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 IcedTea-Web.
+BFileInfoNews=\u041d\u043e\u0432\u043e\u0441\u0442\u0438 \u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 NEWS \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 IcedTea-Web.
+ITWdescO1title=\u041c\u043e\u0434\u0443\u043b\u0438
+ITWdescO1text=\u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 JNLP.
+ITWdescO2title=\u042d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u044c
+ITWdescO2text=\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u043e\u0431\u0449\u0435\u0439 JVM.
+ITWdescO3title=\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a
+ITWdescO3text=\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 \u043a\u044d\u0448\u0430.
+ITWdescO4title=\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c
+ITWdescO4text=\u0417\u0430\u043f\u0443\u0441\u043a \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.
+ITWdescO5title=\u0410\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435
+ITWdescO5text=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.
+ITWdescO6title=\u0421\u0435\u0442\u0435\u0432\u043e\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435
+ITWdescO6text=\u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435, \u0430 \u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u043e\u0432.
+ITWdescO7title=\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434
+ITWdescO7text=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f GNU.
+ITWdescL1=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 {0} \u0438 {1}.
+ITWdescWikiUrlTitle=\u0412\u0438\u043a\u0438-\u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 IcedTea
+ITWdescItwWikiUrlTitle=\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 IcedTea-Web
+ITWdescL2=\u041f\u043e\u043c\u043e\u0449\u044c \u043f\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u043c \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 IcedTea-Web \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c {0} .
+ITWdescIssuesUrlTitle=\u0437\u0434\u0435\u0441\u044c
+ITWdescL3=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 NetX:
+ITWoptionsL1=\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e {0} \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443 IcedTea \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0430 \u0412\u0438\u043a\u0438-\u0441\u0430\u0439\u0442\u0435.
+ITWoptionsQuickStartUrlCaption=\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a
+ITWoptionsCodeUrlUrlCaption=\u0421\u0442\u0438\u043b\u044c \u043a\u043e\u0434\u0430
+ITWoptionsL2=\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e {0} \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 {1} \u043f\u043e IcedTea-Web \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b. \u041f\u0430\u0442\u0447\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u0438 {2} \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 {3}
+ITWoptionsEclipseUrlCaption=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Eclipse
+ITWoptionsReproducersUrlCaption=\u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a
+ITWoptionsDistroUrlCaption=\u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438
+ITWoptionsL3=\u0423\u0447\u0430\u0441\u0442\u0438\u0435:  
+
+# policyeditor man (note, spaces (especially the one around markup) are important due to man pages markup). Only bold  tag is now recognized by ReplacingTextFormatter.
+PEintro= - \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f <B>javaws <B>\u0438 lt;Bgt;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430lt;/Bgt;
+PEsynopseP1=policy_file
+PEsynopseP2=url
+PEdescL1=\u2014 \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439<B> javaws </B>\u0438 <B> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 IcedTea-Web. </B>\u041e\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443 <B> \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 JDK (JDK Policy Tool). </B>\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0438 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 (Policy Tool), \u0430 \u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor).
+PEdescL2=\u0415\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0444\u0430\u0439\u043b \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043a\u0430\u043a \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438.
+PEexampleL1=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
+PEexampleL2=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0435\u0437 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430.
+
+
+# javaws man (note, spaces (especially the one around markup) are important due to man pages markup). Only bold  tag is now recognized by ReplacingTextFormatter.
+JWSintro= - \u043a\u043b\u0438\u0435\u043d\u0442 Java Web Start 
+JWSdescL1=\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 JNLP. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0430\u0439\u043b JNLP (Java Network Launch Protocol, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Java) \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Java \u0438\u043b\u0438 \u0430\u043f\u043b\u0435\u0442\u0430 Java. \u042d\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f {0}\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 IcedTea, \u043e\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 NetX.
+JWSdescL2=\u0424\u0430\u0439\u043b JNLP - \u044d\u0442\u043e \u0444\u0430\u0439\u043b XML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Java \u0438\u043b\u0438 \u0430\u043f\u043b\u0435\u0442 Java.
+JWSoptionsL1=\u041f\u0440\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u043e\u043f\u0446\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 .jnlp \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043e\u043f\u0446\u0438\u0438 -jnlp, \u043e\u043f\u0446\u0438\u0438 \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0441 \u043e\u043f\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442. \u0424\u0430\u0439\u043b .html, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0444\u0430\u0439\u043b .jnlp, \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0446\u0438\u0438 -html.
+JWSoptionsL2=\u0424\u0430\u0439\u043b JNLP \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e URL-\u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u043b\u0438\u0431\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c.
+JWSoptionsL3=\u0424\u0430\u0439\u043b JNLP \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 (\u043a\u0430\u043a \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u043f\u043e\u0441\u043b\u0435 -jnlp \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b .html).
+JWSoptionsTitle1=\u041e\u043f\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430:
+JWSoptionsTitle2=\u041e\u043f\u0446\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f:
+JWSexampleL1=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0441\u043f\u0440\u0430\u0432\u043a\u0443.
+JWSexampleL2=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435.
+JWSexampleL3=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 {0}, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0437 {1}, \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044f \u0435\u0433\u043e, \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438, \u043d\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0439 \u043e\u0434\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435.
+
+# Boot options, message should be shorter than this ---------------->
+BOUsage=[-run-options] \u0444\u0430\u0439\u043b JNLP
+BOUsage2=[-control-options]
+BOJnlp= \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 JNLP \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u0444\u0430\u0439\u043b).
+BOHtml= \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 HTML \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u0444\u0430\u0439\u043b). \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 ALL \u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 1 2 5), \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e.
+BOArg= \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c.
+BOParam= \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0430\u043f\u043b\u0435\u0442\u0430 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c.
+BOProperty= \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c.
+BOUpdate= \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.
+BOLicense= \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e GPL \u0438 \u0432\u044b\u0439\u0442\u0438.
+BOVerbose= \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434.
+BOAbout= \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.
+BOVersion= \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0432\u0435\u0440\u0441\u0438\u044e IcedTea-Web \u0438 \u0432\u044b\u0439\u0442\u0438.
+BONosecurity= \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f deployment.security.itw.ignorecertissues
+BONoupdate= \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.
+BOHeadless= \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043a\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.
+BOStrict= \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0444\u0430\u0439\u043b\u0430 JNLP.
+BOViewer= \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.
+BOXml= \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a XML \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 JNLP.
+BOredirect= \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 HTTP.
+BXnofork= \u041d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e JVM.
+BXclearcache= \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f JNLP.
+BXignoreheaders= \u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 JAR.
+BXoffline= \u0417\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 ITW. \u0411\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u044d\u0448. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.
+BOHelp1= \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438.
+BOHelp2= \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435.
+BOTrustnone= \u041d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u0430\u0451\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b.
+
+# Itweb-settings boot commands
+IBOList=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 IcedTea-Web \u0438 \u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.
+IBOGet=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.
+IBOInfo=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430.
+IBOSet=\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.
+IBOResetAll= \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a \u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c.
+IBOReset=\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a \u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c.
+IBOCheck=\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.
+
+PBOFile=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c. \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0438\u043c \u0444\u043b\u0430\u0433\u043e\u043c, \u044d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f (\u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u043d \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433). \u042d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 (Policy Tool).
+PBODefaultFile=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u043e\u0442 \u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f IcedTea-Web \u0434\u043b\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u0445 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0438\u043d\u043e\u0435.
+PBOCodebase=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0430\u043f\u043b\u0435\u0442\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430; \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d.
+PBOSignedBy=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430; \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d.
+PBOPrincipals=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0440\u044b \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430/\u0438\u043c\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 (\u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c) \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430; \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d.
+
+# Option Parser
+OPUnevenParams=\u0414\u043b\u044f \u043e\u043f\u0446\u0438\u0438 {0} \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c \u0447\u0451\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.
+
+# NumberOfArguments descriptions.
+NOAnone=\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f
+NOAone=\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442
+NOAonemore=\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432
+NOAevennumber=\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0451\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0433\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 param=value \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430
+
+# Allowed man sections
+manNAME=\u0418\u041c\u042f
+manSYNOPSIS=\u041e\u0411\u0417\u041e\u0420
+manDESCRIPTION=\u041e\u041f\u0418\u0421\u0410\u041d\u0418\u0415
+manOPTIONS=\u041e\u041f\u0426\u0418\u0418
+manCOMMANDS=\u041a\u041e\u041c\u0410\u041d\u0414\u042b
+manEXAMPLES=\u041f\u0420\u0418\u041c\u0415\u0420\u042b
+manFILES=\u0424\u0410\u0419\u041b\u042b
+manBUGS=\u041e\u0428\u0418\u0411\u041a\u0418
+manAUTHOR=\u0410\u0412\u0422\u041e\u0420
+manSEE_ALSO=\u0421\u041c\u041e\u0422\u0420\u0418\u0422\u0415 \u0422\u0410\u041a\u0416\u0415
+
+# Cache
+CAutoGen=\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 - \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0439\u0442\u0435
+CNotCacheable={0} \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c
+CDownloading=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430
+CComplete=\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e
+CChooseCache=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u044d\u0448\u0430...
+CChooseCacheInfo=NetX \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u044d\u0448\u0430.
+CChooseCacheDir=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u044d\u0448\u0430
+CCannotClearCache=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0437\u0436\u0435. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440(\u044b) \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f JNLP. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Java. \\\n \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e javaws -Xclearcache \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 itw-settings \u041a\u044d\u0448 -> \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b -> \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c
+CFakeCache=\u041a\u044d\u0448 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435.
+CFakedCache=\u041f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043a\u044d\u0448 \u0431\u044b\u043b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d. \u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c ''javaws -Xclearcache'' \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u0440\u0435\u0435. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c itw-settings \u041a\u044d\u0448 -> \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b -> \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c
+
+# extended access warning pane 
+EXAWdesktopWants=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 (\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438).
+EXAWdesktopDontWants=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 (\u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c).
+EXAWsubmenu=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u0432 \u043c\u0435\u043d\u044e (\u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e - {0}).
+EXAWmenuWants=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u0432 \u043c\u0435\u043d\u044e (\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438).
+EXAWmenuDontWants=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u0432 \u043c\u0435\u043d\u044e (\u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c).
+EXAWsettingsInfo=\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: {0}. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432 itweb-settings \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 {1}.
+EXAWsettingsManage=\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u043c\u0435\u043d\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432 itweb-settings \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 {0}.
+EXAWrememberByApp=\u041f\u043e\u043c\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
+EXAWrememberByPage=\u041f\u043e\u043c\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430
+EXAWdontRemember=\u041d\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c
+EXAWrememberByAppTooltip=<html>\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f</html>
+EXAWrememberByPageTooltip=<html>\u0412\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043f\u0440\u0438\u043c\u0443\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439</html>
+EXAWdontRememberTooltip=<html>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0445\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430</html>
+EXAWbrowser=\u0431\u0440\u0430\u0443\u0437\u0435\u0440 (\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430)
+EXAWgenjnlp=jnlp \u0441\u043e\u0437\u0434\u0430\u043d
+EXAWjnlphref=jnlp href
+EXAWhtml=javaws html
+EXAWfixhref=\u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 jnlp-href
+EXAWbrowserTolltip=<html>\u042f\u0440\u043b\u044b\u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430<br> <li>\u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u044f\u0440\u043b\u044b\u043a \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0441 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439</li> <li>\u0415\u0441\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u044d\u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043e\u043f\u0446\u0438\u044f</li></html>
+EXAWbrowsersTolltip=<html>\u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 (\u0437\u0430\u0442\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 IcedTea-Web)<br> <li>\u0411\u044b\u043b \u0437\u0430\u0434\u0430\u043d \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e</li> <li>\u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440</li></html>
+EXAWgeneratedTolltip=<html><li>\u0424\u0430\u0439\u043b JNLP \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b</li> <li>\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0440\u043b\u044b\u043a \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d, javaws \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b JNLP</li> <li>\u0417\u0430\u0442\u0435\u043c \u044d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d <b>\u0431\u0435\u0437</b> \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430</li><li>\u042d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e.</li></html>
+EXAWhrefTolltip=<html>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0444\u0430\u0439\u043b JNLP, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br> <li>\u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b JNLP \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.</li> <li>Javaws \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0438 \u044d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f <b>\u0432\u043d\u0435</b> \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430</li> <li>\u042d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442</li></html>
+EXAWhtmlTolltip=<html>\u041f\u0443\u0442\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f -html, javaws \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c html \u0438 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0430\u043f\u043b\u0435\u0442, \u0438 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u043d\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430<br> <li>\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c</li> <li>\u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e</li></html>
+EXAWfixTolltip=<html>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b JNLP, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0430\u043f\u043b\u0435\u0442, \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 JNLP<br> <li>\u042d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442)</li></html>
+
+# Security
+SFileReadAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u043a {0}. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435?
+SFileWriteAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043a {0}. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435?
+SDesktopShortcut=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 \u0438 / \u0438\u043b\u0438 \u0432 \u043c\u0435\u043d\u044e. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435?
+SSigUnverified=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443.
+SSigVerified=\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443.
+SSignatureError=\u0412 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443.
+SUntrustedSource=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435 \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443.
+SWarnFullPermissionsIgnorePolicy=\u0418\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043b\u044e\u0431\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 Java \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b.
+STrustedSource=\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c.
+SClipboardReadAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435?
+SClipboardWriteAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435?
+SPrinterAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0443. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435?
+SNetworkAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 {0}. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435?
+SNoAssociatedCertificate=<\u043d\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430>
+SUnverified=(\u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e)
+SAlwaysTrustPublisher=\u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f
+SHttpsUnverified=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c HTTPS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430.
+SRememberOption=<b>\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e?</b>
+SRememberAppletOnly=\u0414\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u0430
+SRememberCodebase=\u0414\u043b\u044f \u0441\u0430\u0439\u0442\u0430 <u>{0}</u>
+SUnsignedSummary=\u041d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Java \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a
+SUnsignedDetail=\u041d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a:<br/>&nbsp;&nbsp;<u><a href="{0}" >{0}</a></u><br/>\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441:<br/>&nbsp;&nbsp;<u><a href="{1}" >{1}</a></u><br/><br/><b>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0442\u0435\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435.</b> 
+SUnsignedAllowedBefore=<font color="green">\u0412\u044b \u0443\u0436\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 - ({0}).</font>
+SUnsignedRejectedBefore=<font color="red">\u0412\u044b \u0443\u0436\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u2014 ({0}).</font>
+SUnsignedQuestion=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043f\u043b\u0435\u0442\u0430?
+SPartiallySignedSummary=\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.
+SPartiallySignedDetail=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0430\u043a \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435, \u0442\u0430\u043a \u0438 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0443, \u043d\u043e \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u043c.
+SPartiallySignedQuestion=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435?
+SAuthenticationPrompt=\u0421\u0435\u0440\u0432\u0435\u0440 {0} \u043d\u0430 {1} \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u041e\u043d \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 "{2}"
+SJNLPFileIsNotSigned=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0444\u0430\u0439\u043b JNLP.
+STrustedOnlyAttributeFailure=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043b\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 Trusted-Only \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0432 \u0441\u0432\u043e\u0451\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435. {0} \u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439: {1}. \u042d\u0442\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e.
+STOAsignedMsgFully= \u0410\u043f\u043b\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d
+STOAsignedMsgAndSandbox= \u0410\u043f\u043b\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d
+STOAsignedMsgPartiall= \u0410\u043f\u043b\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e
+STempNetwork=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f
+STempReadFilesAndProperties=\u0414\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c
+STempWriteFilesAndProperties=\u0414\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e \u0432\u0441\u0435\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c
+STempReflectionAndExternal=Java Reflection (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435) \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u043a\u043e\u0434\u0443
+STempAllMedia=\u0412\u0441\u044f \u0441\u0440\u0435\u0434\u0430 (\u043f\u0435\u0447\u0430\u0442\u044c, \u0430\u0443\u0434\u0438\u043e, \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430)
+
+# Security - used for the More Information dialog
+SBadKeyUsage=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 KeyUsage \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430.
+SBadExtendedKeyUsage=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 ExtendedKeyUsage \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430.
+SBadNetscapeCertType=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 NetscapeCertType \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430.
+SHasExpiredCert=\u0421\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438\u0441\u0442\u0451\u043a.
+SHasExpiringCert=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432.
+SNotYetValidCert=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0449\u0451 \u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d.
+SUntrustedCertificate=\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430.
+STrustedCertificate=\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430.
+SCNMisMatch=\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430: "{0}"<br/>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: "{1}"
+SRunWithoutRestrictions=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0431\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439  \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 Java.
+SCertificateDetails=\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0435
+
+# Security - certificate information
+SIssuer=\u0418\u0437\u0434\u0430\u0442\u0435\u043b\u044c
+SSerial=\u0421\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440
+SMD5Fingerprint=\u041e\u0442\u043f\u0435\u0447\u0430\u0442\u043e\u043a MD5
+SSHA1Fingerprint=\u041e\u0442\u043f\u0435\u0447\u0430\u0442\u043e\u043a SHA1
+SSignature=\u041f\u043e\u0434\u043f\u0438\u0441\u044c
+SSignatureAlgorithm=\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0438
+SSubject=\u0421\u0443\u0431\u044a\u0435\u043a\u0442
+SValidity=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c
+
+# Certificate Viewer
+CVCertificateViewer=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b
+CVCertificateType=\u0422\u0438\u043f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430
+CVDetails=\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438
+CVExport=\u042d\u043a\u0441\u043f\u043e\u0440\u0442
+CVExportPasswordMessage=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0430:
+CVImport=\u0418\u043c\u043f\u043e\u0440\u0442
+CVImportPasswordMessage=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u0443:
+CVIssuedBy=\u041a\u0435\u043c \u0432\u044b\u0434\u0430\u043d
+CVIssuedTo=\u041a\u043e\u043c\u0443 \u0432\u044b\u0434\u0430\u043d
+CVPasswordTitle=\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f
+CVRemove=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+CVRemoveConfirmMessage=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442?
+CVRemoveConfirmTitle=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 - \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442?
+CVUser=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c
+CVSystem=\u0421\u0438\u0441\u0442\u0435\u043c\u0430
+
+# KeyStores: see KeyStores.java
+KS=\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439
+KSCerts=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b
+KSJsseCerts=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b JSSE
+KSCaCerts=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0426\u0421
+KSJsseCaCerts=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b JSSE \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438
+KSClientCerts=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430
+
+# KeyStores: set password
+KSresultUntilNow=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043e {0} \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0439 {1}. \u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438: {2}
+KSinvalidPassword=\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c?
+KSheadlesWarning=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u041a. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0412\u0412\u041e\u0414 \u0432 \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435.
+KSnwPassHelp=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u041a. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435.
+HeadlessDialogues=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 `exit`, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c ITW, \u0438\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u0432\u0435\u0442\u043e\u043c "R " \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 "RC " \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0439 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430.
+AWPstdoutHint1=\u041c\u043e\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 YES/NO \u0438\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 AccessWarningPaneComplexReturn.readValue.
+AWPstdoutHint2=\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: YES,D(not_found_browser,false,null,true,)M(firefox,false,null,false,)
+AWPstdoutHint3=\u0433\u0434\u0435: global_answer,desktop_shortcut(browser_bin,fixJnlpHref,type:null_or_one_of{0},really_create)same_for_menu...
+PAPstdinInfo=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0418\u041c\u042f \u043f\u0440\u043e\u0431\u0435\u043b \u041f\u0410\u0420\u041e\u041b\u042c. \u0412 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u0435\u043b\u044b:
+HDwrongValue=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435?
+
+# HTTP 511
+Headless511line0=*** \u041d\u0430\u0439\u0434\u0435\u043d\u044b URL-\u0430\u0434\u0440\u0435\u0441\u0430 ***
+Headless511line1=ITW \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 511 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.
+Headless511line2=\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u0417\u0430\u0442\u0435\u043c \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043e\u0442\u0432\u0435\u0442.
+Headless511line3=\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Xless \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 Lynx \u0438\u043b\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Xfull -browser less \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `javaws {0}` ITW.
+Exit511=\u0412\u044b\u0439\u0442\u0438 \u0438\u0437 IcedTea-Web
+Ignore511=\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0430\u043d\u0441\u0435
+Header511=<h2>HTTP 511 \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f</h2> <p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435</p><a href=''{0}''>\u0427\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 511 \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<a/>
+
+# Browser
+BrowserGoTo=\u041f\u0435\u0440\u0435\u0439\u0442\u0438:
+BrowserSource=\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a
+BrowserSocket=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442
+BrowserSocketHelp=<html>\u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e, \u0434\u043b\u044f URL \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442. \u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.<br/>\u041d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c\u0441\u044f</html>
+BrowserOpenExternal=\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435
+BrowserOpeninternal=\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435
+BrowserCopyUrlToClip=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430
+BrowserClearAll=\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435
+BrowserWarningLine1=\u041f\u0420\u0415\u0414\u0423\u041f\u0420\u0415\u0416\u0414\u0415\u041d\u0418\u0415: \u044d\u0442\u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 HTML 3.2, \u043e\u043d \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446!
+BrowserWarningLine2=\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439!
+BrowserArg=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438!
+
+# Deployment Configuration messages
+DCIncorrectValue=\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e "{0}" \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 "{1}". \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f {2}.
+DCInternal=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430: {0}
+DCSourceInternal=<\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439>
+DCUnknownSettingWithName=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e "{0}".
+DCmaindircheckNotexists=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 {0}.
+DCmaindircheckNotdir=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 {0} \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c.
+DCmaindircheckRwproblem=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435/\u0437\u0430\u043f\u0438\u0441\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 {0}.
+
+# Value Validator messages. Messages should follow "Possible values ..." 
+VVPossibleValues=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f {0}
+VVPossibleBooleanValues={0} \u0438\u043b\u0438 {1}
+VVPossibleFileValues=\u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443
+VVPossibleRangedIntegerValues=\u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 {0} \u0434\u043e {1} (\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e)
+VVPossibleUrlValues=\u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, http://icedtea.classpath.org/hg/)
+VVPossibleBrowserValues=\u0417\u0430\u0434\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u0438\u043b\u0438 \u043b\u044e\u0431\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0443\u044e URL. \u0415\u0441\u043b\u0438 \u043f\u0443\u0442\u044c \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u044b, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f URL. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: firefox \u0438\u043b\u0438 (windows) {0}, microsoft-edge, (mac) safari, \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0430\u043a xdg-open (linux). \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c wget, curl \u0438\u043b\u0438 lynx. Javaws \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 JNLP-\u0444\u0430\u0439\u043b. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 {4}. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u044b ${1} \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0436\u0435 \u0446\u0435\u043b\u0438. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e {2}. \u041d\u043e \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 {3}, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441, \u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
+VVBrowserVerificationPass=\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e: {0}
+VVBrowserVerificationFail=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b!
+VVBrowserSaveNotAllowed=\u0412\u044b \u0437\u0430\u0434\u0430\u043b\u0438 {0} \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f {1}. \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430.
+VVBrowserSaveAllowed=\u0412\u0430\u0448 \u0432\u044b\u0431\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u043a\u0430\u043a {0}
+
+# Control Panel - Main
+CPMainDescriptionShort=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 IcedTea-Web
+CPMainDescriptionLong=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (IcedTeaNPPlugin) \u0438 javaws (NetX)
+
+# Control Panel - Tab Descriptions
+CPAboutDescription=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f IcedTea.
+CPNetworkSettingsDescription=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f IcedTea-Web \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u043a\u0441\u0438.
+CPTempInternetFilesDescription=Java \u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435.
+CPJRESettingsDescription=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Java \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 Java.
+CPCertificatesDescription=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0441\u043b\u0443\u0436\u0430\u0442 \u0434\u043b\u044f \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0446\u0435\u043d\u0442\u0440\u043e\u0432 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.
+CPSecurityDescription=\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.
+CPDebuggingDescription=\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435
+CPDesktopIntegrationDescription=\u0423\u043a\u0430\u0436\u0438\u0442\u0435, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044f\u0440\u043b\u044b\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435.
+CPDesktopIntegrationShowIntegrations=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u043a\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c \u0438 \u043c\u0435\u043d\u044e
+CPDesktopIntegrationLinuxOnly=\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Linux. \u041f\u0440\u0438\u043d\u043e\u0441\u0438\u043c \u0438\u0437\u0432\u0438\u043d\u0435\u043d\u0438\u044f
+CPJVMPluginArguments=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b JVM \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f.
+CPJVMitwExec=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 JVM \u0434\u043b\u044f IcedTea-Web \u2014 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f OpenJDK
+CPJVMitwExecValidation=\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 JVM \u0434\u043b\u044f IcedTea-Web
+CPJVMPluginSelectExec=\u041f\u043e\u0438\u0441\u043a JVM \u0434\u043b\u044f IcedTea-Web
+CPJVMnone=\u041d\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u044f
+CPJVMvalidated=\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u044f
+CPJVMvalueNotSet=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e. \u0411\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f JVM.
+CPJVMnotLaunched=\u041e\u0448\u0438\u0431\u043a\u0430, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438.
+CPJVMnoSuccess=\u041e\u0448\u0438\u0431\u043a\u0430, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0432\u044b\u0432\u043e\u0434\u0435, \u043d\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 Java \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.
+CPJVMopenJdkFound=\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 OpenJDK
+CPJVMjdk5=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK5. JDK7 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.
+CPJVMjdk6=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK6. JDK7 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.
+CPJVMjdk7=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK7. JDK7 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.
+CPJVMjdk8=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK8. JDK8 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.
+CPJVMjdk9=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK9 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f. JDK8 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0412 JDK9 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e.
+CPJVMjdk=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u041d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0439. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0435 \u0438\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438).
+CPJVMoracleFound=\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 Java Oracle
+CPJVMibmFound=\u0425\u043e\u0440\u043e\u0448\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 Java IBM
+CPJVMgijFound=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d gij
+CPJVMstrangeProcess=\u041f\u0443\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b, \u043d\u043e \u043e\u043d \u043d\u0435 \u0431\u044b\u043b \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e Java \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438.
+CPJVMnotDir=\u041e\u0448\u0438\u0431\u043a\u0430. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c.
+CPJVMisDir=\u041e\u041a. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c.
+CPJVMnoJava=\u041e\u0448\u0438\u0431\u043a\u0430, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 bin/java.
+CPJVMjava=\u041e\u041a. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 bin/java.
+CPJVMnoRtJar=\u041e\u0448\u0438\u0431\u043a\u0430. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 lib/rt.jar
+CPJVMrtJar=OK. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 lib/rt.jar.
+CPJVMPluginAllowTTValidation=\u041d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c JRE
+CPJVMNotokMessage1=\u0412\u044b \u0432\u0432\u0435\u043b\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 JDK: <ul><li><span color=''purple''>{0}</span></li></ul> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:
+CPJVMNotokMessage2=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f: <blockquote> * \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b<br/> * \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043e\u0442 OpenJDK</blockquote>\u0421 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u043c JDK, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c IcedTea-Web.<br/><span color=''orange''>\u0415\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0431\u043e\u0439</span>, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <u>{0}</u> \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:  <ul><li><span color=''blue''>{1}</span></li></ul> \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 <span color=''green''><i>\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430</i></span> \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b OpenJDK \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0412 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u0441\u0432\u043e\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u0445.
+CPJVMconfirmInvalidJdkTitle=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 JDK
+CPJVMconfirmReset=\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e?
+CPPolicyDetail=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 Java \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b.
+CPPolicyTooltip=\u041e\u0442\u043a\u0440\u044b\u0442\u044c {0} \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438
+CPPolicyEditorNotFound=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e policytool \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 PATH.
+
+# Control Panel - Buttons
+CPButAbout=\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435...
+CPButNetworkSettings=\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b...
+CPButSettings=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b...
+CPButView=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c...
+CPButCertificates=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b...
+CPButSimpleEditor=\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440
+CPButAdvancedEditor=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440
+
+# Control Panel - Headers
+CPHead=\u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f IcedTea-Web
+CPHeadAbout=\u00a0\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u00a0IcedTea-Web\u00a0
+CPHeadNetworkSettings=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u0435\u0442\u0438\u00a0
+CPHeadTempInternetFiles=\u00a0\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u00a0
+CPHeadJRESettings=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Java\u00a0
+CPHeadCertificates=\u00a0\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b\u00a0
+CPHeadDebugging=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0438\u00a0
+CPHeadDesktopIntegration=\u00a0\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c\u00a0
+CPHeadSecurity=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438\u00a0
+CPHeadJVMSettings=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b JVM\u00a0
+CPHeadPolicy=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438\u00a0
+
+# Control Panel - Tabs
+CPTabAbout=\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 IcedTea-Web
+CPTabCache=\u041a\u044d\u0448
+CPTabCertificate=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b
+CPTabClassLoader=\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432
+CPTabDebugging=\u041e\u0442\u043b\u0430\u0434\u043a\u0430
+CPTabDesktopIntegration=\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c
+CPTabMenuShortcuts=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0440\u043b\u044b\u043a\u0430\u043c\u0438, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043c\u0435\u043d\u044e
+CPTabNetwork=\u0421\u0435\u0442\u044c
+CPTabRuntimes=\u0421\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f
+CPTabSecurity=\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c
+CPTabJVMSettings=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b JVM
+CPTabPolicy=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438
+
+# Control Panel - AboutPanel
+CPAboutInfo=\u042d\u0442\u043e \u043f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f deployments.properties.<br/>\u0427\u0430\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<br/>\u0418\u0437 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Java \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e OpenJDK.<br/>
+
+# Control Panel - AdvancedProxySettings
+APSDialogTitle=\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Settings
+APSServersPanel=\u0421\u0435\u0440\u0432\u0435\u0440\u044b
+APSProxyTypeLabel=\u0422\u0438\u043f
+APSProxyAddressLabel=\u0410\u0434\u0440\u0435\u0441 \u043f\u0440\u043e\u043a\u0441\u0438
+APSProxyPortLabel=\u041f\u043e\u0440\u0442 \u043f\u0440\u043e\u043a\u0441\u0438
+APSLabelHTTP=HTTP
+APSLabelSecure=\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e
+APSLabelFTP=FTP
+APSLabelSocks=Socks
+APSSameProxyForAllProtocols=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432.
+APSExceptionsLabel=\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f
+APSExceptionsDescription=\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441
+APSExceptionInstruction=\u041e\u0442\u0434\u0435\u043b\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u043e\u0447\u043a\u043e\u0439 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.
+
+# Control Panel - DebugginPanel
+CPDebuggingPossibilites=\u0416\u0443\u0440\u043d\u0430\u043b \u0432\u044b\u0432\u043e\u0434\u043e\u0432
+DPEnableLogging=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443
+DPEnableLoggingHint=\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u042d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442 -verbose \u0438\u043b\u0438 ICEDTEAPLUGIN_DEBUG=true
+DPEnableHeaders=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438
+DPEnableHeadersHint=\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438
+DPEnableFile=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435
+DPEnableLegacyFileLog=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c java.util.logging \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0444\u0430\u0439\u043b
+DPEnableClientAppFileLogging=\u0422\u0430\u043a\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0432\u044b\u0432\u043e\u0434\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439
+DPEnableLegacyFileLogHint=\u0415\u0441\u043b\u0438 java.util.logging \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432 \u0440\u0435\u0434\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430
+DPEnableClientAppFileLoggingHint=\u0416\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 java.util.logging on
+CPFilesLogsDestDir=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 \u0444\u0430\u0439\u043b\u043e\u0432
+CPFilesLogsDestDirResert=\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
+DPEnableFileHint=\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 {0}
+DPEnableStds=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b
+DPEnableStdsHint=\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0432\u044b\u0432\u043e\u0434\u0430\u0445
+DPEnableSyslog=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u044b
+DPEnableSyslogHint=\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0445
+DPDisable=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c
+DPHide=\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435
+DPShow=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435
+DPShowPluginOnly=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f
+DPShowJavawsOnly=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 javaws
+DPJavaConsole=\u041a\u043e\u043d\u0441\u043e\u043b\u044c Java
+DPJavaConsoleDisabledHint=\u041a\u043e\u043d\u0441\u043e\u043b\u044c Java \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 itweb-settings \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u0438\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u0438.
+
+# PolicyEditor
+PETitle=\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor)
+PETitleWithPath=\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) - {0}
+PETitleWithChangesMade={0} *
+PEReadProps=\u0427\u0442\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432
+PEReadPropsDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430
+PEWriteProps=\u0417\u0430\u043f\u0438\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432
+PEWritePropsDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c (\u043f\u0435\u0440\u0435)\u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432
+PEReadFiles=\u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEReadFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435
+PEWriteFiles=\u0417\u0430\u043f\u0438\u0441\u044c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b
+PEWriteFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435
+PEDeleteFiles=\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEDeleteFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435
+PEReadSystemFiles=\u0427\u0442\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEReadSystemFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435
+PEWriteSystemFiles=\u0417\u0430\u043f\u0438\u0441\u044c \u0432\u0441\u0435\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEWriteSystemFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435
+PEReadTempFiles=\u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEReadTempFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEWriteTempFiles=\u0417\u0430\u043f\u0438\u0441\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b
+PEWriteTempFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEDeleteTempFiles=\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEDeleteTempFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+PEAWTPermission=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u043a\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435
+PEAWTPermissionDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u043a\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 AWT
+PEClipboard=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430
+PEClipboardDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043d\u0435\u0433\u043e
+PENetwork=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0442\u0438
+PENetworkDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f
+PEPrint=\u041f\u0435\u0447\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432
+PEPrintDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043f\u0435\u0447\u0430\u0442\u0438
+PEPlayAudio=\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0432\u0443\u043a\u043e\u0432
+PEPlayAudioDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0432\u0443\u043a\u043e\u0432, \u043d\u043e \u043d\u0435 \u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u044c
+PERecordAudio=\u0417\u0430\u043f\u0438\u0441\u044c \u0430\u0443\u0434\u0438\u043e
+PERecordAudioDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0430\u0443\u0434\u0438\u043e, \u043d\u043e \u043d\u0435 \u0435\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435
+PEReflection=Java Reflection (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435)
+PEReflectionDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a API Java Reflection (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435)
+PEClassLoader=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432
+PEClassLoaderDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0443 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 (\u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 Reflection)
+PEClassInPackage=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0430\u043a\u0435\u0442\u0430\u043c
+PEClassInPackageDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 (\u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 Reflection)
+PEDeclaredMembers=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432
+PEDeclaredMembersDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 Java (\u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 Reflection)
+PEAccessThreads=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+PEAccessThreadsDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u043a, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438
+PEAccessThreadGroups=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+PEAccessThreadGroupsDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u043a, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+PEExec=\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434
+PEExecDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434
+PEGetEnv=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b
+PEGetEnvDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b
+PECouldNotOpen=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438
+PECouldNotSave=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438
+PEAddEntry=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c...
+PERemoveEntry=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+PEEntryPrompt=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438
+PEAddPrincipal=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430
+PERemovePrincipal=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430
+PEEditPrincipal=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430
+PEGlobalSettings=\u0412\u0441\u0435 \u0430\u043f\u043b\u0435\u0442\u044b
+PESaveChanges=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c?
+PEChangesSaved=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b
+PECheckboxLabel=\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f
+PEEntriesLabel=\u0417\u0430\u043f\u0438\u0441\u0438
+PEFileMenu=\u0424\u0430\u0439\u043b
+PENewMenuItem=\u0421\u043e\u0437\u0434\u0430\u0442\u044c
+PEOpenMenuItem=\u041e\u0442\u043a\u0440\u044b\u0442\u044c...
+PEOpenDefaultMenuItem=\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
+PESaveMenuItem=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c
+PESaveAsMenuItem=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a...
+PEExitMenuItem=\u0412\u044b\u0439\u0442\u0438
+PEEntryMenu=\u0417\u0430\u043f\u0438\u0441\u044c
+PEAddEntryItem=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c...
+PERemoveEntryItem=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+PEModifySubmenuItem=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c
+PEModifyCodebaseItem=\u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430
+PEModifySignedByItem=\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e
+PEModifyPrincipalsItem=\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438
+PECopyEntryItem=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c
+PEPasteEntryItem=\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c...
+PEModifyCodebase=\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430 \u043d\u0430:
+PEModifyPrincipals=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432:
+PEModifySignedBy=\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f SignedBy (\u043a\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e) \u043d\u0430:
+PEPasteEntry=\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0439 \u043a\u043e\u0434\u0430:
+PEViewMenu=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440
+PECustomPermissionsItem=\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f...
+PECodebaseInputLabel=URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430:
+PESignedByInputLabel=SignedBy (\u043a\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e):
+PEPrincipalsInputLabel=\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438:
+PEPrincipalClassNameInputLabel=\u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430:
+PEPrincipalPrincipalNameInputLabel=\u0418\u043c\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430:
+PEFileModified=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430
+PEFileModifiedDetail=\u0424\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0432 {0} \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f. \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c?
+PEFileMissing=\u0424\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0411\u044b\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0442\u0435\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c.
+PEGAccessUnownedCode=\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430
+PEGMediaAccess=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0440\u0435\u0434\u0435
+PEGRightClick=\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c/\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c
+PEGReadFileSystem=\u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b
+PEGWriteFileSystem=\u0417\u0430\u043f\u0438\u0441\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443
+PEClipboardError=\u041f\u043e\u0445\u043e\u0436\u0435, \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c
+PEInvalidPolicy=\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0438: \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u043b\u044f {0} \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430
+PEInvalidIdentifier=\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435/\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u043e\u043b\u0435\u0439.
+PEIdentifierMatchesAll=\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435/\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u043e\u043b\u0435\u0439.
+PEClipboardAccessError=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430
+PEDefaultFileFilePathSpecifiedError=\u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u0431\u043e -file (\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442), \u043b\u0438\u0431\u043e -defaultfile
+PEMainArgAndFileSwitchSpecifiedError=\u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u0431\u043e -file, \u043b\u0438\u0431\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442
+PESignedByEmpty=\u041f\u043e\u043b\u0435 SignedBy (\u043a\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e) \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c
+PEInvalidUrl=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441: {0}
+
+PEHelpMenu=\u0421\u043f\u0440\u0430\u0432\u043a\u0430
+PEAboutPolicyEditorItem=\u041e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor)
+PEPolicyEditorHelpItem=\u0421\u043f\u0440\u0430\u0432\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor)
+PEHelpDialogTitle=\u0421\u043f\u0440\u0430\u0432\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor)
+PEHelpDialogContent=<html><center><h1>\u0421\u043f\u0440\u0430\u0432\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor)</h1></center>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u043c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c Java \u043f\u0443\u0442\u0451\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. <center><h2>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438</h2></center><ul><li/><b>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435:</b> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u0438 \u043c\u044b\u0448\u0438<li/><b>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430:</b> \u043f\u0443\u0442\u0451\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439<li/><b>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c:</b> \u0430\u043f\u043b\u0435\u0442\u044b \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f<li/><b>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435:</b> \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c</ul>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0445\u043e\u0447\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0430\u043f\u043b\u0435\u0442\u0443 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e Java. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442/\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0438\u043b\u0438 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0440\u0435\u0436\u0438\u043c \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435.<br><br>\u0412 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0415\u0441\u043b\u0438 \u0449\u0451\u043b\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0412\u0412\u041e\u0414 (\u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0433\u0440\u0443\u043f\u043f\u044b) \u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0438\u043b\u0438 \u0448\u0435\u0432\u0440\u043e\u043d \u043c\u0435\u043d\u044e, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u043e. \u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 \u043d\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f-\u0444\u043b\u0430\u0436\u043a\u0438. \u0427\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. </html>
+
+# Policy Editor CustomPolicyViewer
+PECPTitle=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438
+PECPListLabel=\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u043b\u044f {0}
+PECPAddButton=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c
+PECPRemoveButton=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+PECPCloseButton=\u0417\u0430\u043a\u0440\u044b\u0442\u044c
+PECPType=\u0432\u0432\u0435\u0434\u0438\u0442\u0435
+PECPTarget=\u0446\u0435\u043b\u044c
+PECPActions=\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f
+PECPPrompt=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 "\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435" \u0438\u043b\u0438 \u0437\u043d\u0430\u043a\u0438 \u043f\u0440\u0435\u043f\u0438\u043d\u0430\u043d\u0438\u044f.
+
+# PolicyEditor key mnemonics. See KeyEvent.VK_*
+PEFileMenuMnemonic=\u0424
+PEEntryMenuMnemonic=\u0417
+PEViewMenuMnemonic=\u041f
+PEHelpMenuMnemonic=\u0421
+
+PEAddEntryMnemonic=\u0414
+PEAddEntryItemMnemonic=\u0414
+PERemoveEntryMnemonic=\u0423
+PERemoveEntryItemMnemonic=\u0423
+PENewMenuItemMnemonic=\u0414
+PEOpenMenuItemMnemonic=\u041e
+PEOpenDefaultMenuItemMnemonic=\u0423
+PESaveMenuItemMnemonic=\u0421
+PEExitMenuItemMnemonic=\u0412
+PECustomPermissionsItemMnemonic=\u041d
+PECopyEntryItemMnemonic=\u041a
+PEPasteEntryItemMnemonic=\u0412
+PESaveAsMenuItemMnemonic=\u041a
+PEModifySubmenuItemMnemonic=\u0418
+PEModifyEntryCodebaseItemMnemonic=\u0417
+PEModifyEntryPrincipalsItemMnemonic=\u0423
+PEModifyEntrySignedByItemMnemonic=\u0415
+PEAboutPolicyEditorItemMnemonic=\u041a
+PEPolicyEditorHelpItemMnemonic=\u0421
+
+# See javax.swing.KeyStroke.getKeyStroke(String)
+PEAddEntryItemAccelerator=Ctrl+Shift+\u0414
+PERemoveEntryItemAccelerator=Delete
+PENewMenuItemAccelerator=Ctrl+\u0414
+PEOpenMenuItemAccelerator=Ctrl+\u041e
+PEOpenDefaultMenuItemAccelerator=Ctrl+\u0423
+PESaveMenuItemAccelerator=Ctrl+\u0421
+PESaveAsMenuItemAccelerator=Ctrl+Shift+\u041a
+PEExitMenuItemAccelerator=Ctrl+\u0412
+PECustomPermissionsItemAccelerator=Ctrl+\u041d
+PECopyEntryItemAccelerator=Ctrl+C
+PEPasteEntryItemAccelerator=Ctrl+V
+PEModifyEntryCodebaseItemAccelerator=F2
+PEModifyEntryPrincipalsItemAccelerator=Shift+F2
+PEModifyEntrySignedByItemAccelerator=Ctrl+F2
+PEAboutPolicyEditorCloseAccelerator=Ctrl+\u0412
+
+#conole itself labels
+CONSOLErungc= \u0417\u0430\u043f\u0443\u0441\u043a \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430
+CONSOLErunFinalizers= \u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f
+CONSOLErunningFinalizers= \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435....
+CONSOLEmemoryInfo= \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u0430\u043c\u044f\u0442\u0438
+CONSOLEsystemProperties= \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b
+CONSOLEclassLoaders= \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432
+CONSOLEthreadList= \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+CONSOLEthread= \u041f\u043e\u0442\u043e\u043a
+CONSOLEnoClassLoaders= \u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432
+CONSOLEmemoryMax= \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438
+CONSOLEmemoryTotal= \u041e\u0431\u0449\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438
+CONSOLEmemoryFree= \u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438
+CONSOLEClean=\u041e\u0447\u0438\u0441\u0442\u043a\u0430
+
+# console output pane labels
+COPsortCopyAllDate=\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0434\u0430\u0442\u0435 \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
+COPshowHeaders=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438:
+COPuser=\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c
+COPorigin=\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a
+COPlevel=\u0443\u0440\u043e\u0432\u0435\u043d\u044c
+COPdate=\u0434\u0430\u0442\u0430
+COPthread1=\u043f\u043e\u0442\u043e\u043a 1
+COPthread2=\u043f\u043e\u0442\u043e\u043a 2
+COPShowMessages=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f
+COPstdOut=\u0441\u0442\u0430\u043d\u0434. \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u0432\u043e\u0434\u0430
+COPstdErr=\u0441\u0442\u0430\u043d\u0434. \u043f\u043e\u0442\u043e\u043a \u043e\u0448\u0438\u0431\u043e\u043a
+COPjava=java
+COPplugin=\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c
+COPpreInit=\u043f\u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f
+COPpluginOnly=\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c
+COPSortBy=\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e
+COPregex=\u0424\u0438\u043b\u044c\u0442\u0440 \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445
+COPAsArrived=\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e (\u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438)
+COPcode=\u043a\u043e\u0434
+COPmessage=\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435
+COPSearch=\u041f\u043e\u0438\u0441\u043a
+COPautoRefresh=\u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435
+COPrefresh=\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435
+COPApply=\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c
+COPmark=\u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c
+COPCopyAllPlain=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 (\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442)
+COPCopyAllRich=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 (\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442)
+COPnext=\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439>>>
+COPprevious=<<<\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439
+COPcaseSensitive=\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440
+COPincomplete=\u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439
+COPhighlight=\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435
+COPwordWrap=\u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u043b\u043e\u0432
+COPdebug=\u043e\u0442\u043b\u0430\u0434\u043a\u0430
+COPinfo=\u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f
+COPpostInit=\u043f\u043e\u0441\u0442\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f
+COPcomplete=\u043f\u043e\u043b\u043d\u044b\u0439
+COPmatch=\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435
+COPnot=\u043d\u0435
+COPrevert=\u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f
+COPitw=IcedTea-Web
+COPclientApp=\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.
+
+# Control Panel - DesktopShortcutPanel
+DSPNeverCreate=\u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c
+DSPAlwaysAllow=\u0412\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c
+DSPAskUser=\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
+DSPAskIfHinted=\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430
+DSPAlwaysIfHinted=\u0412\u0441\u0435\u0433\u0434\u0430, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430
+
+# Control Panel - NetworkSettingsPanel
+NSDescription-1=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.
+NSDescription0=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.
+NSDescription1=\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u043a\u0441\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.
+NSDescription2=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438.
+NSDescription3=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
+NSAddress=\u0410\u0434\u0440\u0435\u0441
+NSPort=\u041f\u043e\u0440\u0442
+NSAdvanced=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e
+NSBypassLocal=\u041e\u0431\u0445\u043e\u0434 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432
+NSDirectConnection=\u041f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435
+NSManualProxy=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e
+NSAutoProxy=\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438
+NSBrowserProxy=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430
+NSScriptLocation=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f
+
+# Control Panel - SecurityGeneralPanel
+SGPAllowUserGrantSigned=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443
+SGPAllowUserGrantUntrust=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u0438\u0437 \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432
+SGPUseBrowserKeystore=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u043a\u043b\u044e\u0447\u0438 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPUsePersonalCertOneMatch=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPWarnCertHostMismatch=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441\u0430\u0439\u0442\u0430 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u0438 \u0445\u043e\u0441\u0442\u0430
+SGPShowValid=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441\u0430\u0439\u0442\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPShowSandboxWarning=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b
+SGPAllowUserAcceptJNLPSecurityRequests=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 JNLP
+SGPCheckCertRevocationList=\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043d\u0435 \u043e\u0442\u043e\u0437\u0432\u0430\u043d\u044b \u043b\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043e\u0442\u0437\u044b\u0432\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 (Certificate Revocation List, CRL) (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPEnableOnlineCertValidate=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043e\u043d\u043b\u0430\u0439\u043d (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPEnableTrustedPublisherList=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPEnableBlacklistRevocation=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u0442\u0437\u044b\u0432\u0430 \u0447\u0451\u0440\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPEnableCachingPassword=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPUseSSL2=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 ClientHello \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u0441 SSL 2.0 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPUseSSL3=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SSL 3.0 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+SGPUseTLS1=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c TLS 1.0 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f)
+
+# Control Panel - TemporaryInternetFilesPanel
+TIFPEnableCache=\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u043c\u043e\u0451\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435
+TIFPLocation=\u00a0\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u00a0
+TIFPLocationLabel=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432
+TIFPChange=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c
+TIFPDiskSpace=\u00a0\u0414\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u00a0
+TIFPCompressionLevel=\u0412\u044b\u0431\u043e\u0440 \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u0436\u0430\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 JAR
+TIFPNone=\u041d\u0435\u0442
+TIFPMax=\u041c\u0430\u043a\u0441.
+TIFPCacheSize=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043e\u0431\u044a\u0451\u043c \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (\u041c\u0411)
+TIFPDeleteFiles=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b
+TIFPViewFiles=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b...
+TIFPFileChooserChooseButton=\u0412\u044b\u0431\u0440\u0430\u0442\u044c
+TIFPLimitCacheSize=\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u044d\u0448\u0430
+TIFPCacheSizeSpinnerValueTooLargeWarning=<html><b>\u041f\u0420\u0415\u0414\u0423\u041f\u0420\u0415\u0416\u0414\u0415\u041d\u0418\u0415:</b> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e (\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e: {0} \u041c\u0411)</html>
+TIFPCacheSizeSpinnerLargeValueWarning=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e: {0} \u041c\u0411
+TIFPCacheSizeSetToNoCaching=\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b IcedTea-Web.
+TIFPCacheSizeSpinnerTooltip=\u041c\u0438\u043d\u0438\u043c\u0443\u043c: {0} \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c: {1}
+
+# Control Panel - Cache Viewer
+CVCPDialogTitle=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a \u043a\u044d\u0448\u0430
+CVCPButRefresh=\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c
+CVCPButDelete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+CVCPCleanCache=\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c
+CVCPCleanCacheTip=\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043a\u044d\u0448\u0430. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u0447\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \\\n \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e javaws -Xclearcache \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 itw-settings \u041a\u044d\u0448 -> \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b -> \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c
+CVCPColLastModified=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435
+CVCPColSize=\u0420\u0430\u0437\u043c\u0435\u0440 (\u0432 \u0431\u0430\u0439\u0442\u0430\u0445)
+CVCPColDomain=\u0414\u043e\u043c\u0435\u043d
+CVCPColType=\u0422\u0438\u043f
+CVCPColPath=\u041f\u0443\u0442\u044c
+CVCPColName=\u0418\u043c\u044f
+
+# Control Panel - desktop integration manager
+DIMtitle=\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u044f\u0440\u043b\u044b\u043a\u043e\u0432 IcedTea-Web
+DIMremoveSelected=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435
+DIMselectRelativeRecordsFromOtherColumns=\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438
+DIMreloadLists=\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c
+DIMselectAll=\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435
+DIMclearSelection=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440
+DIMdescription=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0440\u043b\u044b\u043a\u0430\u043c\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 (\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 IcedTea-Web \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c
+DIMguessedDesktop=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430.
+DIMselectionPreview=\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e
+DIMaskBeforeDelete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b: {0}?
+DIMgeneratedJnlps=\u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b JNLP
+DIMgeneratedJnlpsTooltip=\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web!
+DIMicons=\u0417\u043d\u0430\u0447\u043a\u0438
+DIMiconsTooltip=\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u043a\u0430\u043c\u0438, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 IcedTea-Web!
+DIMorphans=\u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b
+DIMorphansTooltip=\u0411\u0443\u0434\u0443\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u044f\u0440\u043b\u044b\u043a\u043e\u0432.
+DIMmenuItems=\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u043d\u044e
+DIMmenuItemsTooltip=\u0412\u0441\u0435 \u044f\u0440\u043b\u044b\u043a\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web!
+DIMdesktopItems=\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430
+DIMdesktopItemsTooltipL1=\u041d\u0435 \u0432\u0441\u0435 \u044f\u0440\u043b\u044b\u043a\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web!
+DIMdesktopItemsTooltipL2=\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:
+DIMdesktopItemsTooltipL3=\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web
+DIMdesktopItemsTooltipL4=\u0442\u0451\u043c\u043d\u043e-\u0437\u0435\u043b\u0451\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u2014 \u044d\u0442\u043e \u044f\u0440\u043b\u044b\u043a\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web
+DIMdesktopItemsTooltipL5=\u0437\u0435\u043b\u0451\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u2014 \u044d\u0442\u043e \u044f\u0440\u043b\u044b\u043a\u0438 javaws, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web
+DIMdesktopItemsTooltipL6=\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0436\u0438\u043c\u0430 `\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438`
+DIMgeneratedButton=\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435
+DIMgeneratedButtonTooltip=\u0411\u0443\u0434\u0443\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.
+DIMiconsButton=\u0437\u043d\u0430\u0447\u043a\u0438
+DIMiconsButtonTooltip=\u0411\u0443\u0434\u0443\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u043a\u0438.
+
+# Control Panel - Misc.
+CPJRESupport=\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 IcedTea-Web \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 JRE.
+CPInvalidPort=\u0423\u043a\u0430\u0437\u0430\u043d \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430.\n[\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043f\u043e\u0440\u0442\u043e\u0432: 1-65535]
+CPInvalidPortTitle=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435.
+
+# command line control panel
+CLNoInfo=\u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u044d\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u043e\u043f\u0446\u0438\u044f?).
+CLValue=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435: {0}
+CLValueSource=\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: {0}
+CLDescription=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: {0}
+CLUnknownCommand=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 {0}
+CLUnknownProperty=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 "{0}"
+CLWarningUnknownProperty=\u041f\u0420\u0415\u0414\u0423\u041f\u0420\u0415\u0416\u0414\u0415\u041d\u0418\u0415: \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 "{0}" \u2014 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e
+CLNoIssuesFound=\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b.
+CLIncorrectValue=\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e "{0}" \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 "{1}". \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f {2}.
+CLListDescription=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0438\u043c\u0451\u043d \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f IcedTea-Web
+CLGetDescription=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430
+CLSetDescription=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u044d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c
+CLResetDescription=\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\n\u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u0441\u044f IcedTea-Web, \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
+CLInfoDescription=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435
+CLCheckDescription=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b, \u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u044b IcedTea-Web
+CLUnexpectedNumberOfCommands=Itweb-settings \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443.
+
+#  splash screen related
+SPLASHerror= \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439. \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.
+SPLASH_ERROR= \u041e\u0428\u0418\u0411\u041a\u0410
+SPLASHtitle= \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435
+SPLASHvendor= \u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a
+SPLASHhomepage= \u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430
+SPLASHdescription= \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
+SPLASHClose= \u0417\u0430\u043a\u0440\u044b\u0442\u044c
+SPLASHclosewAndCopyException= \u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0435\u043a\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430
+SPLASHexOccured= \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435...
+SPLASHHome= \u0414\u043e\u043c\u043e\u0439
+SPLASHcantCopyEx= \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435
+SPLASHnoExRecorded= \u041d\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439
+SPLASHmainL1= \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 {0} \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0448\u0430\u0433\u0438 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u0430 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435
+SPLASHmainL3= \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434.
+SPLASHcloseAndCopyShorter= \u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430
+SPLASHmainL4= \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434.
+SPLASHmainL2= \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0438\u043b\u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0445. \u0415\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0430.
+SPLASHexWas= \u0418\u043c\u0435\u043b\u043e\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435:
+SPLASHcfl= \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435
+SPLASHvendorsInfo= \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
+SPLASHanotherInfo= \u0414\u0440\u0443\u0433\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f
+SPLASHdefaultHomepage= \u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a
+SPLASHerrorInInformation= \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (information), \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a
+SPLASHmissingInformation= \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (information), \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a
+SPLASHchainWas= \u042d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0430\u043f\u043b\u0435\u0442\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u044d\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0430\u043f\u043b\u0435\u0442\u0430\u043c\u0438. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0430\u043f\u043b\u0435\u0442.
+
+CBCheckFile= \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html.
+CBCheckNoEntry= \u0412 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0431\u0430\u0437\u0430 \u043a\u043e\u0434\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u0430\u043f\u043b\u0435\u0442\u0430. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html.
+CBCheckUnsignedPass= \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435, \u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html.
+CBCheckUnsignedFail= \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u041d\u0415 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0430\u0437\u0435 \u043a\u043e\u0434\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0435\u0433\u043e \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html.
+CBCheckOkSignedOk= \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html.
+CBCheckSignedAppletDontMatchException= \u0417\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u0438\u0445 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0438\u0445 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435. \u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: {0}. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: {1}. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html.
+CBCheckSignedFail= \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u041d\u0415 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0430\u0437\u0435 \u043a\u043e\u0434\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0435\u0433\u043e \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e. \u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html.
+ 
+# itweb man base (note, spaces (especially the one around markup) are important due to man pages markup). Only bold  tag is now recognized by ReplacingTextFormatter.
+ITWTBbugs=\u041a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043e\u0442\u0447\u0451\u0442 \u043e \u043d\u0435\u0439 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443
+ITWTBdebug=\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 (\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c -verbose \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 itw-settings, \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e ICEDTEAPLUGIN_DEBUG) \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0432\u044b\u0432\u043e\u0434 (\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Java) \u0441 URL-\u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0444\u0430\u0439\u043b JNLP \u0438\u043b\u0438 HTML (\u0438\u043b\u0438 \u0444\u0430\u0439\u043b JNLP / HTML, \u0438\u043b\u0438 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435) \u043f\u0440\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u0442\u0447\u0451\u0442\u0430 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435.
+ITWTBwritten=\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b IcedTea.
+ITWTBdirs=\u0413\u0434\u0435 $XDG_CONFIG_DIR, $XDG_CACHE_DIR \u0438 $XDG_RUNTIME_DIR \u0443\u043a\u0430\u0437\u0430\u043d\u044b, \u043a\u0430\u043a ~/.config, ~/.cache (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b: /tmp \u0438\u043b\u0438 /var/tmp).
+
+# itweb-settings man (note, spaces (especially the one around markup) are important due to man pages markup). Only bold  tag is now recognized by ReplacingTextFormatter.
+ITWSintro= \u2014 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 <B>javaws </B>\u0438 <B>\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430</B>
+ITWSsynops=\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b
+IWSdescL1=\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u0430\u043a \u0438 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 <B> javaws </B> \u0438 <B>\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430</B> IcedTea-Web.
+IWSdescL2=\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0412 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0435.
+IWSdescL3=\u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0435 \u0442\u0440\u0430\u0442\u044f \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.
+IWSexampleL1=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
+IWSexampleL2=\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 `{0}`.
+ITWSdefault=\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
+IWSexampleL3=\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430
+IWSexampleL31=(\u043a\u043b\u044e\u0447, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0435\u0441\u043b\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f)):
+IWSexampleL32=(\u043a\u043b\u044e\u0447 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e):
+IWSpossible=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e:
+
+# itweb-plugin man (note, spaces (especially the one around markup) are important due to man pages markup). Only bold  tag is now recognized by ReplacingTextFormatter.
+ITWPintro= \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 <B>\u0430\u043f\u043b\u0435\u0442\u043e\u0432 Java </B>\u0432 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <B>\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435</B>
+ITWPsynopsL1=\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0435\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445.
+ITWPsynopsL2=\u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c {0} (\u0438\u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443). \u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435 {1}
+ITWPsynopsL3=<B> \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0441 Mozilla, </B>\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Firefox, Midori, Epiphany, Chrome \u0438\u043b\u0438 Chromium \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442:
+ITWPsynopsL4=<B> \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Opera, </B>\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Opera \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442:
+ITWPtrademarks=\u0412\u0441\u0435 \u0442\u043e\u0432\u0430\u0440\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u0438 \u0442\u0440\u0435\u0442\u044c\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0438\u0445 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c
+
+# files descriptions
+FILEpipe=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0430\u043d\u0430\u043b \u0432\u0432\u043e\u0434\u0430 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 native2java \u0438 (\u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e) \u043a\u0430\u043d\u0430\u043b \u043e\u0442\u043b\u0430\u0434\u043a\u0438.
+FILEmozillauser=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Mozilla.
+FILEmozillaglobal64=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Mozilla, 64-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.
+FILEmozillaglobal32=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Mozilla, 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.
+FILEopera64=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Opera, 64-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.
+FILEopera32=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Opera, 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.
+
+TAGSOUPtail=\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 tagsoup \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u043e\u0439 ITW. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438/\u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0430\u043c \u043f\u0430\u043a\u0435\u0442\u0430.
+TAGSOUPnotUsed=\u0412\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e {0}, \u0443\u0434\u0430\u043b\u0438\u0442\u0435. \u0418\u043b\u0438...
+TAGSOUPbroken=\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d.
+TAGSOUPhtmlNotUsed=\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 HTML \u0432 XML \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 tagsoup \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e. \u0423\u0434\u0430\u043b\u0438\u0442\u0435 {0}. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443.
+TAGSOUPhtmlBroken=\u041d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 HTML \u0432 XML \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 tagsoup. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 tagsoup (\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u0431\u043e\u0440\u043a\u0443 ITW \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438). \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443.
+
+FILEcache=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.
+FILErecentlyUsed=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u0432 \u043a\u044d\u0448\u0435
+FILEappdata=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.
+FILElogs=\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 (\u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e), itw-cplugin-date_time.log \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, itw-javantx-date_time.log \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e.
+FILEicons=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 javaws \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 \u0438\u043b\u0438 \u0432 \u043c\u0435\u043d\u044e
+FILEjnlps=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b JNLP, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 javaws
+FILEmenus=\u041f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u043c\u0435\u043d\u044e.
+FILEextasuser=\u0424\u0430\u0439\u043b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u0430\u043f\u043b\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.
+FILEextasadmin=\u0424\u0430\u0439\u043b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u0430\u043f\u043b\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.
+FILEglobaldp=\u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f.
+FILEtmpappdata=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u0441\u0440\u0435\u0434\u044b.
+FILElocksdir=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a netx.
+FILEmainlock=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 netx.
+FILEpolicy=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c.
+FILEusercerts=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b.
+FILEjavacerts=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Java.
+FILEjavadp=\u0424\u0430\u0439\u043b \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 Java. \u041d\u0430 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c {0}.
+FILEuserdp=\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f.
+
+# extended policy editor
+EPEexpert=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
+EPEsave=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c
+EPEcancel=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c
+EPEhelp1=\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430
+EPEhelp2=\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u0438\u043f \u043f\u0440\u0430\u0432\u0438\u043b\u0430
+EPEhelp3=\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435
+EPEhelp4=\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e
+EPEhelp5=\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b, \u0434\u0432\u0430\u0436\u0434\u044b \u0449\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0432\u0443\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c.
+EPEexpertHelp=\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u0435\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u044b \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u043d\u0438\u0445! \u041d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0438 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442...
+EPEexpertHint=\u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:
+
+APPEXTSECappletSecurityLevelExtraHighId=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 Java
+APPEXTSECappletSecurityLevelVeryHighId=\u0421\u0430\u043c\u044b\u0439 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438
+APPEXTSECappletSecurityLevelHighId=\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438
+APPEXTSECappletSecurityLevelLowId=\u041d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438
+APPEXTSECappletSecurityLevelExtraHighExplanation=\u0417\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432
+APPEXTSECappletSecurityLevelVeryHighExplanation=\u0417\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432
+APPEXTSECappletSecurityLevelHighExplanation=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430
+APPEXTSECappletSecurityLevelLowExplanation=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435
+APPEXTSECunsignedAppletActionAlways=\u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c) \u0430\u043f\u043b\u0435\u0442\u0443 (\u0430\u043f\u043b\u0435\u0442\u0430\u043c)
+APPEXTSECunsignedAppletActionNever=\u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c) \u0430\u043f\u043b\u0435\u0442\u0443 (\u0430\u043f\u043b\u0435\u0442\u0430\u043c)
+APPEXTSECunsignedAppletActionYes=\u042d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430
+APPEXTSecunsignedAppletActionSandbox=\u042d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044f\u043c\u0438
+APPEXTSECunsignedAppletActionNo=\u042d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0431\u044b\u043b \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430
+APPEXTSECControlPanelExtendedAppletSecurityTitle=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432
+APPEXTSECguiTableModelTableColumnRD=\u0417\u0430\u043f\u043e\u043c\u043d\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f
+APPEXTSECguiTableModelTableColumnDateOfAction=\u0414\u0430\u0442\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f
+APPEXTSECguiTableModelTableColumnDocumentBase=\u0411\u0430\u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430
+APPEXTSECguiTableModelTableColumnCodeBase=\u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430
+APPEXTSECguiTableModelTableColumnArchives=\u0410\u0440\u0445\u0438\u0432\u044b
+APPEXTSECguiPanelAppletInfoHederPart1={0} {1}
+APPEXTSECguiPanelAppletInfoHederPart2={0} \u0438\u0437  {1}
+APPEXTSECguiPanelConfirmDeletionOf=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b {0}?
+APPEXTSECguiPanelHelpButton=\u0421\u043f\u0440\u0430\u0432\u043a\u0430
+APPEXTSECguiPanelSecurityLevel=\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438
+APPEXTSECguiPanelGlobalBehaviourCaption=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u043e\u0432
+APPEXTSECguiPanelDeleteMenuSelected=\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435
+APPEXTSECguiPanelDeleteMenuAllA=\u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 (A)
+APPEXTSECguiPanelDeleteMenuAllN=\u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0435 (N)
+APPEXTSECguiPanelDeleteMenuAlly=\u0432\u0441\u0435 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043d\u044b\u0435 (y)
+APPEXTSECguiPanelDeleteMenuAlln=\u0432\u0441\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u044b\u0435 (n)
+APPEXTSECguiPanelDeleteMenuAllAll=\u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0435
+APPEXTSECguiPanelDeleteButton=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+APPEXTSECguiPanelDeleteButtonToolTip=\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 Delete. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b
+APPEXTSECguiPanelTestUrlButton=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441
+APPEXTSECguiPanelAddRowButton=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443
+APPEXTSECguiPanelValidateTableButton=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443
+APPEXTSECguiPanelAskeforeActionBox=\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f
+APPEXTSECguiPanelShowRegExesBox=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f
+APPEXTSECguiPanelInverSelection=\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435
+APPEXTSECguiPanelMoveRowUp=\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u044b\u0448\u0435
+APPEXTSECguiPanelMoveRowDown=\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0438\u0436\u0435
+APPEXTSECguiPanelCustomDefs=\u041f\u043e\u043b\u044c\u0437\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f
+APPEXTSECguiPanelGlobalDefs=\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f
+APPEXTSECguiPanelDocTest=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430
+APPEXTSECguiPanelCodeTest=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430
+APPEXTSECguiPanelNoMatch=\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0439 \u043d\u0435\u0442
+APPEXTSECguiPanelMatchingNote=\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.
+APPEXTSECguiPanelMatched=\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435
+APPEXTSECguiPanelMatchingError=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f: {0}
+APPEXTSECguiPanelCanNotValidate=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u2014 {0}
+APPEXTSECguiPanelEmptyDoc=\u0412\u0441\u0435 \u0431\u0430\u0437\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b
+APPEXTSECguiPanelEmptyCode=\u0412\u0441\u0435 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b
+APPEXTSECguiPanelTableValid=\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0440\u043e\u0448\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443
+APPEXTSECguiPanelTableInvalid=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430. \u041e\u0448\u0438\u0431\u043a\u0430: {0}
+APPEXTSECguiPanelShowOnlyPermanent=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435
+APPEXTSECguiPanelShowOnlyTemporal=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435
+APPEXTSECguiPanelShowAll=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432
+APPEXTSECguiPanelShowOnlyPermanentA=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438
+APPEXTSECguiPanelShowOnlyPermanentN=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435
+APPEXTSECguiPanelShowOnlyTemporalY=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438
+APPEXTSECguiPanelShowOnlyTemporalN=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435
+APPEXTSEChelpHomeDialogue=\u0414\u0438\u0430\u043b\u043e\u0433
+APPEXTSEChelp=<body> <h1>\u0421\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u2014 itw-settings, \u0444\u0430\u0439\u043b\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0434\u0438\u0430\u043b\u043e\u0433</h1> <p> \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u2014 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u042d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 ''\u043d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438''. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 ''\u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438'' (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 ''\u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438'' \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u041d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u043d\u0430\u044f: \u043b\u044e\u0431\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 Java \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a. </p> <p> \u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <b>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438</b> \u2014 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 <b>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f</b> \u0438 <b>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f</b><br/> \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 (\u0438 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u043d\u0435\u0441\u0442\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f!) \u044d\u0442\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430 <a href="{3}">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 IcedTea-Web</a> </p> <A name="level"><h2>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438</h2></A> <p> \u042d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0434\u043b\u044f "\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432". \u0415\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 users_home/.icedtea/deployment.properties, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u0444\u0430\u0439\u043b\u0435 /etc/.java/deployment/deployment.properties \u0438\u043b\u0438 JAVA_HOME/lib/deployment.properties \u0441 \u043a\u043b\u044e\u0447\u043e\u043c  <b>deployment.security.level</b><br/> <li/><b>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 Java</b> \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <i>DENY_ALL</i> \u2014 \u0430\u043f\u043b\u0435\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b<br/> <blockquote cite="" > \u041d\u0438 \u043e\u0434\u0438\u043d \u0430\u043f\u043b\u0435\u0442 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 Java (\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u043a\u043d\u043e \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435). \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c Java, \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 IcedTea-Web \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 (\u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f). \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. </blockquote> <li/><b>\u041e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438</b> \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <i>DENY_UNSIGNED</i> \u2014 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b<br/> <blockquote cite="" > \u041d\u0438 \u043e\u0434\u0438\u043d <b>\u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439</b> \u0430\u043f\u043b\u0435\u0442 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a (\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0430\u043a\u0438\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u043a\u043d\u043e \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435). \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. </blockquote> <li/><b>\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438</b> \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <i>ASK_UNSIGNED</i> \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u043f\u043b\u0435\u0442\u0443<br/> <blockquote cite="" > \u0412\u0441\u0435 <b>\u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435</b> \u0430\u043f\u043b\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c \u0434\u0430\u043b\u0435\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c: \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a. \u0415\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 <a href="#table">\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445</a> \u043d\u0438\u0436\u0435. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043f\u043b\u0435\u0442\u0430, \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438 \u0430\u043f\u043b\u0435\u0442 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u0438\u043b\u0438 \u0446\u0435\u043b\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0430\u043f\u043b\u0435\u0442\u043e\u0432 (\u0441\u043c. \u0430\u0431\u0437\u0430\u0446 <a href="#dialogue"><b>\u0414\u0438\u0430\u043b\u043e\u0433</b> </a>\u0434\u0430\u043b\u0435\u0435). <br/>\u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. </blockquote> <li/><b>\u041d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438</b> \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <i>ALLOW_UNSIGNED</i> \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445, \u0434\u0430\u0436\u0435 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432<br/> <blockquote cite="" > \u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f <b>\u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435</b>. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435. \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. </blockquote> \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 <b>\u041e\u041a</b> \u0438\u043b\u0438 <b>\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c</b>. </p> <h2><A name="table">\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438</A></h2> <p> <h4>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f x \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430</h4> \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435 <b>\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438</b>, \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c. \u041e\u0431\u044b\u0447\u043d\u043e \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u2014 home/.icedtea/.appletTrustSettings \u2014 \u043f\u0430\u043d\u0435\u043b\u044c "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f".<br/> \u041d\u043e \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 /etc/.java/deployment/ .appletTrustSettings \u2014 \u043f\u0430\u043d\u0435\u043b\u044c "\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f".<br/> <h4>"\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441"</h4> <li/><b>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435</b> \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0430\u043f\u043b\u0435\u0442\u0430<br/> <blockquote cite="" > <li/><b>\u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u0430\u043f\u043b\u0435\u0442\u0443</b> \u2014 \u044d\u0442\u043e\u0442 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <i>A</i> \u0432 .appletTrustSettings<br/> <li/><b>\u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u0430\u043f\u043b\u0435\u0442\u0443</b> \u2014 \u044d\u0442\u043e\u0442 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <i>N</i> \u0432 .appletTrustSettings<br/> <li/><b>\u0412\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d</b> \u2014 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043d\u043e\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <i>y</i> \u0432 .appletTrustSettings<br/> <li/><b>\u0412\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d</b> \u2014 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043d\u043e\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a <i>n</i> \u0432 .appletTrustSettings<br/> </blockquote> <li/><b>\u0414\u0430\u0442\u0430</b> \u2014 \u0434\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c (\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f)<br/> <li/><b>\u0411\u0430\u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430</b> \u2014 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043f\u043b\u0435\u0442\u0430. \u042d\u0442\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430. \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <a href="#regexes">\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0430\u043b\u0435\u0435</a><br/> <li/><b>\u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430</b> \u2014 \u044d\u0442\u043e URL-\u0430\u0434\u0440\u0435\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043a\u043e\u0434 \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u042d\u0442\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430. \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <a href="#regexes">\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0430\u043b\u0435\u0435</a><br/> <li/><b>\u0410\u0440\u0445\u0438\u0432\u044b</b> \u2014 \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u0441 \u043a\u043e\u0434\u043e\u043c \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u044b \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0433\u0440\u0443\u043f\u043f\u044b \u0430\u043f\u043b\u0435\u0442\u043e\u0432<br/> <br/> \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0432 \u0441\u0438\u043b\u0443 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435. <h4>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438</h4> <p> <li/><b>\u0423\u0434\u0430\u043b\u0438\u0442\u044c</b> \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0443\u043d\u043a\u0442\u043e\u043c, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u043b\u0435 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c<br/> <blockquote cite="" > <li/><b>\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435</b> \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u041a\u043b\u044e\u0447 <b>Del</b> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. <b>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440</b> \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d. \u0412\u044b\u0431\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0435\u0449\u0451 \u043f\u0440\u0430\u0432\u0435\u0435 <br/> <li/><b>\u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 (A)</b> \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438<br/> <li/><b>\u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0435 (N)</b> \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435<br/> <li/><b>\u0432\u0441\u0435 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043d\u044b\u0435 (y)</b> \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e (\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435) \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438<br/> <li/><b>\u0432\u0441\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u044b\u0435 (n)</b> \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e (\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435) \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435<br/> <li/><b>\u0432\u0441\u0435</b> \u2014 \u043e\u0447\u0438\u0441\u0442\u0438\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443<br/> <br/> <b>\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f</b> \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f (\u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e) \u0438\u043b\u0438 \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c. \u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0415\u0441\u043b\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0435 \u0432\u0438\u0434\u043d\u043e, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 <b>Esc</b> </blockquote> <li/><b>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f</b> \u2014 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430/\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 <a href="#regexes">\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0430\u043b\u0435\u0435</a><br/> <br/> <li/>\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435(\u0430\u0445)<br/> <blockquote cite="" > <li/><b>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439</b> \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438 <b>(A)</b> \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0435 <b>(N)</b> \u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<br/> <li/><b>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439</b> \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 <b>(y)</b> \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u044b\u0445 <b>(n)</b> \u0430\u043f\u043b\u0435\u0442\u043e\u0432.<br/> <li/><b>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439</b> \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438 <b>(A)</b><br/> <li/><b>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u0435\u0442\u043e\u0432</b> \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435 <b>(N)</b><br/> <li/><b>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439</b> \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 <b>(y)</b> \u0430\u043f\u043b\u0435\u0442\u043e\u0432.<br/> <li/><b>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u0435\u0442\u043e\u0432</b> \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u044b\u0445 <b>(n)</b> \u0430\u043f\u043b\u0435\u0442\u043e\u0432.<br/> </blockquote> </p> <li/><b>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443</b> \u2014 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 (\u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f) \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439 \u0438 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0430\u0440\u0445\u0438\u0432\u0430\u043c\u0438  <br/> <li/><b>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443</b> \u2014 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 \u043d\u0435\u0451, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439:<br/> <blockquote cite="" > <li/><b>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435</b> \u2014 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445: A,N,y,n<br/> <li/><b>\u0414\u0430\u0442\u0430</b> \u2014 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0434\u0430\u0442\u0430<br/> <li/><b>\u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u0438 \u0431\u0430\u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430</b> \u2014 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 <a href="#regexes">\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f</a> (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c)<br/> <li/><b>\u0410\u0440\u0445\u0438\u0432\u044b</b> \u2014 \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0440\u0445\u0438\u0432\u043e\u0432 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c)<br/> </blockquote> <li/><b>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441</b> \u2014 \u0432 \u0434\u0432\u0443\u0445 \u0434\u0438\u0430\u043b\u043e\u0433\u0430\u0445 (\u0437\u0430 \u0434\u0432\u0430 \u0448\u0430\u0433\u0430) \u0431\u0443\u0434\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0431\u0430\u0437\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0438 \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u044f\u043c. \u0411\u0443\u0434\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u044b \u0432\u0441\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b! \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f> <li/><b>\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u043d\u0438\u0437/\u0432\u0432\u0435\u0440\u0445</b><br/> <blockquote cite="" > \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0432\u0430\u0436\u0435\u043d. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0443 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445). \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. <br/> \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 Qhttp://blogs.com/E.*, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 http://blogs.com \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u041f\u041e\u0421\u041b\u0415 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f Qhttp://blogs.com/evilJohnE.*, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 \u0445\u0430\u043a\u0435\u0440\u0430 evilJohn. </blockquote> </p> <p> <h2><A name="dialogue">\u0414\u0438\u0430\u043b\u043e\u0433</A></h2> \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <a href="#level"><b>\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438</b></a> \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u043e\u0432\u044b\u0439 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433 \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e <b>\u0432\u044b\u0431\u0440\u0430\u0442\u044c</b>, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u043f\u0440\u0438 <b>\u043a\u0430\u0436\u0434\u043e\u043c</b> (A \u0438\u043b\u0438 N) \u0435\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e <b>\u043e\u0434\u043d\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443</b> (y,n).<br/> \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c (\u0442\u0430\u043a\u0436\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e) \u0437\u0430\u043f\u0443\u0441\u043a <b>\u0432\u0441\u0435\u0445</b> \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0438\u0437 <b>\u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430</b>. \u042d\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u043f\u043e\u0441\u0435\u0449\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445.<br/> \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c. \u041f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0437\u0435\u043b\u0451\u043d\u0430\u044f \u0438\u043b\u0438 \u043a\u0440\u0430\u0441\u043d\u0430\u044f \u043c\u0435\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<br/> \u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <b>\u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f</b> \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u044d\u0442\u043e\u0442 \u0434\u0438\u0430\u043b\u043e\u0433 \u0431\u043e\u043b\u044c\u0448\u0435 <b>\u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f</b>.  \u041f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e <b>\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c</b> \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 <b>itw-settings (\u0432 <a href="#table">\u0442\u0430\u0431\u043b\u0438\u0446\u0435</a></b>). \u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 IcedTea-Web. \u0415\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435  (n,y) \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0434\u0438\u0430\u043b\u043e\u0433 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u043d\u043e\u0432\u0430. \u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0412\u0441\u0435\u0433\u0434\u0430 \u043d\u0430 \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. <br/> \u0412 \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0430\u043f\u043b\u0435\u0442, \u0438 URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430.  \u0422\u0430\u043a\u0436\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f, \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0431\u044b\u043b \u043b\u0438 \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d <br/> <blockquote cite="" > <h3>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f</h3> <blockquote cite="" > <li/><b>\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e</b> \u2014 \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433. <blockquote cite="" > <li/><b>\u0414\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u0430</b> \u2014 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 <li/><b>\u0414\u043b\u044f \u0441\u0430\u0439\u0442\u0430</b> \u2014 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0441 \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430  </blockquote> <li/><b>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c</b> \u2014 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 <li/><b>\u041e\u0442\u043c\u0435\u043d\u0430</b> \u2014 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0430\u043f\u043b\u0435\u0442\u043e\u0432\n </blockquote> \u0421 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c" + "\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e" + "\u0414\u043b\u044f \u0441\u0430\u0439\u0442\u0430" \u043d\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445! \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438! </blockquote> </p> <p> <h2><A name="regexes">\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f</A></h2> \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 IcedTea-Web \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0449\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 (\u043d\u0430\u0431\u043e\u0440\u043e\u0432) \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u043b\u0435\u0436\u0430\u0442 <b>\u0426\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435</b> QE URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <b>\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438</b>, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a .* \u0438\u043b\u0438 .? \u0438 \u0434\u0440\u0443\u0433\u0438\u0445.<br/> \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u044b:<br/> N 12.12.2012 .* Qhttp://blogs.com/evilJohnE.* <br/> N 12.12.2012 Qhttp://blogs.com/goodJohn/evilApplet.htmlE.* Qhttp://blogs.com/goodJohn/E goodJohnsArchive.jar <br/> A 12.12.2012 Qhttp://blogs.com/E.* Qhttp://blogs.com/E.* <br/> N 12.12.2012 .* Qhttp://adds.comE.* <br/> Y 12.12.2012 .* Qhttp://www.walter-fendt.de/ph14_jar/E <br/> <br/> <i>\u042d\u0442\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f 12.12.2012:<br/></i> <li/>\u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u0430\u043f\u043b\u0435\u0442\u044b, \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 http://blogs.com/evilJohn<br/> <li/>\u0438 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442 \u0441 \u0441\u0430\u0439\u0442\u0430 http://blogs.com/goodJohn/ \u0441 \u0430\u0440\u0445\u0438\u0432\u043e\u043c goodJohnsArchive.jar<br/> <li/>\u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 (\u043f\u0440\u043e\u0447\u0438\u0435) \u0430\u043f\u043b\u0435\u0442\u044b \u0441 \u0441\u0430\u0439\u0442\u0430 http://blogs.com/ , \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 http://blogs.com/<br/> <li/>\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u0430\u043f\u043b\u0435\u0442\u044b, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 http://adds.com (\u043a\u0440\u043e\u043c\u0435 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 http://blogs.com/ \u2014 \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c http://adds.com \u0442\u0430\u043a\u0436\u0435 \u0438 \u043d\u0430 http://blogs.com/, \u044d\u0442\u0430 (http://adds.com) \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0430\u0439\u0442\u0430 \u0431\u043b\u043e\u0433\u043e\u0432)<br/> <li/>\u0438 \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044f\u0432\u043b\u0435\u043d\u0438\u044f, \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 walter-fendt <br/> <br/> \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 .appletTrustSettings, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0435\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f...<br/> <br/> \u0412\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 \u043f\u043e\u043b\u043d\u044b\u0445 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <a href="http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html">http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html</a> </p> <h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435</h2> <p> \u0421\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <a href="{0}">{0}</a>!<br/> \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043e\u0442\u0447\u0451\u0442 \u043e \u043d\u0435\u0439 \u0432 \u043d\u0430\u0448\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 <a href="{1}">bugzilla</a> ... \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 <a href="{2}">\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439</a><br/> <br/> \u041a\u043e\u043c\u0430\u043d\u0434\u0430 IcedTea-Web \u0436\u0435\u043b\u0430\u0435\u0442 \u0432\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446... </p> </body> 
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java
--- a/netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java	Wed Nov 07 12:34:44 2018 +0100
@@ -25,11 +25,14 @@
 import java.lang.reflect.InvocationTargetException;
 import java.net.*;
 import java.io.*;
+import javax.jnlp.ServiceManager;
 import javax.swing.*;
 
 import net.sourceforge.jnlp.*;
+import net.sourceforge.jnlp.services.ServiceUtil;
 import net.sourceforge.jnlp.splashscreen.SplashController;
 import net.sourceforge.jnlp.util.*;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * The applet environment including stub, context, and frame.  The
@@ -188,7 +191,7 @@
             }
 
             try {
-                SwingUtilities.invokeAndWait(new Runnable() {
+                SwingUtils.callOnAppContext(new Runnable() {
                     @Override
                     public void run() {
                         // do first because some applets need to be displayed before
@@ -284,23 +287,23 @@
     }
 
     /**
-     * Not implemented yet.
      * @param uRL url of document
      */
     @Override
     public void showDocument(java.net.URL uRL) {
         checkDestroyed();
-
+        ServiceUtil.getBasicService().showDocument(uRL);
     }
 
     /**
      * Not implemented yet.
      * @param uRL source of document
-     * @param str who know what
+     * @param str _self, _parent, _top, _blank or "name". Have sense only for applets. Not implemented for our javaws world
      */
     @Override
     public void showDocument(java.net.URL uRL, java.lang.String str) {
         checkDestroyed();
+        ServiceUtil.getBasicService().showDocument(uRL);
 
     }
 
@@ -375,8 +378,12 @@
     @Override
     public URL getDocumentBase() {
         checkDestroyed();
-
-        return file.getApplet().getDocumentBase();
+        URL db = file.getApplet().getDocumentBase();
+        if (db == null) {
+            return getCodeBase();
+        } else {
+            return db;
+        }
     }
 
     // FIXME: Sun's applet code forces all parameters to lower case.
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/runtime/Boot.java
--- a/netx/net/sourceforge/jnlp/runtime/Boot.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/Boot.java	Wed Nov 07 12:34:44 2018 +0100
@@ -47,6 +47,7 @@
 
 import static net.sourceforge.jnlp.runtime.Translator.R;
 import net.sourceforge.jnlp.runtime.html.browser.LinkingBrowser;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * This is the main entry point for the JNLP client. The main method parses the
@@ -95,6 +96,9 @@
      * @param argsIn launching arguments
      */
     public static void main(String[] argsIn) throws UnevenParameterException {
+        // setup Swing EDT tracing:
+        SwingUtils.setup();
+
         optionParser = new OptionParser(argsIn, OptionsDefinitions.getJavaWsOptions());
 
         if (optionParser.hasOption(OptionsDefinitions.OPTIONS.VERBOSE)) {
@@ -113,9 +117,11 @@
         if (optionParser.hasOption(OptionsDefinitions.OPTIONS.VIEWER)) {
             try {
                 CertificateViewer.main(null);
-                JNLPRuntime.exit(0);
             } catch (Exception e) {
                 OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
+            } finally {
+                //no matter what happens, terminate
+                return;
             }
         }
 
@@ -186,7 +192,7 @@
         if (optionParser.hasOption(OptionsDefinitions.OPTIONS.REDIRECT)) {
             JNLPRuntime.setAllowRedirect(true);
         }
-        
+
         //if it is browser go by ots own, otherwise procedd with normal ITW logic
         if (optionParser.hasOption(OptionsDefinitions.OPTIONS.BROWSER)) {
             String url = optionParser.getParam(OptionsDefinitions.OPTIONS.BROWSER);
@@ -234,7 +240,7 @@
 
     static String fixJnlpProtocol(String param) {
         //remove jnlp: for case like jnlp:https://some.app/file.jnlp
-        if (param.matches("^jnlp[s]?:.*://.*")){
+        if (param.matches("^jnlp[s]?:.*://.*")) {
             param = param.replaceFirst("^jnlp[s]?:", "");
         }
         //transalte jnlp://some.app/file.jnlp to http/https
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/runtime/HtmlBoot.java
--- a/netx/net/sourceforge/jnlp/runtime/HtmlBoot.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/HtmlBoot.java	Wed Nov 07 12:34:44 2018 +0100
@@ -45,7 +45,6 @@
 import java.util.List;
 import java.util.Map;
 import javax.swing.JFrame;
-import javax.swing.SwingUtilities;
 import net.sourceforge.jnlp.JNLPSplashScreen;
 import net.sourceforge.jnlp.OptionsDefinitions;
 import net.sourceforge.jnlp.ParserSettings;
@@ -58,6 +57,7 @@
 
 import static net.sourceforge.jnlp.runtime.Translator.R;
 import net.sourceforge.jnlp.util.optionparser.OptionParser;
+import net.sourceforge.swing.SwingUtils;
 
 public final class HtmlBoot {
 
@@ -111,7 +111,7 @@
 
     boolean run(Map<String, List<String>> extra) {
         if (!optionParser.hasOption(OptionsDefinitions.OPTIONS.HEADLESS)) {
-            SwingUtilities.invokeLater(new Runnable() {
+            SwingUtils.invokeLater(new Runnable() {
 
                 @Override
                 public void run() {
@@ -157,7 +157,7 @@
                 //close all applets in time
                 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 //f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-                SwingUtilities.invokeLater(new Runnable() {
+                SwingUtils.invokeLater(new Runnable() {
                     @Override
                     public void run() {
                         Point movement = changeMovementSigns(move);
@@ -180,7 +180,7 @@
         } catch (final Exception ex) {
             OutputController.getLogger().log(ex);
             if (splashScreen != null) {
-                SwingUtilities.invokeLater(new Runnable() {
+                SwingUtils.invokeLater(new Runnable() {
 
                     @Override
                     public void run() {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
--- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java	Wed Nov 07 12:34:44 2018 +0100
@@ -12,7 +12,6 @@
 // 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.
-
 package net.sourceforge.jnlp.runtime;
 
 import static net.sourceforge.jnlp.runtime.Translator.R;
@@ -69,6 +68,7 @@
 import net.sourceforge.jnlp.LaunchDesc;
 import net.sourceforge.jnlp.LaunchException;
 import net.sourceforge.jnlp.NullJnlpFileException;
+import net.sourceforge.jnlp.OptionsDefinitions;
 import net.sourceforge.jnlp.ParseException;
 import net.sourceforge.jnlp.ParserSettings;
 import net.sourceforge.jnlp.PluginBridge;
@@ -90,14 +90,16 @@
 import net.sourceforge.jnlp.util.StreamUtils;
 import net.sourceforge.jnlp.util.UrlUtils;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import static net.sourceforge.jnlp.runtime.Translator.R;
 
 /**
- * Classloader that takes it's resources from a JNLP file. If the
- * JNLP file defines extensions, separate classloaders for these
- * will be created automatically. Classes are loaded with the
- * security context when the classloader was created.
+ * Classloader that takes it's resources from a JNLP file. If the JNLP file
+ * defines extensions, separate classloaders for these will be created
+ * automatically. Classes are loaded with the security context when the
+ * classloader was created.
  *
- * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
+ * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell
+ * (JAM)</a> - initial author
  * @version $Revision: 1.20 $
  */
 public class JNLPClassLoader extends URLClassLoader {
@@ -105,12 +107,15 @@
     // todo: initializePermissions should get the permissions from
     // extension classes too so that main file classes can load
     // resources in an extension.
-
-    /** Signed JNLP File and Template */
+    /**
+     * Signed JNLP File and Template
+     */
     final public static String TEMPLATE = "JNLP-INF/APPLICATION_TEMPLATE.JNLP";
     final public static String APPLICATION = "JNLP-INF/APPLICATION.JNLP";
 
-    /** Actions to specify how cache is to be managed **/
+    /**
+     * Actions to specify how cache is to be managed *
+     */
     public static enum DownloadAction {
         DOWNLOAD_TO_CACHE, REMOVE_FROM_CACHE, CHECK_CACHE
     }
@@ -119,101 +124,148 @@
         FULL, PARTIAL, NONE
     }
 
-    /** True if the application has a signed JNLP File */
+    /**
+     * True if the application has a signed JNLP File
+     */
     private boolean isSignedJNLP = false;
-    
-    /** map from JNLPFile unique key to shared classloader */
+
+    /**
+     * map from JNLPFile unique key to shared classloader
+     */
     private static Map<String, JNLPClassLoader> uniqueKeyToLoader = new ConcurrentHashMap<>();
 
-    /** map from JNLPFile unique key to lock, the lock is needed to enforce correct 
-     * initialization of applets that share a unique key*/
+    /**
+     * map from JNLPFile unique key to lock, the lock is needed to enforce
+     * correct initialization of applets that share a unique key
+     */
     private static Map<String, ReentrantLock> uniqueKeyToLock = new HashMap<>();
 
-    /** Provides a search path & temporary storage for native code */
+    /**
+     * Provides a search path & temporary storage for native code
+     */
     private NativeLibraryStorage nativeLibraryStorage;
 
-    /** security context */
+    /**
+     * security context
+     */
     private final AccessControlContext acc = AccessController.getContext();
 
-    /** the permissions for the cached jar files */
+    /**
+     * the permissions for the cached jar files
+     */
     private List<Permission> resourcePermissions;
 
-    /** the app */
+    /**
+     * the app
+     */
     private ApplicationInstance app = null; // here for faster lookup in security manager
 
-    /** list of this, local and global loaders this loader uses */
+    /**
+     * list of this, local and global loaders this loader uses
+     */
     private JNLPClassLoader loaders[] = null; // ..[0]==this
 
-    /** whether to strictly adhere to the spec or not */
+    /**
+     * whether to strictly adhere to the spec or not
+     */
     private final boolean strict;
 
-    /** loads the resources */
+    /**
+     * loads the resources
+     */
     private final ResourceTracker tracker = new ResourceTracker(true); // prefetch
 
-    /** the update policy for resources */
+    /**
+     * the update policy for resources
+     */
     private UpdatePolicy updatePolicy;
 
-    /** the JNLP file */
+    /**
+     * the JNLP file
+     */
     private JNLPFile file;
 
-    /** the resources section */
+    /**
+     * the resources section
+     */
     private ResourcesDesc resources;
 
-    /** the security section */
+    /**
+     * the security section
+     */
     private SecurityDesc security;
 
-    /** Permissions granted by the user during runtime. */
+    /**
+     * Permissions granted by the user during runtime.
+     */
     private final ArrayList<Permission> runtimePermissions = new ArrayList<>();
 
-    /** all jars not yet part of classloader or active
-     * Synchronized since this field may become shared data between multiple classloading threads.
-     * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String).
+    /**
+     * all jars not yet part of classloader or active Synchronized since this
+     * field may become shared data between multiple classloading threads. See
+     * loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String).
      */
     private final List<JARDesc> available = Collections.synchronizedList(new ArrayList<JARDesc>());
 
-    /** the jar cert verifier tool to verify our jars */
+    /**
+     * the jar cert verifier tool to verify our jars
+     */
     private final JarCertVerifier jcv;
 
     private SigningState signing = SigningState.NONE;
 
-    /** ArrayList containing jar indexes for various jars available to this classloader
-     * Synchronized since this field may become shared data between multiple classloading threads/
-     * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String).
+    /**
+     * ArrayList containing jar indexes for various jars available to this
+     * classloader Synchronized since this field may become shared data between
+     * multiple classloading threads/ See loadClass(String) and
+     * CodebaseClassLoader.findClassNonRecursive(String).
      */
     private final List<JarIndexAccess> jarIndexes = Collections.synchronizedList(new ArrayList<JarIndexAccess>());
 
-    /** Set of classpath strings declared in the manifest.mf files
-     * Synchronized since this field may become shared data between multiple classloading threads.
-     * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String).
+    /**
+     * Set of classpath strings declared in the manifest.mf files Synchronized
+     * since this field may become shared data between multiple classloading
+     * threads. See loadClass(String) and
+     * CodebaseClassLoader.findClassNonRecursive(String).
      */
     private final Set<String> classpaths = Collections.synchronizedSet(new HashSet<String>());
 
-    /** File entries in the jar files available to this classloader
-     * Synchronized sinc this field may become shared data between multiple classloading threads.
-     * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String).
+    /**
+     * File entries in the jar files available to this classloader Synchronized
+     * sinc this field may become shared data between multiple classloading
+     * threads. See loadClass(String) and
+     * CodebaseClassLoader.findClassNonRecursive(String).
      */
     private final Set<String> jarEntries = Collections.synchronizedSet(new TreeSet<String>());
 
-    /** Map of specific original (remote) CodeSource Urls  to securitydesc
-     *  Synchronized since this field may become shared data between multiple classloading threads.
-     *  See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String).
+    /**
+     * Map of specific original (remote) CodeSource Urls to securitydesc
+     * Synchronized since this field may become shared data between multiple
+     * classloading threads. See loadClass(String) and
+     * CodebaseClassLoader.findClassNonRecursive(String).
      */
-    private final Map<URL, SecurityDesc> jarLocationSecurityMap =
-            Collections.synchronizedMap(new HashMap<URL, SecurityDesc>());
+    private final Map<URL, SecurityDesc> jarLocationSecurityMap
+            = Collections.synchronizedMap(new HashMap<URL, SecurityDesc>());
 
     /*Set to prevent once tried-to-get resources to be tried again*/
     private final Set<URL> alreadyTried = Collections.synchronizedSet(new HashSet<URL>());
-    
-    /** Loader for codebase (which is a path, rather than a file) */
+
+    /**
+     * Loader for codebase (which is a path, rather than a file)
+     */
     private CodeBaseClassLoader codeBaseLoader;
-    
-    /** True if the jar with the main class has been found
-     * */
-    private boolean foundMainJar= false;
-
-    /** Name of the application's main class */
+
+    /**
+     * True if the jar with the main class has been found
+     *
+     */
+    private boolean foundMainJar = false;
+
+    /**
+     * Name of the application's main class
+     */
     private String mainClass = null;
-    
+
     /**
      * Variable to track how many times this loader is in use
      */
@@ -242,16 +294,18 @@
      * @param file the JNLP file
      * @param policy the UpdatePolicy for this class loader
      * @param mainName name of the application's main class
-     * @param enableCodeBase switch whether this classloader can search in codebase or not
-     * @throws net.sourceforge.jnlp.LaunchException when need to kill an app comes.
-     * 
+     * @param enableCodeBase switch whether this classloader can search in
+     * codebase or not
+     * @throws net.sourceforge.jnlp.LaunchException when need to kill an app
+     * comes.
+     *
      */
     protected JNLPClassLoader(JNLPFile file, UpdatePolicy policy, String mainName, boolean enableCodeBase) throws LaunchException {
         super(new URL[0], JNLPClassLoader.class.getClassLoader());
 
         OutputController.getLogger().log("New classloader: " + file.getFileLocation());
-        strict =  Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_STRICT_JNLP_CLASSLOADER));
-        
+        strict = Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_STRICT_JNLP_CLASSLOADER));
+
         this.file = file;
         this.updatePolicy = policy;
         this.resources = file.getResources();
@@ -262,10 +316,9 @@
 
         this.enableCodeBase = enableCodeBase;
 
-        
         AppVerifier verifier;
 
-        if (file instanceof PluginBridge && !((PluginBridge)file).useJNLPHref()) {
+        if (file instanceof PluginBridge && !((PluginBridge) file).useJNLPHref()) {
             verifier = new PluginAppVerifier();
         } else {
             verifier = new JNLPAppVerifier();
@@ -288,15 +341,26 @@
         initializeReadJarPermissions();
 
         installShutdownHooks();
-        
-
+
+    }
+
+    public static boolean isCertUnderestimated() {
+        return Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_SECURITY_ITW_IGNORECERTISSUES))
+                && !JNLPRuntime.isSecurityEnabled();
+    }
+
+    private static void consultCertificateSecurityException(LaunchException ex) throws LaunchException {
+        if (isCertUnderestimated()) {
+            OutputController.getLogger().log(OptionsDefinitions.OPTIONS.NOSEC.option + " and " + DeploymentConfiguration.KEY_SECURITY_ITW_IGNORECERTISSUES + " are declared. Ignoring certificate issue");
+            OutputController.getLogger().log(ex);
+        } else {
+            throw ex;
+        }
     }
 
     public boolean isStrict() {
         return strict;
     }
-    
-    
 
     /**
      * Install JVM shutdown hooks to clean up resources allocated by this
@@ -322,9 +386,9 @@
     }
 
     /**
-     * Gets the lock for a given unique key, creating one if it does not yet exist.
-     * This operation is atomic & thread-safe.
-     * 
+     * Gets the lock for a given unique key, creating one if it does not yet
+     * exist. This operation is atomic & thread-safe.
+     *
      * @param uniqueKey the file whose unique key should be used
      * @return the lock
      */
@@ -342,10 +406,10 @@
     }
 
     /**
-     * Creates a fully initialized JNLP classloader for the specified JNLPFile, 
-     * to be used as an applet/application's classloader.
-     * In contrast, JNLP classloaders can also be constructed simply to merge 
-     * its resources into another classloader.
+     * Creates a fully initialized JNLP classloader for the specified JNLPFile,
+     * to be used as an applet/application's classloader. In contrast, JNLP
+     * classloaders can also be constructed simply to merge its resources into
+     * another classloader.
      *
      * @param file the file to load classes for
      * @param policy the update policy to use when downloading resources
@@ -366,7 +430,7 @@
         if (loader.getSigningState() == SigningState.PARTIAL) {
             loader.securityDelegate.promptUserOnPartialSigning();
         } else if (!loader.getSigning() && !loader.securityDelegate.userPromptedForSandbox() && file instanceof PluginBridge) {
-            UnsignedAppletTrustConfirmation.checkUnsignedWithUserIfRequired((PluginBridge)file);
+            UnsignedAppletTrustConfirmation.checkUnsignedWithUserIfRequired((PluginBridge) file);
         }
 
         // New loader init may have caused extentions to create a
@@ -384,7 +448,7 @@
         // loader is now current + ext. But we also need to think of
         // the baseLoader
         if (baseLoader != null && baseLoader != loader) {
-           loader.merge(baseLoader);
+            loader.merge(baseLoader);
         }
 
         return loader;
@@ -392,12 +456,13 @@
 
     /**
      * Returns a JNLP classloader for the specified JNLP file.
-     * 
+     *
      * @param file the file to load classes for
      * @param policy the update policy to use when downloading resources
-     * @param enableCodeBase true if codebase can be searched (ok for applets,false for apps)
-     * @return  existing classloader. creates new if none reliable exists
-     * @throws net.sourceforge.jnlp.LaunchException  when launch is doomed
+     * @param enableCodeBase true if codebase can be searched (ok for
+     * applets,false for apps)
+     * @return existing classloader. creates new if none reliable exists
+     * @throws net.sourceforge.jnlp.LaunchException when launch is doomed
      */
     public static JNLPClassLoader getInstance(JNLPFile file, UpdatePolicy policy, boolean enableCodeBase) throws LaunchException {
         return getInstance(file, policy, null, enableCodeBase);
@@ -409,22 +474,23 @@
      * @param file the file to load classes for
      * @param policy the update policy to use when downloading resources
      * @param mainName Overrides the main class name of the application
-     * @param enableCodeBase ue if codebase can be searched (ok for applets,false for apps)
-     * @return  existing classloader. creates new if none reliable exists
-     * @throws net.sourceforge.jnlp.LaunchException  when launch is doomed
+     * @param enableCodeBase ue if codebase can be searched (ok for
+     * applets,false for apps)
+     * @return existing classloader. creates new if none reliable exists
+     * @throws net.sourceforge.jnlp.LaunchException when launch is doomed
      */
     public static JNLPClassLoader getInstance(JNLPFile file, UpdatePolicy policy, String mainName, boolean enableCodeBase) throws LaunchException {
         JNLPClassLoader loader;
         String uniqueKey = file.getUniqueKey();
 
-        synchronized ( getUniqueKeyLock(uniqueKey) ) {
+        synchronized (getUniqueKeyLock(uniqueKey)) {
             JNLPClassLoader baseLoader = uniqueKeyToLoader.get(uniqueKey);
 
             // A null baseloader implies that no loader has been created 
             // for this codebase/jnlp yet. Create one.
-            if (baseLoader == null ||
-                    (file.isApplication() && 
-                     !baseLoader.getJNLPFile().getFileLocation().equals(file.getFileLocation()))) {
+            if (baseLoader == null
+                    || (file.isApplication()
+                    && !baseLoader.getJNLPFile().getFileLocation().equals(file.getFileLocation()))) {
 
                 loader = createInstance(file, policy, mainName, enableCodeBase);
             } else {
@@ -433,15 +499,15 @@
                     // If this is an applet, we do need to consider its loader
                     loader = new JNLPClassLoader(file, policy, mainName, enableCodeBase);
 
-                    if (baseLoader != null)
+                    if (baseLoader != null) {
                         baseLoader.merge(loader);
+                    }
                 }
                 loader = baseLoader;
             }
 
             // loaders are mapped to a unique key. Only extensions and parent
             // share a key, so it is safe to always share based on it
-
             loader.incrementLoaderUseCount();
 
             uniqueKeyToLoader.put(uniqueKey, loader);
@@ -451,8 +517,7 @@
     }
 
     /**
-     * Returns a JNLP classloader for the JNLP file at the specified
-     * location.
+     * Returns a JNLP classloader for the JNLP file at the specified location.
      *
      * @param location the file's location
      * @param uniqueKey key to manage applets/applications in shared vm
@@ -463,15 +528,15 @@
      * @param enableCodeBase whether to enable codebase search or not
      * @return classlaoder of this appp
      * @throws java.io.IOException when IO fails
-     * @throws net.sourceforge.jnlp.ParseException  when parsing fails
-     * @throws net.sourceforge.jnlp.LaunchException  when launch is doomed
+     * @throws net.sourceforge.jnlp.ParseException when parsing fails
+     * @throws net.sourceforge.jnlp.LaunchException when launch is doomed
      */
     public static JNLPClassLoader getInstance(URL location, String uniqueKey, Version version, ParserSettings settings, UpdatePolicy policy, String mainName, boolean enableCodeBase)
             throws IOException, ParseException, LaunchException {
 
         JNLPClassLoader loader;
 
-        synchronized ( getUniqueKeyLock(uniqueKey) ) {
+        synchronized (getUniqueKeyLock(uniqueKey)) {
             loader = uniqueKeyToLoader.get(uniqueKey);
 
             if (loader == null || !location.equals(loader.getJNLPFile().getFileLocation())) {
@@ -542,18 +607,20 @@
 
     /**
      * Check if a described jar file is invalid
+     *
      * @param jar the jar to check
      * @return true if file exists AND is an invalid jar, false otherwise
      */
-    boolean isInvalidJar(JARDesc jar){
+    boolean isInvalidJar(JARDesc jar) {
         File cacheFile = tracker.getCacheFile(jar.getLocation());
-        if (cacheFile == null)
+        if (cacheFile == null) {
             return false;//File cannot be retrieved, do not claim it is an invalid jar
+        }
         boolean isInvalid = false;
         try {
             JarFile jarFile = new JarFile(cacheFile.getAbsolutePath());
             jarFile.close();
-        } catch (IOException ioe){
+        } catch (IOException ioe) {
             //Catch a ZipException or any other read failure
             isInvalid = true;
         }
@@ -562,11 +629,12 @@
 
     /**
      * Determine how invalid jars should be handled
+     *
      * @return whether to filter invalid jars, or error later on
      */
-    private boolean shouldFilterInvalidJars(){
-        if (file instanceof PluginBridge){
-            PluginBridge pluginBridge = (PluginBridge)file;
+    private boolean shouldFilterInvalidJars() {
+        if (file instanceof PluginBridge) {
+            PluginBridge pluginBridge = (PluginBridge) file;
             /*Ignore on applet, ie !useJNLPHref*/
             return !pluginBridge.useJNLPHref();
         }
@@ -574,14 +642,14 @@
     }
 
     /**
-     * Load all of the JARs used in this JNLP file into the
-     * ResourceTracker for downloading.
+     * Load all of the JARs used in this JNLP file into the ResourceTracker for
+     * downloading.
      */
     void initializeResources() throws LaunchException {
-        if (file instanceof PluginBridge){
-            PluginBridge bridge = (PluginBridge)file;
-
-            for (String codeBaseFolder : bridge.getCodeBaseFolders()){
+        if (file instanceof PluginBridge) {
+            PluginBridge bridge = (PluginBridge) file;
+
+            for (String codeBaseFolder : bridge.getCodeBaseFolders()) {
                 try {
                     addToCodeBaseLoader(new URL(file.getCodeBase(), codeBaseFolder));
                 } catch (MalformedURLException mfe) {
@@ -624,16 +692,16 @@
 
             available.add(jar);
 
-            if (jar.isEager())
+            if (jar.isEager()) {
                 initialJars.add(jar); // regardless of part
-
+            }
             tracker.addResource(jar.getLocation(),
                     jar.getVersion(), file.getDownloadOptions(),
                     jar.isCacheable() ? JNLPRuntime.getDefaultUpdatePolicy() : UpdatePolicy.FORCE);
         }
 
         //If there are no eager jars, initialize the first jar
-        if(initialJars.isEmpty()) {
+        if (initialJars.isEmpty()) {
             initialJars.add(jars[0]);
         }
 
@@ -644,10 +712,10 @@
         waitForJars(initialJars); //download the jars first.
 
         //A ZipException will propagate later on if the jar is invalid and not checked here
-        if (shouldFilterInvalidJars()){
+        if (shouldFilterInvalidJars()) {
             //We filter any invalid jars
             Iterator<JARDesc> iterator = initialJars.iterator();
-            while (iterator.hasNext()){
+            while (iterator.hasNext()) {
                 JARDesc jar = iterator.next();
                 if (isInvalidJar(jar)) {
                     //Remove this jar as an available jar
@@ -667,8 +735,9 @@
                 //Note: one of these exceptions could be from not being able
                 //to read the cacerts or trusted.certs files.
                 OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
-                throw new LaunchException(null, null, R("LSFatal"),
-                                        R("LCInit"), R("LFatalVerification"), R("LFatalVerificationInfo") + ": " +e.getMessage());
+                LaunchException ex = new LaunchException(null, null, R("LSFatal"),
+                        R("LCInit"), R("LFatalVerification"), R("LFatalVerificationInfo") + ": " + e.getMessage());
+                consultCertificateSecurityException(ex);
             }
 
             //Case when at least one jar has some signing
@@ -679,8 +748,9 @@
                 checkForMain(initialJars);
 
                 // If jar with main class was not found, check available resources
-                while (!foundMainJar && available != null && !available.isEmpty())
+                while (!foundMainJar && available != null && !available.isEmpty()) {
                     addNextResource();
+                }
 
                 // If the jar with main class was not found, check extension
                 // jnlp's resources
@@ -712,16 +782,18 @@
                 }
 
                 // If main jar was found, but a signed JNLP file was not located
-                if (!isSignedJNLP && foundMainJar)
+                if (!isSignedJNLP && foundMainJar) {
                     file.setSignedJNLPAsMissing();
+                }
 
                 //user does not trust this publisher
                 if (!jcv.isTriviallySigned()) {
                     checkTrustWithUser();
                 } else {
                     /**
-                     * If the user trusts this publisher (i.e. the publisher's certificate
-                     * is in the user's trusted.certs file), we do not show any dialogs.
+                     * If the user trusts this publisher (i.e. the publisher's
+                     * certificate is in the user's trusted.certs file), we do
+                     * not show any dialogs.
                      */
                 }
             } else {
@@ -803,12 +875,13 @@
         }
         return codebase;
     }
-    
-     /***
-     * Checks for the jar that contains the attribute. 
-     * 
+
+    /**
+     * *
+     * Checks for the jar that contains the attribute.
+     *
      * @param jars Jars that are checked to see if they contain the main class
-     * @param  name attribute to be found
+     * @param name attribute to be found
      * @return value of attribute if found
      */
     public String checkForAttributeInJars(List<JARDesc> jars, Attributes.Name name) {
@@ -816,7 +889,6 @@
             return null;
         }
 
-
         // Check main jar
         JARDesc mainJarDesc = ResourcesDesc.getMainJAR(jars);
         String result = getManifestAttribute(mainJarDesc.getLocation(), name);
@@ -827,33 +899,36 @@
 
         // Check first jar
         JARDesc firstJarDesc = jars.get(0);
-        result = getManifestAttribute(firstJarDesc.getLocation(),name);
-        
+        result = getManifestAttribute(firstJarDesc.getLocation(), name);
+
         if (result != null) {
             return result;
         }
 
         // Still not found? Iterate and set if only 1 was found
-        for (JARDesc jarDesc: jars) {
+        for (JARDesc jarDesc : jars) {
             String attributeInThisJar = getManifestAttribute(jarDesc.getLocation(), name);
-                if (attributeInThisJar != null) {
-                    if (result == null) { // first main class
-                        result = attributeInThisJar;
-                    } else { // There is more than one main class. Set to null and break.
-                        result = null;
-                        break;
+            if (attributeInThisJar != null) {
+                if (result == null) { // first main class
+                    result = attributeInThisJar;
+                } else { // There is more than one main class. Set to null and break.
+                    result = null;
+                    break;
                 }
             }
         }
         return result;
     }
-    /***
+
+    /**
+     * *
      * Checks for the jar that contains the main class. If the main class was
      * found, it checks to see if the jar is signed and whether it contains a
      * signed JNLP file
-     * 
+     *
      * @param jars Jars that are checked to see if they contain the main class
-     * @throws LaunchException Thrown if the signed JNLP file, within the main jar, fails to be verified or does not match
+     * @throws LaunchException Thrown if the signed JNLP file, within the main
+     * jar, fails to be verified or does not match
      */
     void checkForMain(List<JARDesc> jars) throws LaunchException {
 
@@ -866,7 +941,6 @@
         }
 
         // The main class may be specified in the manifest
-
         if (mainClass == null) {
             mainClass = checkForAttributeInJars(jars, Attributes.Name.MAIN_CLASS);
         }
@@ -910,31 +984,32 @@
      * Gets the name of the main method if specified in the manifest
      *
      * @param location The JAR location
-     * @return the main class name, null if there isn't one of if there was an error
+     * @return the main class name, null if there isn't one of if there was an
+     * error
      */
     String getMainClassName(URL location) {
         return getManifestAttribute(location, Attributes.Name.MAIN_CLASS);
     }
-    
-    
+
     /**
      * Gets the name of the main method if specified in the manifest
      *
      * @param location The JAR location
      * @param attribute name of the attribute to find
-     * @return the attribute value, null if there isn't one of if there was an error
+     * @return the attribute value, null if there isn't one of if there was an
+     * error
      */
-    public String getManifestAttribute(URL location, Attributes.Name  attribute) {
+    public String getManifestAttribute(URL location, Attributes.Name attribute) {
 
         String attributeValue = null;
         File f = tracker.getCacheFile(location);
 
-        if( f != null) {
+        if (f != null) {
             JarFile mainJar = null;
             try {
                 mainJar = new JarFile(f);
                 Manifest manifest = mainJar.getManifest();
-                if (manifest == null || manifest.getMainAttributes() == null){
+                if (manifest == null || manifest.getMainAttributes() == null) {
                     //yes, jars without manifest exists
                     return null;
                 }
@@ -972,10 +1047,11 @@
     /**
      * Is called by checkForMain() to check if the jar file is signed and if it
      * contains a signed JNLP file.
-     * 
+     *
      * @param jarDesc JARDesc of jar
      * @param jarFile the jar file
-     * @throws LaunchException thrown if the signed JNLP file, within the main jar, fails to be verified or does not match
+     * @throws LaunchException thrown if the signed JNLP file, within the main
+     * jar, fails to be verified or does not match
      */
     private void verifySignedJNLP(JARDesc jarDesc, JarFile jarFile)
             throws LaunchException {
@@ -1014,13 +1090,14 @@
                             matcher = new JNLPMatcher(inStream, jnlpStream, true, jnlp.getParserSettings());
                         }
                         // If signed JNLP file does not matches launching JNLP file, throw JNLPMatcherException
-                        if (!matcher.isMatch())
+                        if (!matcher.isMatch()) {
                             throw new JNLPMatcherException("Signed Application did not match launching JNLP File");
+                        }
 
                         this.isSignedJNLP = true;
                         OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Signed Application Verification Successful");
 
-                        break; 
+                        break;
                     }
                 }
             }
@@ -1030,17 +1107,16 @@
              * Throws LaunchException if signed JNLP file fails to be verified
              * or fails to match the launching JNLP file
              */
-
-            throw new LaunchException(file, null, R("LSFatal"), R("LCClient"),
+            LaunchException ex = new LaunchException(file, null, R("LSFatal"), R("LCClient"),
                     R("LSignedJNLPFileDidNotMatch"), R(e.getMessage()));
-
+            consultCertificateSecurityException(ex);
             /*
              * Throwing this exception will fail to initialize the application
              * resulting in the termination of the application
              */
 
         } catch (Exception e) {
-            
+
             OutputController.getLogger().log(e);
 
             /*
@@ -1049,21 +1125,21 @@
              * JarCertVerifier.add) it assumes the jar file is unsigned and
              * skip the check for a signed JNLP file
              */
-            
         }
         OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Ending check for signed JNLP file...");
     }
 
     /**
      * Prompt the user for trust on all the signers that require approval.
+     *
      * @throws LaunchException if the user does not approve every dialog prompt.
      */
     private void checkTrustWithUser() throws LaunchException {
-        
+
         if (securityDelegate.getRunInSandbox()) {
             return;
         }
-        
+
         if (getSigningState() == SigningState.FULL && jcv.isFullySigned() && !jcv.getAlreadyTrustPublisher()) {
             jcv.checkTrustWithUser(securityDelegate, file);
         }
@@ -1086,10 +1162,9 @@
     }
 
     /**
-     * Add applet's codebase URL.  This allows compatibility with
-     * applets that load resources from their codebase instead of
-     * through JARs, but can slow down resource loading.  Resources
-     * loaded from the codebase are not cached.
+     * Add applet's codebase URL. This allows compatibility with applets that
+     * load resources from their codebase instead of through JARs, but can slow
+     * down resource loading. Resources loaded from the codebase are not cached.
      */
     public void enableCodeBase() {
         addToCodeBaseLoader(file.getCodeBase());
@@ -1097,11 +1172,12 @@
 
     /**
      * Sets the JNLP app this group is for; can only be called once.
+     *
      * @param app application to be ser to this group
      */
     public void setApplication(ApplicationInstance app) {
         if (this.app != null) {
-                OutputController.getLogger().log(new IllegalStateException("Application can only be set once"));
+            OutputController.getLogger().log(new IllegalStateException("Application can only be set once"));
             return;
         }
 
@@ -1132,7 +1208,6 @@
 
             // should check for extensions or boot, automatically give all
             // access w/o security dialog once we actually check certificates.
-
             // copy security permissions from SecurityDesc element
             if (security != null) {
                 // Security desc. is used only to track security settings for the
@@ -1182,9 +1257,10 @@
             }
 
             // Class from host X should be allowed to connect to host X
-            if (cs.getLocation() != null && cs.getLocation().getHost().length() > 0)
+            if (cs.getLocation() != null && cs.getLocation().getHost().length() > 0) {
                 result.add(new SocketPermission(UrlUtils.getHostAndPort(cs.getLocation()),
                         "connect, accept"));
+            }
 
             return result;
         } catch (RuntimeException ex) {
@@ -1198,33 +1274,34 @@
     }
 
     /**
-     * Adds to the specified list of JARS any other JARs that need
-     * to be loaded at the same time as the JARs specified (ie, are
-     * in the same part).
+     * Adds to the specified list of JARS any other JARs that need to be loaded
+     * at the same time as the JARs specified (ie, are in the same part).
+     *
      * @param jars jar archives to be added
      */
     protected void fillInPartJars(List<JARDesc> jars) {
         //can not use iterator, will rise ConcurrentModificationException on jars.add(jar);
-        for (int x = 0 ; x< jars.size() ; x++) {
+        for (int x = 0; x < jars.size(); x++) {
             String part = jars.get(x).getPart();
 
             // "available" field can be affected by two different threads
             // working in loadClass(String)
             synchronized (available) {
                 for (JARDesc jar : available) {
-                    if (part != null && part.equals(jar.getPart()))
-                        if (!jars.contains(jar))
+                    if (part != null && part.equals(jar.getPart())) {
+                        if (!jars.contains(jar)) {
                             jars.add(jar);
+                        }
+                    }
                 }
             }
         }
     }
 
     /**
-     * Ensures that the list of jars have all been transferred, and
-     * makes them available to the classloader.  If a jar contains
-     * native code, the libraries will be extracted and placed in
-     * the path.
+     * Ensures that the list of jars have all been transferred, and makes them
+     * available to the classloader. If a jar contains native code, the
+     * libraries will be extracted and placed in the path.
      *
      * @param jars the list of jars to load
      */
@@ -1256,13 +1333,13 @@
                             // particularly when using The FileManager applet from Webmin.
                             try (JarFile jarFile = new JarFile(localFile)) {
                                 for (JarEntry je : Collections.list(jarFile.entries())) {
-                                    
+
                                     // another jar in my jar? it is more likely than you think
                                     if (je.getName().endsWith(".jar")) {
                                         // We need to extract that jar so that it can be loaded
                                         // (inline loading with "jar:..!/..." path will not work
                                         // with standard classloader methods)
-                                        
+
                                         String extractedJarLocation = localFile + ".nested/" + je.getName();
                                         File parentDir = new File(extractedJarLocation).getParentFile();
                                         if (!parentDir.isDirectory() && !parentDir.mkdirs()) {
@@ -1270,7 +1347,7 @@
                                         }
                                         FileOutputStream extractedJar = new FileOutputStream(extractedJarLocation);
                                         InputStream is = jarFile.getInputStream(je);
-                                        
+
                                         byte[] bytes = new byte[1024];
                                         int read = is.read(bytes);
                                         int fileSize = read;
@@ -1279,41 +1356,41 @@
                                             read = is.read(bytes);
                                             fileSize += read;
                                         }
-                                        
+
                                         is.close();
                                         extractedJar.close();
-                                        
+
                                         // 0 byte file? skip
                                         if (fileSize <= 0) {
                                             continue;
                                         }
-                                        
+
                                         tracker.addResource(new File(extractedJarLocation).toURL(), null, null, null);
-                                        
+
                                         URL codebase = file.getCodeBase();
                                         if (codebase == null) {
                                             //FIXME: codebase should be the codebase of the Main Jar not
                                             //the location. Although, it still works in the current state.
                                             codebase = file.getResources().getMainJAR().getLocation();
                                         }
-                                        
+
                                         final SecurityDesc jarSecurity = securityDelegate.getJarPermissions(codebase);
-                                        
+
                                         try {
                                             URL fileURL = new URL("file://" + extractedJarLocation);
                                             // there is no remote URL for this, so lets fake one
                                             URL fakeRemote = new URL(jar.getLocation().toString() + "!" + je.getName());
                                             CachedJarFileCallback.getInstance().addMapping(fakeRemote, fileURL);
                                             addURL(fakeRemote);
-                                            
+
                                             jarLocationSecurityMap.put(fakeRemote, jarSecurity);
-                                            
+
                                         } catch (MalformedURLException mfue) {
                                             OutputController.getLogger().log(OutputController.Level.WARNING_DEBUG, "Unable to add extracted nested jar to classpath");
                                             OutputController.getLogger().log(OutputController.Level.ERROR_ALL, mfue);
                                         }
                                     }
-                                    
+
                                     jarEntries.add(je.getName());
                                 }
                             }
@@ -1328,7 +1405,7 @@
 
                             try (JarFile jarFile = new JarFile(localFile.getAbsolutePath())) {
                                 Manifest mf = jarFile.getManifest();
-                                
+
                                 // Only check classpath if this is the plugin and there is no jnlp_href usage.
                                 // Note that this is different from proprietary plugin behaviour.
                                 // If jnlp_href is used, the app should be treated similarly to when
@@ -1336,19 +1413,19 @@
                                 if (file instanceof PluginBridge && !((PluginBridge) file).useJNLPHref()) {
                                     classpaths.addAll(getClassPathsFromManifest(mf, jar.getLocation().getPath()));
                                 }
-                                
+
                                 JarIndexAccess index = JarIndexAccess.getJarIndex(jarFile);
-                                if (index != null)
+                                if (index != null) {
                                     jarIndexes.add(index);
+                                }
                             }
                         } else {
                             CachedJarFileCallback.getInstance().addMapping(jar.getLocation(), jar.getLocation());
                         }
 
                         OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Activate jar: " + location);
-                    }
-                    catch (Exception ex) {
-                       OutputController.getLogger().log(ex);
+                    } catch (Exception ex) {
+                        OutputController.getLogger().log(ex);
                     }
 
                     // some programs place a native library in any jar
@@ -1374,14 +1451,16 @@
         }
 
         String result = super.findLibrary(lib);
-        if (result != null)
+        if (result != null) {
             return result;
+        }
 
         return findLibraryExt(lib);
     }
 
     /**
      * Try to find the library path from another peer classloader.
+     *
      * @param lib library to be found
      * @return location of library
      */
@@ -1389,19 +1468,21 @@
         for (JNLPClassLoader loader : loaders) {
             String result = null;
 
-            if (loader != this)
+            if (loader != this) {
                 result = loader.findLibrary(lib);
-
-            if (result != null)
+            }
+
+            if (result != null) {
                 return result;
+            }
         }
 
         return null;
     }
 
     /**
-     * Wait for a group of JARs, and send download events if there
-     * is a download listener or display a progress window otherwise.
+     * Wait for a group of JARs, and send download events if there is a download
+     * listener or display a progress window otherwise.
      *
      * @param jars the jars
      */
@@ -1419,6 +1500,7 @@
 
     /**
      * Find the loaded class in this loader or any of its extension loaders.
+     *
      * @param name name of class
      * @return the class found by name
      */
@@ -1432,41 +1514,43 @@
                 result = loader.findLoadedClassAll(name);
             }
 
-            if (result != null)
+            if (result != null) {
                 return result;
+            }
         }
-        
+
         // Result is still null. Return what the codebaseloader 
         // has (which returns null if it is not loaded there either)
-        if (codeBaseLoader != null)
+        if (codeBaseLoader != null) {
             return codeBaseLoader.findLoadedClassFromParent(name);
-        else
+        } else {
             return null;
+        }
     }
 
     /**
-     * Find a JAR in the shared 'extension' classloaders, this
-     * classloader, or one of the classloaders for the JNLP file's
-     * extensions.
-     * This method used to be qualified "synchronized." This was done solely for the
-     * purpose of ensuring only one thread entered the method at a time. This was not
+     * Find a JAR in the shared 'extension' classloaders, this classloader, or
+     * one of the classloaders for the JNLP file's extensions. This method used
+     * to be qualified "synchronized." This was done solely for the purpose of
+     * ensuring only one thread entered the method at a time. This was not
      * strictly necessary - ensuring that all affected fields are thread-safe is
-     * sufficient. Locking on the JNLPClassLoader instance when this method is called
-     * can result in deadlock if another thread is dealing with the CodebaseClassLoader
-     * at the same time. This solution is very heavy-handed as the instance lock is not
-     * truly required, and taking the lock on the classloader instance when not needed is
-     * not in general a good idea because it can and will lead to deadlock when multithreaded
-     * classloading is in effect. The solution is to keep the fields thread safe on their own.
-     * This is accomplished by wrapping them in Collections.synchronized* to provide
-     * atomic add/remove operations, and synchronizing on them when iterating or performing
-     * multiple mutations.
-     * See bug report RH976833. On some systems this bug will manifest itself as deadlock on
-     * every webpage with more than one Java applet, potentially also causing the browser
-     * process to hang.
-     * More information in the mailing list archives:
+     * sufficient. Locking on the JNLPClassLoader instance when this method is
+     * called can result in deadlock if another thread is dealing with the
+     * CodebaseClassLoader at the same time. This solution is very heavy-handed
+     * as the instance lock is not truly required, and taking the lock on the
+     * classloader instance when not needed is not in general a good idea
+     * because it can and will lead to deadlock when multithreaded classloading
+     * is in effect. The solution is to keep the fields thread safe on their
+     * own. This is accomplished by wrapping them in Collections.synchronized*
+     * to provide atomic add/remove operations, and synchronizing on them when
+     * iterating or performing multiple mutations. See bug report RH976833. On
+     * some systems this bug will manifest itself as deadlock on every webpage
+     * with more than one Java applet, potentially also causing the browser
+     * process to hang. More information in the mailing list archives:
      * http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2013-September/024536.html
-     * 
-     * Affected fields: available, classpaths, jarIndexes, jarEntries, jarLocationSecurityMap
+     *
+     * Affected fields: available, classpaths, jarIndexes, jarEntries,
+     * jarLocationSecurityMap
      */
     @Override
     public Class<?> loadClass(String name) throws ClassNotFoundException {
@@ -1476,8 +1560,9 @@
         if (result == null) {
             try {
                 ClassLoader parent = getParent();
-                if (parent == null)
+                if (parent == null) {
                     parent = ClassLoader.getSystemClassLoader();
+                }
 
                 return parent.loadClass(name);
             } catch (ClassNotFoundException ex) {
@@ -1486,7 +1571,6 @@
 
         // filter out 'bad' package names like java, javax
         // validPackage(name);
-
         // search this and the extension loaders
         if (result == null) {
             try {
@@ -1518,7 +1602,6 @@
                 }
 
                 // As a last resort, look in any available indexes
-
                 // Currently this loads jars directly from the site. We cannot cache it because this
                 // call is initiated from within the applet, which does not have disk read/write permissions
                 // This field synchronized before iterating over it since it may
@@ -1563,9 +1646,10 @@
     /**
      * Adds a new JARDesc into this classloader.
      * <p>
-     * This will add the JARDesc into the resourceTracker and block until it
-     * is downloaded.
+     * This will add the JARDesc into the resourceTracker and block until it is
+     * downloaded.
      * </p>
+     *
      * @param desc the JARDesc for the new jar
      */
     private void addNewJar(final JARDesc desc) {
@@ -1574,6 +1658,7 @@
 
     /**
      * Adds a new JARDesc into this classloader.
+     *
      * @param desc the JARDesc for the new jar
      * @param updatePolicy the UpdatePolicy for the resource
      */
@@ -1585,7 +1670,7 @@
                 desc.getVersion(),
                 null,
                 updatePolicy
-                );
+        );
 
         // Give read permissions to the cached jar file
         AccessController.doPrivileged(new PrivilegedAction<Void>() {
@@ -1604,11 +1689,10 @@
         final URL cachedUrl = tracker.getCacheURL(remoteURL); // blocks till download
 
         available.remove(desc); // Resource downloaded. Remove from available list.
-        
+
         try {
 
             // Verify if needed
-
             final List<JARDesc> jars = new ArrayList<>();
             jars.add(desc);
 
@@ -1617,7 +1701,6 @@
             // having AllPermissions as those actions normally happen
             // during initialization. We therefore need to do those 
             // actions as privileged.
-
             AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
                 @Override
                 public Void run() throws Exception {
@@ -1656,11 +1739,11 @@
                     final String fName = name;
                     return AccessController.doPrivileged(
                             new PrivilegedExceptionAction<Class<?>>() {
-                                @Override
-                                public Class<?> run() throws ClassNotFoundException {
-                                        return JNLPClassLoader.super.findClass(fName);
-                                }
-                            }, getAccessControlContextForClassLoading());
+                        @Override
+                        public Class<?> run() throws ClassNotFoundException {
+                            return JNLPClassLoader.super.findClass(fName);
+                        }
+                    }, getAccessControlContextForClassLoading());
                 } else {
                     return loader.findClass(name);
                 }
@@ -1673,17 +1756,17 @@
         }
 
         // Try codebase loader
-        if (codeBaseLoader != null)
+        if (codeBaseLoader != null) {
             return codeBaseLoader.findClassNonRecursive(name);
+        }
 
         // All else failed. Throw CNFE
         throw new ClassNotFoundException(name);
     }
 
     /**
-     * Search for the class by incrementally adding resources to the
-     * classloader and its extension classloaders until the resource
-     * is found.
+     * Search for the class by incrementally adding resources to the classloader
+     * and its extension classloaders until the resource is found.
      */
     private Class<?> loadClassExt(String name) throws ClassNotFoundException {
         // make recursive
@@ -1698,7 +1781,7 @@
         // add resources until found
         while (true) {
             JNLPClassLoader addedTo = null;
-            
+
             try {
                 addedTo = addNextResource();
             } catch (LaunchException e) {
@@ -1708,12 +1791,12 @@
                  * [It is handled in initializeResources()]. Therefore, this
                  * exception will never be thrown here and is escaped
                  */
-
                 throw new IllegalStateException(e);
             }
 
-            if (addedTo == null)
+            if (addedTo == null) {
                 throw new ClassNotFoundException(name);
+            }
 
             try {
                 return addedTo.findClass(name);
@@ -1723,11 +1806,10 @@
     }
 
     /**
-     * Finds the resource in this, the parent, or the extension
-     * class loaders.
+     * Finds the resource in this, the parent, or the extension class loaders.
      *
-     * @return a {@link URL} for the resource, or {@code null}
-     * if the resource could not be found.
+     * @return a {@link URL} for the resource, or {@code null} if the resource
+     * could not be found.
      */
     @Override
     public URL findResource(String name) {
@@ -1741,17 +1823,18 @@
         } catch (IOException e) {
             OutputController.getLogger().log(e);
         }
-        
+
         // If result is still null, look in the codebase loader
-        if (result == null && codeBaseLoader != null)
+        if (result == null && codeBaseLoader != null) {
             result = codeBaseLoader.findResource(name);
+        }
 
         return result;
     }
 
     /**
-     * Find the resources in this, the parent, or the extension
-     * class loaders. Load lazy resources if not found in current resources.
+     * Find the resources in this, the parent, or the extension class loaders.
+     * Load lazy resources if not found in current resources.
      */
     @Override
     public Enumeration<URL> findResources(String name) throws IOException {
@@ -1770,8 +1853,7 @@
     }
 
     /**
-     * Find the resources in this, the parent, or the extension
-     * class loaders.
+     * Find the resources in this, the parent, or the extension class loaders.
      */
     private Enumeration<URL> findResourcesBySearching(String name) throws IOException {
         List<URL> lresources = new ArrayList<>();
@@ -1787,11 +1869,11 @@
                 try {
                     e = AccessController.doPrivileged(
                             new PrivilegedExceptionAction<Enumeration<URL>>() {
-                                @Override
-                                public Enumeration<URL> run() throws IOException {
-                                    return JNLPClassLoader.super.findResources(fName);
-                                }
-                            }, getAccessControlContextForClassLoading());
+                        @Override
+                        public Enumeration<URL> run() throws IOException {
+                            return JNLPClassLoader.super.findResources(fName);
+                        }
+                    }, getAccessControlContextForClassLoading());
                 } catch (PrivilegedActionException pae) {
                 }
             } else {
@@ -1801,16 +1883,16 @@
             final Enumeration<URL> fURLEnum = e;
             try {
                 lresources.addAll(AccessController.doPrivileged(
-                    new PrivilegedExceptionAction<Collection<URL>>() {
-                        @Override
-                        public Collection<URL> run() {
-                            List<URL> resources = new ArrayList<>();
-                            while (fURLEnum != null && fURLEnum.hasMoreElements()) {
-                                resources.add(fURLEnum.nextElement());
-                            }
-                            return resources;
+                        new PrivilegedExceptionAction<Collection<URL>>() {
+                    @Override
+                    public Collection<URL> run() {
+                        List<URL> resources = new ArrayList<>();
+                        while (fURLEnum != null && fURLEnum.hasMoreElements()) {
+                            resources.add(fURLEnum.nextElement());
                         }
-                    }, getAccessControlContextForClassLoading()));
+                        return resources;
+                    }
+                }, getAccessControlContextForClassLoading()));
             } catch (PrivilegedActionException pae) {
             }
         }
@@ -1819,8 +1901,9 @@
         // otherwise the server will get hammered) 
         if (lresources.isEmpty() && codeBaseLoader != null) {
             e = codeBaseLoader.findResources(name);
-            while (e.hasMoreElements())
+            while (e.hasMoreElements()) {
                 lresources.add(e.nextElement());
+            }
         }
 
         return Collections.enumeration(lresources);
@@ -1837,8 +1920,7 @@
     }
 
     /**
-     * Adds whatever resources have already been downloaded in the
-     * background.
+     * Adds whatever resources have already been downloaded in the background.
      */
     protected void addAvailable() {
         // go through available, check tracker for it and all of its
@@ -1850,21 +1932,23 @@
     }
 
     /**
-     * Adds the next unused resource to the classloader.  That
-     * resource and all those in the same part will be downloaded
-     * and added to the classloader before returning.  If there are
-     * no more resources to add, the method returns immediately.
+     * Adds the next unused resource to the classloader. That resource and all
+     * those in the same part will be downloaded and added to the classloader
+     * before returning. If there are no more resources to add, the method
+     * returns immediately.
      *
      * @return the classloader that resources were added to, or null
-     * @throws LaunchException Thrown if the signed JNLP file, within the main jar, fails to be verified or does not match
+     * @throws LaunchException Thrown if the signed JNLP file, within the main
+     * jar, fails to be verified or does not match
      */
     protected JNLPClassLoader addNextResource() throws LaunchException {
         if (available.isEmpty()) {
             for (int i = 1; i < loaders.length; i++) {
                 JNLPClassLoader result = loaders[i].addNextResource();
 
-                if (result != null)
+                if (result != null) {
                     return result;
+                }
             }
             return null;
         }
@@ -1882,25 +1966,28 @@
 
     // this part compatibility with previous classloader
     /**
-     * @return title if available.  Substitutions if not.
+     * @return title if available. Substitutions if not.
      * @deprecated
      */
     @Deprecated
     public String getExtensionName() {
         String result = file.getInformation().getTitle();
 
-        if (result == null)
+        if (result == null) {
             result = file.getInformation().getDescription();
-        if (result == null && file.getFileLocation() != null)
+        }
+        if (result == null && file.getFileLocation() != null) {
             result = file.getFileLocation().toString();
-        if (result == null && file.getCodeBase() != null)
+        }
+        if (result == null && file.getCodeBase() != null) {
             result = file.getCodeBase().toString();
+        }
 
         return result;
     }
 
     /**
-     * @return  location if jnlp
+     * @return location if jnlp
      * @deprecated
      */
     @Deprecated
@@ -1914,14 +2001,13 @@
 
     /**
      * Call this when it's suspected that an applet's permission level may have
-     * just changed from Full Signing to Partial Signing.
-     * This will display a one-time prompt asking the user to confirm running
-     * the partially signed applet.
-     * Partially Signed applets always start off as appearing to be Fully
-     * Signed, and then during the initialization or loading process, we find
-     * that we actually need to demote the applet to Partial, either due to
-     * finding that not all of its JARs are actually signed, or because it
-     * needs to load something unsigned out of the codebase.
+     * just changed from Full Signing to Partial Signing. This will display a
+     * one-time prompt asking the user to confirm running the partially signed
+     * applet. Partially Signed applets always start off as appearing to be
+     * Fully Signed, and then during the initialization or loading process, we
+     * find that we actually need to demote the applet to Partial, either due to
+     * finding that not all of its JARs are actually signed, or because it needs
+     * to load something unsigned out of the codebase.
      */
     private void checkPartialSigningWithUser() {
         if (signing == SigningState.FULL && JNLPRuntime.isVerifying()) {
@@ -1949,9 +2035,8 @@
      * @param source the origin (remote) url of the code
      * @return The SecurityDescriptor for that source
      */
-
     protected SecurityDesc getCodeSourceSecurity(URL source) {
-        SecurityDesc sec=jarLocationSecurityMap.get(source);
+        SecurityDesc sec = jarLocationSecurityMap.get(source);
         synchronized (alreadyTried) {
             if (sec == null && !alreadyTried.contains(source)) {
                 alreadyTried.add(source);
@@ -1967,8 +2052,8 @@
                 }
             }
         }
-        if (sec == null){
-            OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("LNoSecInstance",source.toString()));
+        if (sec == null) {
+            OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("LNoSecInstance", source.toString()));
         }
         return sec;
     }
@@ -1988,9 +2073,10 @@
         }
 
         // jars
-        for (URL u : extLoader.getURLs())
+        for (URL u : extLoader.getURLs()) {
             addURL(u);
-        
+        }
+
         // Codebase
         addToCodeBaseLoader(extLoader.file.getCodeBase());
 
@@ -2009,7 +2095,7 @@
 
     /**
      * Adds the given path to the path loader
-     * 
+     *
      * @param u the path to add
      * @throws IllegalArgumentException If the given url is not a path
      */
@@ -2026,7 +2112,7 @@
         // If there is no loader yet, create one, else add it to the 
         // existing one (happens when called from merge())
         if (codeBaseLoader == null) {
-            codeBaseLoader = new CodeBaseClassLoader(new URL[] { u }, this);
+            codeBaseLoader = new CodeBaseClassLoader(new URL[]{u}, this);
         } else {
             codeBaseLoader.addURL(u);
         }
@@ -2036,11 +2122,12 @@
      * Returns a set of paths that indicate the Class-Path entries in the
      * manifest file. The paths are rooted in the same directory as the
      * originalJarPath.
+     *
      * @param mf the manifest
-     * @param originalJarPath the remote/original path of the jar containing
-     * the manifest
-     * @return a Set of String where each string is a path to the jar on
-     * the original jar's classpath.
+     * @param originalJarPath the remote/original path of the jar containing the
+     * manifest
+     * @return a Set of String where each string is a path to the jar on the
+     * original jar's classpath.
      */
     private Set<String> getClassPathsFromManifest(Manifest mf, String originalJarPath) {
         Set<String> result = new HashSet<>();
@@ -2069,20 +2156,21 @@
         }
         return result;
     }
-    
+
     /**
      * Increments loader use count by 1
-     * 
+     *
      * @throws SecurityException if caller is not trusted
      */
     private void incrementLoaderUseCount() {
 
         // For use by trusted code only
-        if (System.getSecurityManager() != null)
+        if (System.getSecurityManager() != null) {
             System.getSecurityManager().checkPermission(new AllPermission());
+        }
 
         // NB: There will only ever be one class-loader per unique-key
-        synchronized ( getUniqueKeyLock(file.getUniqueKey()) ){
+        synchronized (getUniqueKeyLock(file.getUniqueKey())) {
             useCount++;
         }
     }
@@ -2105,8 +2193,8 @@
             try {
                 tracker.removeResource(eachJar.getLocation());
             } catch (Exception e) {
-                    OutputController.getLogger().log(e);
-                    OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Failed to remove resource from tracker, continuing..");
+                OutputController.getLogger().log(e);
+                OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Failed to remove resource from tracker, continuing..");
             }
 
             File cachedFile = CacheUtil.getCacheFile(eachJar.getLocation(), null);
@@ -2144,9 +2232,11 @@
 
     /**
      * Manages DownloadService jars which are not mentioned in the JNLP file
+     *
      * @param ref Path to the resource.
      * @param version The version of resource. If null, no version is specified.
-     * @param action The action to perform with the resource. Either DOWNLOADTOCACHE, REMOVEFROMCACHE, or CHECKCACHE.
+     * @param action The action to perform with the resource. Either
+     * DOWNLOADTOCACHE, REMOVEFROMCACHE, or CHECKCACHE.
      * @return true if CHECKCACHE and the resource is cached.
      */
     boolean manageExternalJars(URL ref, String version, DownloadAction action) {
@@ -2154,17 +2244,18 @@
         JNLPClassLoader foundLoader = LocateJnlpClassLoader.getLoaderByResourceUrl(this, ref, version);
         Version resourceVersion = (version == null) ? null : new Version(version);
 
-        if (foundLoader != null)
+        if (foundLoader != null) {
+            approved = true;
+        } else if (ref.toString().startsWith(file.getNotNullProbalbeCodeBase().toString())) {
             approved = true;
-
-        else if (ref.toString().startsWith(file.getNotNullProbalbeCodeBase().toString()))
+        } else if (SecurityDesc.ALL_PERMISSIONS.equals(security.getSecurityType())) {
             approved = true;
-        else if (SecurityDesc.ALL_PERMISSIONS.equals(security.getSecurityType()))
-            approved = true;
+        }
 
         if (approved) {
-            if (foundLoader == null)
+            if (foundLoader == null) {
                 foundLoader = this;
+            }
 
             if (action == DownloadAction.DOWNLOAD_TO_CACHE) {
                 JARDesc jarToCache = new JARDesc(ref, resourceVersion, null, false, true, false, true);
@@ -2173,7 +2264,7 @@
                 foundLoader.addNewJar(jarToCache, UpdatePolicy.FORCE);
 
             } else if (action == DownloadAction.REMOVE_FROM_CACHE) {
-                JARDesc[] jarToRemove = { new JARDesc(ref, resourceVersion, null, false, true, false, true) };
+                JARDesc[] jarToRemove = {new JARDesc(ref, resourceVersion, null, false, true, false, true)};
                 foundLoader.removeJars(jarToRemove);
 
             } else if (action == DownloadAction.CHECK_CACHE) {
@@ -2185,21 +2276,22 @@
 
     /**
      * Decrements loader use count by 1
-     * 
+     *
      * If count reaches 0, loader is removed from list of available loaders
-     * 
+     *
      * @throws SecurityException if caller is not trusted
      */
     public void decrementLoaderUseCount() {
 
         // For use by trusted code only
-        if (System.getSecurityManager() != null)
+        if (System.getSecurityManager() != null) {
             System.getSecurityManager().checkPermission(new AllPermission());
+        }
 
         String uniqueKey = file.getUniqueKey();
 
         // NB: There will only ever be one class-loader per unique-key
-        synchronized ( getUniqueKeyLock(uniqueKey) ) {
+        synchronized (getUniqueKeyLock(uniqueKey)) {
             useCount--;
 
             if (useCount <= 0) {
@@ -2209,17 +2301,18 @@
     }
 
     /**
-     * Returns an appropriate AccessControlContext for loading classes in
-     * the running instance.
+     * Returns an appropriate AccessControlContext for loading classes in the
+     * running instance.
      *
      * The default context during class-loading only allows connection to
      * codebase. However applets are allowed to load jars from arbitrary
-     * locations and the codebase only access falls short if a class from
-     * one location needs a class from another.
+     * locations and the codebase only access falls short if a class from one
+     * location needs a class from another.
      *
      * Given protected access since CodeBaseClassloader uses this function too.
      *
-     * @return The appropriate AccessControlContext for loading classes for this instance
+     * @return The appropriate AccessControlContext for loading classes for this
+     * instance
      */
     public AccessControlContext getAccessControlContextForClassLoading() {
         AccessControlContext context = AccessController.getContext();
@@ -2244,7 +2337,7 @@
         // Permissions for all remote hosting urls
         synchronized (jarLocationSecurityMap) {
             for (URL u : jarLocationSecurityMap.keySet()) {
-                    permissions.add(new SocketPermission(UrlUtils.getHostAndPort(u),
+                permissions.add(new SocketPermission(UrlUtils.getHostAndPort(u),
                         "connect, accept"));
             }
         }
@@ -2259,26 +2352,27 @@
 
         ProtectionDomain pd = new ProtectionDomain(null, permissions);
 
-        return new AccessControlContext(new ProtectionDomain[] { pd });
+        return new AccessControlContext(new ProtectionDomain[]{pd});
     }
-    
+
     public String getMainClass() {
         return mainClass;
     }
-    
-
-
-   /**
-     * SecurityDelegate, in real usage, relies on having a "parent" JNLPClassLoader instance.
-     * However, JNLPClassLoaders are very large, heavyweight, difficult-to-mock objects, which
-     * means that unit testing on anything that uses a SecurityDelegate can become very difficult.
-     * For example, JarCertVerifier is designed separated from the ClassLoader so it can be tested
-     * in isolation. However, JCV needs some sort of access back to JNLPClassLoader instances to
-     * be able to invoke setRunInSandbox(). The SecurityDelegate handles this, allowing JCV to be
-     * tested without instantiating JNLPClassLoaders, by creating a fake SecurityDelegate that does
-     * not require one.
+
+    /**
+     * SecurityDelegate, in real usage, relies on having a "parent"
+     * JNLPClassLoader instance. However, JNLPClassLoaders are very large,
+     * heavyweight, difficult-to-mock objects, which means that unit testing on
+     * anything that uses a SecurityDelegate can become very difficult. For
+     * example, JarCertVerifier is designed separated from the ClassLoader so it
+     * can be tested in isolation. However, JCV needs some sort of access back
+     * to JNLPClassLoader instances to be able to invoke setRunInSandbox(). The
+     * SecurityDelegate handles this, allowing JCV to be tested without
+     * instantiating JNLPClassLoaders, by creating a fake SecurityDelegate that
+     * does not require one.
      */
     public static interface SecurityDelegate {
+
         public boolean isPluginApplet();
 
         public boolean userPromptedForPartialSigning();
@@ -2305,10 +2399,11 @@
     }
 
     /**
-     * Handles security decision logic for the JNLPClassLoader, eg which permission level to assign
-     * to JARs.
+     * Handles security decision logic for the JNLPClassLoader, eg which
+     * permission level to assign to JARs.
      */
     public static class SecurityDelegateImpl implements SecurityDelegate {
+
         private final JNLPClassLoader classLoader;
         private boolean runInSandbox;
         private boolean promptedForPartialSigning;
@@ -2331,27 +2426,25 @@
                 return new SecurityDesc(classLoader.file,
                         SecurityDesc.SANDBOX_PERMISSIONS,
                         codebaseHost);
-            } else {
-                if (isPluginApplet()) {
-                    try {
-                        if (JarCertVerifier.isJarSigned(jarDesc, new PluginAppVerifier(), classLoader.tracker)) {
-                            return new SecurityDesc(classLoader.file,
-                                    SecurityDesc.ALL_PERMISSIONS,
-                                    codebaseHost);
-                        } else {
-                            return new SecurityDesc(classLoader.file,
-                                    SecurityDesc.SANDBOX_PERMISSIONS,
-                                    codebaseHost);
-                        }
-                    } catch (final Exception e) {
-                        OutputController.getLogger().log(e);
+            } else if (isPluginApplet()) {
+                try {
+                    if (JarCertVerifier.isJarSigned(jarDesc, new PluginAppVerifier(), classLoader.tracker)) {
+                        return new SecurityDesc(classLoader.file,
+                                SecurityDesc.ALL_PERMISSIONS,
+                                codebaseHost);
+                    } else {
                         return new SecurityDesc(classLoader.file,
                                 SecurityDesc.SANDBOX_PERMISSIONS,
                                 codebaseHost);
                     }
-                } else {
-                    return classLoader.file.getSecurity();
+                } catch (final Exception e) {
+                    OutputController.getLogger().log(e);
+                    return new SecurityDesc(classLoader.file,
+                            SecurityDesc.SANDBOX_PERMISSIONS,
+                            codebaseHost);
                 }
+            } else {
+                return classLoader.file.getSecurity();
             }
         }
 
@@ -2367,8 +2460,7 @@
                             SecurityDesc.SANDBOX_PERMISSIONS,
                             codebaseHost);
                 }
-            } else {
-                /*
+            } else /*
                  * Various combinations of the jars being signed and <security> tags being
                  * present are possible. They are treated as follows
                  *
@@ -2379,21 +2471,27 @@
                  * Unsigned      <security>        Error
                  * Unsigned      no <security>     Sandbox
                  *
-                 */
-                if (!runInSandbox && !classLoader.getSigning()
-                        && !classLoader.file.getSecurity().getSecurityType().equals(SecurityDesc.SANDBOX_PERMISSIONS)) {
-                    if (classLoader.jcv.allJarsSigned()) {
-                        throw new LaunchException(classLoader.file, null, R("LSFatal"), R("LCClient"), R("LSignedJNLPAppDifferentCerts"), R("LSignedJNLPAppDifferentCertsInfo"));
-                    } else {
-                        throw new LaunchException(classLoader.file, null, R("LSFatal"), R("LCClient"), R("LUnsignedJarWithSecurity"), R("LUnsignedJarWithSecurityInfo"));
-                    }
-                } else if (!runInSandbox && classLoader.getSigning()) {
-                    return classLoader.file.getSecurity();
+             */ if (!runInSandbox && !classLoader.getSigning()
+                    && !classLoader.file.getSecurity().getSecurityType().equals(SecurityDesc.SANDBOX_PERMISSIONS)) {
+                if (classLoader.jcv.allJarsSigned()) {
+                    LaunchException ex = new LaunchException(classLoader.file, null, R("LSFatal"), R("LCClient"), R("LSignedJNLPAppDifferentCerts"), R("LSignedJNLPAppDifferentCertsInfo"));
+                    consultCertificateSecurityException(ex);
+                    return consultResult(codebaseHost);
                 } else {
-                    return new SecurityDesc(classLoader.file,
-                            SecurityDesc.SANDBOX_PERMISSIONS,
-                            codebaseHost);
+                    LaunchException ex = new LaunchException(classLoader.file, null, R("LSFatal"), R("LCClient"), R("LUnsignedJarWithSecurity"), R("LUnsignedJarWithSecurityInfo"));;
+                    consultCertificateSecurityException(ex);
+                    return consultResult(codebaseHost);
                 }
+            } else return consultResult(codebaseHost);
+        }
+        
+        private SecurityDesc consultResult(URL codebaseHost){
+            if (!runInSandbox && classLoader.getSigning()) {
+                return classLoader.file.getSecurity();
+            } else {
+                return new SecurityDesc(classLoader.file,
+                        SecurityDesc.SANDBOX_PERMISSIONS,
+                        codebaseHost);
             }
         }
 
@@ -2470,7 +2568,7 @@
         }
 
     }
-    
+
 
     /*
      * Helper class to expose protected URLClassLoader methods.
@@ -2487,7 +2585,7 @@
     public static class CodeBaseClassLoader extends URLClassLoader {
 
         JNLPClassLoader parentJNLPClassLoader;
-        
+
         /**
          * Classes that are not found, so that findClass can skip them next time
          */
@@ -2499,8 +2597,8 @@
         }
 
         @Override
-        public void addURL(URL url) { 
-            super.addURL(url); 
+        public void addURL(URL url) {
+            super.addURL(url);
         }
 
         /*
@@ -2508,18 +2606,19 @@
          */
         Class<?> findClassNonRecursive(final String name) throws ClassNotFoundException {
             // If we have searched this path before, don't try again
-            if (Arrays.equals(super.getURLs(), notFoundResources.get(name)))
+            if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) {
                 throw new ClassNotFoundException(name);
+            }
 
             try {
                 return AccessController.doPrivileged(
                         new PrivilegedExceptionAction<Class<?>>() {
-                            public Class<?> run() throws ClassNotFoundException {
-                                Class<?> c = CodeBaseClassLoader.super.findClass(name);
-                                parentJNLPClassLoader.checkPartialSigningWithUser();
-                                return c;
-                            }
-                        }, parentJNLPClassLoader.getAccessControlContextForClassLoading());
+                    public Class<?> run() throws ClassNotFoundException {
+                        Class<?> c = CodeBaseClassLoader.super.findClass(name);
+                        parentJNLPClassLoader.checkPartialSigningWithUser();
+                        return c;
+                    }
+                }, parentJNLPClassLoader.getAccessControlContextForClassLoading());
             } catch (PrivilegedActionException pae) {
                 notFoundResources.put(name, super.getURLs());
                 throw new ClassNotFoundException("Could not find class " + name, pae);
@@ -2542,11 +2641,12 @@
 
         /**
          * Returns the output of super.findLoadedClass().
-         * 
+         *
          * The method is renamed because ClassLoader.findLoadedClass() is final
-         * 
+         *
          * @param name The name of the class to find
-         * @return Output of ClassLoader.findLoadedClass() which is the class if found, null otherwise 
+         * @return Output of ClassLoader.findLoadedClass() which is the class if
+         * found, null otherwise
          * @see java.lang.ClassLoader#findLoadedClass(String)
          */
         public Class<?> findLoadedClassFromParent(String name) {
@@ -2555,7 +2655,7 @@
 
         /**
          * Returns JNLPClassLoader that encompasses this loader
-         * 
+         *
          * @return parent JNLPClassLoader
          */
         public JNLPClassLoader getParentJNLPClassLoader() {
@@ -2566,8 +2666,9 @@
         public Enumeration<URL> findResources(String name) throws IOException {
 
             // If we have searched this path before, don't try again
-            if (Arrays.equals(super.getURLs(), notFoundResources.get(name)))
+            if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) {
                 return (new Vector<URL>(0)).elements();
+            }
 
             if (!name.startsWith("META-INF")) {
                 Enumeration<URL> urls = super.findResources(name);
@@ -2586,8 +2687,9 @@
         public URL findResource(String name) {
 
             // If we have searched this path before, don't try again
-            if (Arrays.equals(super.getURLs(), notFoundResources.get(name)))
+            if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) {
                 return null;
+            }
 
             URL url = null;
             if (!name.startsWith("META-INF")) {
@@ -2595,12 +2697,12 @@
                     final String fName = name;
                     url = AccessController.doPrivileged(
                             new PrivilegedExceptionAction<URL>() {
-                                public URL run() {
-                                    return CodeBaseClassLoader.super.findResource(fName);
-                                }
-                            }, parentJNLPClassLoader.getAccessControlContextForClassLoading());
+                        public URL run() {
+                            return CodeBaseClassLoader.super.findResource(fName);
+                        }
+                    }, parentJNLPClassLoader.getAccessControlContextForClassLoading());
                 } catch (PrivilegedActionException pae) {
-                } 
+                }
 
                 if (url == null) {
                     notFoundResources.put(name, super.getURLs());
@@ -2612,6 +2714,5 @@
             return null;
         }
     }
-    
-    
+
 }
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java
--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java	Wed Nov 07 12:34:44 2018 +0100
@@ -19,6 +19,8 @@
 import static net.sourceforge.jnlp.runtime.Translator.R;
 
 import java.awt.EventQueue;
+import java.awt.GraphicsEnvironment;
+import java.awt.HeadlessException;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -48,7 +50,6 @@
 import javax.net.ssl.SSLSocketFactory;
 import javax.net.ssl.TrustManager;
 import javax.swing.JOptionPane;
-import javax.swing.JWindow;
 import javax.swing.UIManager;
 import javax.swing.text.html.parser.ParserDelegator;
 
@@ -272,7 +273,7 @@
         try {
             SSLSocketFactory sslSocketFactory;
             SSLContext context = SSLContext.getInstance("SSL");
-            KeyStore ks = KeyStores.getKeyStore(KeyStores.Level.USER, KeyStores.Type.CLIENT_CERTS);
+            KeyStore ks = KeyStores.getKeyStore(KeyStores.Level.USER, KeyStores.Type.CLIENT_CERTS).getKs();
             KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
             SecurityUtil.initKeyManagerFactory(kmf, ks);
             TrustManager[] trust = new TrustManager[] { getSSLSocketTrustManager() };
@@ -736,16 +737,24 @@
         //if (GraphicsEnvironment.isHeadless()) // jdk1.4+ only
         //    headless = true;
         try {
-            if ("true".equalsIgnoreCase(System.getProperty("java.awt.headless"))){
+            if ("true".equalsIgnoreCase(System.getProperty("java.awt.headless"))) {
                 headless = true;
             }
             if (!headless) {
-                try {
-                    new JWindow().getOwner();
-                } catch (Exception ex) {
-                    headless = true;
-                    OutputController.getLogger().log(ex);
-                    OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("HEADLESS_MISSCONFIGURED"));
+                boolean noCheck = Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.IGNORE_HEADLESS_CHECK));
+                if (noCheck) {
+                    headless = false;
+                    OutputController.getLogger().log(DeploymentConfiguration.IGNORE_HEADLESS_CHECK + " set to " + noCheck + ". Avoding headless check.");
+                } else {
+                    try {
+                        if (GraphicsEnvironment.isHeadless()) {
+                            throw new HeadlessException();
+                        }
+                    } catch (HeadlessException ex) {
+                        headless = true;
+                        OutputController.getLogger().log(ex);
+                        OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("HEADLESS_MISSCONFIGURED"));
+                    }
                 }
             }
         } catch (SecurityException ex) {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java
--- a/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java	Wed Nov 07 12:34:44 2018 +0100
@@ -23,12 +23,12 @@
 import java.security.AccessControlException;
 import java.security.Permission;
 
-import javax.swing.JWindow;
 
 import net.sourceforge.jnlp.security.SecurityDialogs.AccessType;
 import net.sourceforge.jnlp.services.ServiceUtil;
 import net.sourceforge.jnlp.util.logging.OutputController;
 import net.sourceforge.jnlp.util.WeakList;
+import net.sourceforge.swing.SwingUtils;
 import sun.awt.AWTSecurityManager;
 import sun.awt.AppContext;
 
@@ -114,7 +114,8 @@
         // called for it (and not disposed).
 
         if (!JNLPRuntime.isHeadless()) {
-            new JWindow().getOwner();
+            /* is it really useful ? */
+            SwingUtils.getOrCreateWindowOwner();
         }
 
         mainAppContext = AppContext.getAppContext();
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/runtime/Translator.java
--- a/netx/net/sourceforge/jnlp/runtime/Translator.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/Translator.java	Wed Nov 07 12:34:44 2018 +0100
@@ -20,6 +20,7 @@
 import java.util.Locale;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
+import net.sourceforge.jnlp.config.DeploymentConfiguration;
 
 /**
  * Utility class to provide simple methods to help localize messages
@@ -80,6 +81,20 @@
     public static String R(String message, Object... params) {
         return getInstance().getMessage(message, params);
     }
+     
+    /**
+     * convenient method to show VVPossibleBrowserValues with all four params
+     *
+     * @return translation of VVPossibleBrowserValues with all params in
+     */
+    public static String VVPossibleBrowserValues() {
+        return R("VVPossibleBrowserValues", DeploymentConfiguration.LEGACY_WIN32_URL__HANDLER,
+                DeploymentConfiguration.BROWSER_ENV_VAR,
+                DeploymentConfiguration.INTERNAL_HTML,
+                DeploymentConfiguration.ALWAYS_ASK,
+                DeploymentConfiguration.KEY_BROWSER_PATH
+        );
+    }
 
    
     /**
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/runtime/html/browser/LinkingBrowser.java
--- a/netx/net/sourceforge/jnlp/runtime/html/browser/LinkingBrowser.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/html/browser/LinkingBrowser.java	Wed Nov 07 12:34:44 2018 +0100
@@ -46,7 +46,6 @@
 import static net.sourceforge.jnlp.runtime.JNLPRuntime.getConfiguration;
 import net.sourceforge.jnlp.security.JNLPAuthenticator;
 import net.sourceforge.jnlp.util.logging.JavaConsole;
-import net.sourceforge.jnlp.util.logging.OutputController;
 
 public class LinkingBrowser extends JTabbedPane {
 
@@ -92,11 +91,15 @@
         BrowserAwareProxySelector proxySelector = new BrowserAwareProxySelector(getConfiguration());
         proxySelector.initialize();
         ProxySelector.setDefault(proxySelector);
+        createFrame(url, socket, JFrame.EXIT_ON_CLOSE);
+    }
+
+    public static void createFrame(String url, boolean socket, int action) {
         HtmlBrowserPanel.warn();
         JFrame f = new JFrame();
         f.add(new LinkingBrowser(url, socket));
         f.pack();
-        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        f.setDefaultCloseOperation(action);
         f.setVisible(true);
     }
 
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/KeyStores.java
--- a/netx/net/sourceforge/jnlp/security/KeyStores.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/KeyStores.java	Wed Nov 07 12:34:44 2018 +0100
@@ -33,8 +33,7 @@
 this exception to your version of the library, but you are not
 obligated to do so.  If you do not wish to do so, delete this
 exception statement from your version.
-*/
-
+ */
 package net.sourceforge.jnlp.security;
 
 import java.io.File;
@@ -64,8 +63,26 @@
  */
 public final class KeyStores {
 
+    public static class KeyStoreWithPath {
+
+        private final KeyStore ks;
+        private final String path;
+
+        public KeyStoreWithPath(KeyStore ks, String path) {
+            this.ks = ks;
+            this.path = path;
+        }
+
+        public KeyStore getKs() {
+            return ks;
+        }
+
+        public String getPath() {
+            return path;
+        }
+    }
+
     /* this gets turned into user-readable strings, see toUserReadableString */
-
     public enum Level {
         USER,
         SYSTEM,
@@ -79,10 +96,10 @@
         CLIENT_CERTS,
     }
 
-    public static final Map<Integer,String> keystoresPaths=new HashMap<>();
+    public static final Map<Integer, String> keystoresPaths = new HashMap<>();
 
     private static final String KEYSTORE_TYPE = "JKS";
-  
+
     /**
      * Returns a KeyStore corresponding to the appropriate level level (user or
      * system) and type.
@@ -92,7 +109,7 @@
      * @param type the type of KeyStore desired
      * @return a KeyStore containing certificates from the appropriate
      */
-    public static final KeyStore getKeyStore(Level level, Type type) {
+    public static final KeyStoreWithPath getKeyStore(Level level, Type type) {
         boolean create;
         if (level == Level.USER) {
             create = true;
@@ -112,7 +129,7 @@
      * @param create true if keystore can be created
      * @return a KeyStore containing certificates from the appropriate
      */
-    public static final KeyStore getKeyStore(Level level, Type type, boolean create) {
+    private static final KeyStoreWithPath getKeyStore(Level level, Type type, boolean create) {
         SecurityManager sm = System.getSecurityManager();
         if (sm != null) {
             sm.checkPermission(new AllPermission());
@@ -124,11 +141,11 @@
             ks = createKeyStoreFromFile(new File(location), create);
             //hashcode is used instead of instance so when no references are left
             //to keystore, then this will not be blocker for garbage collection
-            keystoresPaths.put(ks.hashCode(),location);
+            keystoresPaths.put(ks.hashCode(), location);
         } catch (Exception e) {
             OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
         }
-        return ks;
+        return new KeyStoreWithPath(ks, location);
     }
 
     public static String getPathToKeystore(int k) {
@@ -148,22 +165,22 @@
     public static final KeyStore[] getCertKeyStores() {
         List<KeyStore> result = new ArrayList<>(10);
         /* System-level JSSE certificates */
-        KeyStore ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS);
+        KeyStore ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
         /* System-level certificates */
-        ks = getKeyStore(Level.SYSTEM, Type.CERTS);
+        ks = getKeyStore(Level.SYSTEM, Type.CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
         /* User-level JSSE certificates */
-        ks = getKeyStore(Level.USER, Type.JSSE_CERTS);
+        ks = getKeyStore(Level.USER, Type.JSSE_CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
         /* User-level certificates */
-        ks = getKeyStore(Level.USER, Type.CERTS);
+        ks = getKeyStore(Level.USER, Type.CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
@@ -179,22 +196,22 @@
     public static final KeyStore[] getCAKeyStores() {
         List<KeyStore> result = new ArrayList<>(10);
         /* System-level JSSE CA certificates */
-        KeyStore ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS);
+        KeyStore ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
         /* System-level CA certificates */
-        ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS);
+        ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
         /* User-level JSSE CA certificates */
-        ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS);
+        ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
         /* User-level CA certificates */
-        ks = getKeyStore(Level.USER, Type.CA_CERTS);
+        ks = getKeyStore(Level.USER, Type.CA_CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
@@ -211,12 +228,12 @@
     public static KeyStore[] getClientKeyStores() {
         List<KeyStore> result = new ArrayList<>();
 
-        KeyStore ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS);
+        KeyStore ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
 
-        ks = getKeyStore(Level.USER, Type.CLIENT_CERTS);
+        ks = getKeyStore(Level.USER, Type.CLIENT_CERTS).getKs();
         if (ks != null) {
             result.add(ks);
         }
@@ -225,7 +242,8 @@
     }
 
     /**
-     * Returns the location of a KeyStore corresponding to the given level and type.
+     * Returns the location of a KeyStore corresponding to the given level and
+     * type.
      *
      * @param level the specified level of the key store to be returned.
      * @param type the specified type of the key store to be returned.
@@ -242,7 +260,7 @@
                     case JSSE_CERTS:
                         return PathsAndFiles.SYS_JSSECERT;
                     case CERTS:
-                         return PathsAndFiles.SYS_CERT;
+                        return PathsAndFiles.SYS_CERT;
                     case CLIENT_CERTS:
                         return PathsAndFiles.SYS_CLIENTCERT;
                 }
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/SecurityDialog.java
--- a/netx/net/sourceforge/jnlp/security/SecurityDialog.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/SecurityDialog.java	Wed Nov 07 12:34:44 2018 +0100
@@ -46,6 +46,8 @@
 import java.security.cert.X509Certificate;
 
 import javax.swing.JDialog;
+import java.awt.Window;
+import net.sourceforge.swing.SwingUtils;
 
 import net.sourceforge.jnlp.JNLPFile;
 import net.sourceforge.jnlp.runtime.JNLPClassLoader.SecurityDelegate;
@@ -65,7 +67,6 @@
 import net.sourceforge.jnlp.security.dialogs.SingleCertInfoPane;
 import net.sourceforge.jnlp.security.dialogs.ViwableDialog;
 import net.sourceforge.jnlp.security.dialogs.apptrustwarningpanel.AppTrustWarningDialog;
-import net.sourceforge.jnlp.util.ScreenFinder;
 import net.sourceforge.jnlp.util.logging.OutputController;
 
 /**
@@ -216,7 +217,7 @@
      * @param parent the parent pane.
      */
     public static void showSingleCertInfoDialog(X509Certificate c,
-                        JDialog parent) {
+                        Window parent) {
         SecurityDialog dialog = new SecurityDialog(DialogType.SINGLE_CERT_INFO, c);
         dialog.getViwableDialog().setLocationRelativeTo(parent);
         dialog.getViwableDialog().setModalityType(ModalityType.APPLICATION_MODAL);
@@ -227,12 +228,20 @@
     private void initDialog() {
         String dialogTitle = createTitle();
 
+        // Note: ViwableDialog methods are defered until show():
         getViwableDialog().setTitle(dialogTitle);
         getViwableDialog().setModalityType(ModalityType.MODELESS);
 
         getViwableDialog().setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
 
-        installPanel();
+        // Initialize panel now as its constructor may call getViwableDialog() defered methods
+        // to modify dialog state:  
+        SwingUtils.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                installPanel();
+            }
+        });
 
         getViwableDialog().pack();
         getViwableDialog().centerDialog();
@@ -251,11 +260,14 @@
 
             @Override
             public void windowOpened(WindowEvent e) {
-                if (e.getSource() instanceof SecurityDialog) {
-                    SecurityDialog dialog = (SecurityDialog) e.getSource();
-                    dialog.getViwableDialog().setResizable(true);
-                    dialog.setValue(null);
-                }
+                getViwableDialog().setResizable(true);
+                SecurityDialog.this.setValue(null);
+            }
+            @Override
+            public void windowClosed(WindowEvent e) {
+                // called if the user closes the window directly (dispose on close)
+                // always dispose() to unlock message processing
+                getViwableDialog().dispose();
             }
         };
         getViwableDialog().addWindowListener(adapter);
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/SecurityDialogs.java
--- a/netx/net/sourceforge/jnlp/security/SecurityDialogs.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/SecurityDialogs.java	Wed Nov 07 12:34:44 2018 +0100
@@ -47,7 +47,7 @@
 import java.util.concurrent.Semaphore;
 
 import javax.swing.JDialog;
-import javax.swing.SwingUtilities;
+import net.sourceforge.swing.SwingUtils;
 
 import net.sourceforge.jnlp.JNLPFile;
 import net.sourceforge.jnlp.cache.Resource;
@@ -320,7 +320,7 @@
         /*
          * If this is the event dispatch thread the use the hack
          */
-        if (SwingUtilities.isEventDispatchThread()) {
+        if (SwingUtils.isEventDispatchThread()) {
             /*
              * Create a tiny modal dialog (which creates a new EventQueue for
              * this AppContext, but blocks the original client EventQueue) and
@@ -329,6 +329,8 @@
              * continue processing
              */
             final JDialog fakeDialog = new JDialog();
+            fakeDialog.setName("FakeDialog");
+            SwingUtils.info(fakeDialog);
             fakeDialog.setSize(0, 0);
             fakeDialog.setResizable(false);
             fakeDialog.setModalityType(ModalityType.APPLICATION_MODAL);
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java
--- a/netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java	Wed Nov 07 12:34:44 2018 +0100
@@ -47,6 +47,7 @@
 import net.sourceforge.jnlp.runtime.Translator;
 import net.sourceforge.jnlp.util.docprovider.TextsProvider;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import net.sourceforge.swing.SwingUtils;
 
 public class ExtendedAppletSecurityHelp extends javax.swing.JDialog implements HyperlinkListener {
 
@@ -162,7 +163,7 @@
     }
 
     public static void main(String args[]) {
-        java.awt.EventQueue.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             public void run() {
                 ExtendedAppletSecurityHelp dialog = new ExtendedAppletSecurityHelp(null, false);
                 dialog.setVisible(true);
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/dialogs/AccessWarningPane.java
--- a/netx/net/sourceforge/jnlp/security/dialogs/AccessWarningPane.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/dialogs/AccessWarningPane.java	Wed Nov 07 12:34:44 2018 +0100
@@ -197,7 +197,7 @@
         fromLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
 
 
-        final JButton run = new JButton(R("ButAllow"));
+        final JButton run = new JButton(R("ButOk"));
         final JButton cancel = new JButton(R("ButCancel"));
         
         JPanel infoPanel = new JPanel(new GridBagLayout());
@@ -241,23 +241,6 @@
                 htmlPanelDesktop.setVisible(false);
                 c.gridy++;
             }
-            ActionListener al = new ActionListener() {
-
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    if (desktopCheck.isSelected() || menuCheck.isSelected()){
-                        run.setEnabled(true);
-                        cancel.setEnabled(false);
-                    } else {
-                        run.setEnabled(false);
-                        cancel.setEnabled(true);
-                    }
-                    
-                }
-            };
-            desktopCheck.addActionListener(al);
-            menuCheck.addActionListener(al);
-            al.actionPerformed(null);
             infoPanel.add(menuCheck,c);
             c.gridy++;
             if (!JNLPRuntime.isWebstartApplication()) {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java
--- a/netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java	Wed Nov 07 12:34:44 2018 +0100
@@ -343,7 +343,7 @@
 
     public void saveCert() {
         try {
-            KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS);
+            KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS).getKs();
             X509Certificate c = (X509Certificate) parent.getCertVerifier().getPublisher(null);
             CertificateUtils.addToKeyStore(c, ks);
             File keyStoreFile = KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS).getFile();
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java
--- a/netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java	Wed Nov 07 12:34:44 2018 +0100
@@ -185,25 +185,28 @@
             return jdkIndependentHexEncoderImpl(signature);
         } catch (Exception ex) {
             String s = "Failed to encode signature: " + ex.toString();
-            OutputController.getLogger().log(s);
+            OutputController.getLogger().log(OutputController.Level.WARNING_ALL, s);
+            OutputController.getLogger().log(ex);
             return s;
         }
     }
 
     private String jdkIndependentHexEncoderImpl(byte[] signature) throws Exception {
-        // jdk8 is using sun.misc.HexDumpEncoder, 
-        // jdk9 is using sun.security.util.HexDumpEncoder
-        Class clazz;
         try {
-            clazz = Class.forName("sun.security.util.HexDumpEncoder");
-        } catch (ClassNotFoundException ex) {
-            OutputController.getLogger().log("Using jdk8's HexDumpEncoder");
-            clazz = Class.forName("sun.misc.HexDumpEncoder");
+            OutputController.getLogger().log("trying jdk9's HexDumpEncoder");
+            Class clazz = Class.forName("sun.security.util.HexDumpEncoder");
+            Object encoder = clazz.newInstance();
+            Method m = clazz.getDeclaredMethod("encodeBuffer", byte[].class);
+            //convert our signature into a nice human-readable form.
+            return (String) m.invoke(encoder, signature);
+        } catch (Exception ex) {
+                OutputController.getLogger().log("trying jdk8's HexDumpEncoder");
+                Class clazz = Class.forName("sun.misc.HexDumpEncoder");
+                Object encoder = clazz.newInstance();
+                Method m = clazz.getMethod("encode", byte[].class);
+                //convert our signature into a nice human-readable form.
+                return (String) m.invoke(encoder, signature);
         }
-        Object encoder  = clazz.newInstance();
-        Method m = clazz.getDeclaredMethod("encodeBuffer", byte[].class);
-        //convert our signature into a nice human-readable form.
-        return (String) m.invoke(encoder, signature);
     }
 
     /**
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/dialogs/ViwableDialog.java
--- a/netx/net/sourceforge/jnlp/security/dialogs/ViwableDialog.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/dialogs/ViwableDialog.java	Wed Nov 07 12:34:44 2018 +0100
@@ -45,6 +45,7 @@
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 import javax.swing.JDialog;
+import net.sourceforge.swing.SwingUtils;
 import net.sourceforge.jnlp.util.ImageResources;
 import net.sourceforge.jnlp.util.ScreenFinder;
 
@@ -57,18 +58,23 @@
  */
 public class ViwableDialog {
 
-    private JDialog jd;
+    private JDialog jd = null;
     List<Runnable> operations = new ArrayList<Runnable>();
 
     public ViwableDialog() {
     }
 
-    private JDialog crateJDialog() {
+    private JDialog createJDialog() {
         jd = new JDialog();
+        jd.setName("ViwableDialog");
+        SwingUtils.info(jd);
         jd.setIconImages(ImageResources.INSTANCE.getApplicationImages());
+        
         for (Runnable operation : operations) {
             operation.run();
         }
+        // prune operations. May throw NPE if operations used after createJDialog()
+        operations = null;
         return jd;
     }
 
@@ -100,10 +106,15 @@
     }
 
     public void show() {
-        if (jd == null) {
-            jd = crateJDialog();
-        }
-        jd.setVisible(true);
+        SwingUtils.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                if (jd == null) {
+                    jd = createJDialog();
+                }
+                jd.setVisible(true);
+            }
+        });
     }
 
     /**
@@ -111,9 +122,13 @@
      * choice (Ok, Cancel, etc) or closed the window
      */
     public void dispose() {
-        notifySelectionMade();
+        // avoid reentrance:
         if (jd != null) {
+            notifySelectionMade();
+
             jd.dispose();
+            // recycle:
+            jd = null;
         }
     }
 
@@ -190,12 +205,10 @@
     }
 
     public void setResizable(final boolean b) {
-        operations.add(new Runnable() {
-            @Override
-            public void run() {
-                jd.setResizable(b);
-            }
-        });
+        // not defered: called when alive
+        if (jd != null) {
+            jd.setResizable(b);
+        }
     }
 
     public void addWindowListener(final WindowAdapter adapter) {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java
--- a/netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java	Wed Nov 07 12:34:44 2018 +0100
@@ -57,7 +57,6 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.lang.ref.WeakReference;
-import java.lang.reflect.InvocationTargetException;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -96,7 +95,6 @@
 import javax.swing.KeyStroke;
 import javax.swing.ListSelectionModel;
 import javax.swing.ScrollPaneConstants;
-import javax.swing.SwingUtilities;
 import javax.swing.SwingWorker;
 import javax.swing.UIManager;
 import javax.swing.WindowConstants;
@@ -120,6 +118,7 @@
 import net.sourceforge.jnlp.util.docprovider.formatters.formatters.PlainTextFormatter;
 import net.sourceforge.jnlp.util.logging.OutputController;
 import net.sourceforge.jnlp.util.optionparser.OptionParser;
+import net.sourceforge.swing.SwingUtils;
 import sun.security.provider.PolicyParser;
 
 /**
@@ -460,7 +459,7 @@
         viewCustomButtonAction = new ActionListener() {
             @Override
             public void actionPerformed(final ActionEvent e) {
-                invokeRunnableOrEnqueueLater(new Runnable() {
+                SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
                     @Override
                     public void run() {
                         final PolicyIdentifier policyIdentifier = getSelectedPolicyIdentifier();
@@ -505,7 +504,7 @@
         closeButtonAction = new ActionListener() {
             @Override
             public void actionPerformed(final ActionEvent event) {
-                final Window parentWindow = SwingUtilities.getWindowAncestor(PolicyEditor.this);
+                final Window parentWindow = SwingUtils.getWindowAncestor(PolicyEditor.this);
                 if (parentWindow instanceof PolicyEditorWindow) {
                     ((PolicyEditorWindow) parentWindow).quit();
                 }
@@ -587,10 +586,10 @@
     }
 
     private void setParentWindowTitle(final String title) {
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
-                final Window parent = SwingUtilities.getWindowAncestor(PolicyEditor.this);
+                final Window parent = SwingUtils.getWindowAncestor(PolicyEditor.this);
                 if (!(parent instanceof PolicyEditorWindow)) {
                     return;
                 }
@@ -839,7 +838,7 @@
             return;
         }
         policyEditorController.addIdentifier(identifier);
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 listModel.clear();
@@ -880,7 +879,7 @@
      * or when the user presses cancel.
      */
     public void addNewIdentifierInteractive() {
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 final PolicyIdentifier identifier = promptForPolicyIdentifier(PolicyIdentifier.ALL_APPLETS_IDENTIFIER);
@@ -936,7 +935,7 @@
         }
         policyEditorController.removeIdentifier(identifier);
         final int fIndex = previousIndex;
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 listModel.removeElement(identifier);
@@ -1047,37 +1046,17 @@
         policyEditorController.clearCustomIdentifier(identifier);
     }
 
-    private void invokeRunnableOrEnqueueLater(final Runnable runnable) {
-        if (SwingUtilities.isEventDispatchThread()) {
-            runnable.run();
-        } else {
-            SwingUtilities.invokeLater(runnable);
-        }
-    }
-
-    private void invokeRunnableOrEnqueueAndWait(final Runnable runnable) throws InvocationTargetException, InterruptedException {
-        if (SwingUtilities.isEventDispatchThread()) {
-            runnable.run();
-        } else {
-            SwingUtilities.invokeAndWait(runnable);
-        }
-    }
-
     /**
      * Update the checkboxes to show the permissions granted to the specified identifier
      * @param identifier whose permissions to display
      */
     private void updateCheckboxes(final PolicyIdentifier identifier) {
-        try {
-            invokeRunnableOrEnqueueAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    updateCheckboxesImpl(identifier);
-                }
-            });
-        } catch (final InterruptedException | InvocationTargetException ex) {
-            OutputController.getLogger().log(ex);
-        }
+        SwingUtils.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                updateCheckboxesImpl(identifier);
+            }
+        });
     }
 
     private void updateCheckboxesImpl(final PolicyIdentifier identifier) {
@@ -1461,7 +1440,7 @@
 
     void setChangesMade(final boolean b) {
         policyEditorController.setChangesMade(b);
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 setParentWindowTitle(getWindowTitleForStatus());
@@ -1529,14 +1508,14 @@
             FileUtils.showReadOnlyDialog(PolicyEditor.this);
         }
 
-        final Window parentWindow = SwingUtilities.getWindowAncestor(this);
+        final Window parentWindow = SwingUtils.getWindowAncestor(this);
         final JDialog progressIndicator = new IndeterminateProgressDialog(parentWindow, "Loading...");
         final SwingWorker<Void, Void> openPolicyFileWorker = new SwingWorker<Void, Void>() {
             @Override
             protected Void doInBackground() throws Exception {
                 try {
                     if (parentWindow != null) {
-                        invokeRunnableOrEnqueueLater(new Runnable() {
+                        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
                             @Override
                             public void run() {
                                 progressIndicator.setLocationRelativeTo(parentWindow);
@@ -1590,14 +1569,14 @@
                 break;
         }
 
-        final Window parentWindow = SwingUtilities.getWindowAncestor(this);
+        final Window parentWindow = SwingUtils.getWindowAncestor(this);
         final JDialog progressIndicator = new IndeterminateProgressDialog(parentWindow, "Saving...");
         final SwingWorker<Void, Void> savePolicyFileWorker = new SwingWorker<Void, Void>() {
             @Override
             public Void doInBackground() throws Exception {
                 try {
                     if (parentWindow != null) {
-                        invokeRunnableOrEnqueueLater(new Runnable() {
+                        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
                             @Override
                             public void run() {
                                 progressIndicator.setLocationRelativeTo(parentWindow);
@@ -1631,7 +1610,7 @@
         // This dialog is often displayed when closing the editor, and so PolicyEditor
         // may already be disposed when this dialog appears. Give a weak reference so
         // that this dialog doesn't prevent the JVM from exiting
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PEChangesSaved"));
@@ -1646,7 +1625,7 @@
         // This dialog is often displayed when closing the editor, and so PolicyEditor
         // may already be disposed when this dialog appears. Give a weak reference so
         // that this dialog doesn't prevent the JVM from exiting
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PECouldNotSave"), R("Error"), JOptionPane.ERROR_MESSAGE);
@@ -1655,7 +1634,7 @@
     }
 
     private void showClipboardErrorDialog() {
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PEClipboardError"), R("Error"), JOptionPane.ERROR_MESSAGE);
@@ -1664,7 +1643,7 @@
     }
 
     private void showInvalidPolicyExceptionDialog(final PolicyIdentifier identifier) {
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PEInvalidPolicy", identifier.toString()), R("Error"), JOptionPane.ERROR_MESSAGE);
@@ -1673,7 +1652,7 @@
     }
 
     private void showCouldNotAccessClipboardDialog() {
-        invokeRunnableOrEnqueueLater(new Runnable() {
+        SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() {
             @Override
             public void run() {
                 JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PEClipboardAccessError"), R("Error"), JOptionPane.ERROR_MESSAGE);
@@ -1720,7 +1699,7 @@
     private void toggleExpandedCheckboxGroupPanel(final JPanel groupPanel) {
         groupPanel.setVisible(!groupPanel.isVisible());
         PolicyEditor.this.validate();
-        final Window w = SwingUtilities.getWindowAncestor(PolicyEditor.this);
+        final Window w = SwingUtils.getWindowAncestor(PolicyEditor.this);
         if (w != null) {
             w.pack();
         }
@@ -1734,6 +1713,9 @@
      * -help will print a help message and immediately return (no editor instance opens)
      */
     public static void main(final String[] args) {
+        // setup Swing EDT tracing:
+        SwingUtils.setup();
+
         final OptionParser optionParser = new OptionParser(args, OptionsDefinitions.getPolicyEditorOptions());
         
         if (optionParser.hasOption(OptionsDefinitions.OPTIONS.VERBOSE)) {
@@ -1767,7 +1749,7 @@
         final String signedBy = getSignedByArgument(optionParser);
         final Set<PolicyParser.PrincipalEntry> principals = getPrincipalsArgument(optionParser);
 
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 final PolicyEditorWindow frame = getPolicyEditorFrame(filepath);
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java
--- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java	Wed Nov 07 12:34:44 2018 +0100
@@ -59,7 +59,6 @@
 import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
-import javax.swing.JDialog;
 import javax.swing.JFileChooser;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
@@ -68,9 +67,12 @@
 import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
 import javax.swing.JTable;
+import javax.swing.JTextField;
+import java.awt.Window;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.table.DefaultTableModel;
+import net.sourceforge.jnlp.runtime.JNLPRuntime;
 
 import net.sourceforge.jnlp.security.CertificateUtils;
 import net.sourceforge.jnlp.security.KeyStores;
@@ -104,6 +106,7 @@
         };
 
     JTabbedPane tabbedPane;
+    JTextField certPath = new JTextField();
     private final JTable userTable;
     private final JTable systemTable;
     private JComboBox<CertificateType> certificateTypeCombo;
@@ -113,16 +116,16 @@
     /** JComponents that should be disbled for system store */
     private final List<JComponent> disableForSystem;
 
-    private JDialog parent;
+    private Window parent;
     private JComponent defaultFocusComponent = null;
 
     /**
      * The Current KeyStore. Only one table/tab is visible for interaction to
      * the user. This KeyStore corresponds to that.
      */
-    private KeyStore keyStore = null;
+    private KeyStores.KeyStoreWithPath keyStore = null;
 
-    public CertificatePane(JDialog parent) {
+    public CertificatePane(Window parent) {
         super();
         this.parent = parent;
 
@@ -229,8 +232,11 @@
         }
 
         tablePanel.add(tabbedPane, BorderLayout.CENTER);
-        tablePanel.add(buttonPanel, BorderLayout.SOUTH);
-
+        JPanel buttonPanelWrapper = new JPanel(new BorderLayout());
+        certPath.setEditable(false);
+        buttonPanelWrapper.add(certPath, BorderLayout.CENTER);
+        buttonPanelWrapper.add(buttonPanel, BorderLayout.EAST);
+        tablePanel.add(buttonPanelWrapper, BorderLayout.SOUTH);
         main.add(certificateTypePanel, BorderLayout.NORTH);
         main.add(tablePanel, BorderLayout.CENTER);
 
@@ -241,6 +247,11 @@
             closeButton.addActionListener(new CloseButtonListener());
             defaultFocusComponent = closeButton;
             closePanel.add(closeButton, BorderLayout.EAST);
+            
+            JButton openAll = new JButton(R("ButLunchFullItwSettings"));
+            openAll.addActionListener(new FullSettingsButtonListener());
+            closePanel.add(openAll, BorderLayout.WEST);
+            
             main.add(closePanel, BorderLayout.SOUTH);
         }
 
@@ -259,9 +270,9 @@
         try {
 
             //Get all of the X509Certificates and put them into an ArrayList
-            aliases = keyStore.aliases();
+            aliases = keyStore.getKs().aliases();
             while (aliases.hasMoreElements()) {
-                Certificate c = keyStore.getCertificate(aliases.nextElement());
+                Certificate c = keyStore.getKs().getCertificate(aliases.nextElement());
                 if (c instanceof X509Certificate) {
                     certs.add((X509Certificate) c);
                 }
@@ -289,8 +300,20 @@
     private void repopulateTables() {
         initializeKeyStore();
         readKeyStore();
+        try {
+            File src = new File(keyStore.getPath());
+            File resolved = src.getCanonicalFile();
+            if (resolved.equals(src)) {
+                certPath.setText(keyStore.getPath());
+                OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, keyStore.getPath());
+            } else {
+                certPath.setText(keyStore.getPath() + " -> " + resolved.getCanonicalPath());
+                OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, keyStore.getPath() + " -> " + resolved.getCanonicalPath());
+            }
+        } catch (Exception ex) {
+            OutputController.getLogger().log(ex);
+        }
         DefaultTableModel tableModel = new DefaultTableModel(issuedToAndBy, columnNames);
-
         userTable.setModel(tableModel);
 
         tableModel = new DefaultTableModel(issuedToAndBy, columnNames);
@@ -380,7 +403,7 @@
             int returnVal = chooser.showOpenDialog(parent);
             if (returnVal == JFileChooser.APPROVE_OPTION) {
                 try {
-                    KeyStore ks = keyStore;
+                    KeyStore ks = keyStore.getKs();
                     if (currentKeyStoreType == KeyStores.Type.CLIENT_CERTS) {
                         char[] password = getPassword(R("CVImportPasswordMessage"));
                         if (password != null) {
@@ -428,16 +451,16 @@
                     JFileChooser chooser = new JFileChooser();
                     int returnVal = chooser.showOpenDialog(parent);
                     if (returnVal == JFileChooser.APPROVE_OPTION) {
-                        String alias = keyStore.getCertificateAlias(certs
+                        String alias = keyStore.getKs().getCertificateAlias(certs
                                                         .get(selectedRow));
                         if (alias != null) {
                             if (currentKeyStoreType == KeyStores.Type.CLIENT_CERTS) {
                                 char[] password = getPassword(R("CVExportPasswordMessage"));
                                 if (password != null) {
-                                    CertificateUtils.dumpPKCS12(alias, chooser.getSelectedFile(), keyStore, password);
+                                    CertificateUtils.dumpPKCS12(alias, chooser.getSelectedFile(), keyStore.getKs(), password);
                                 }
                             } else {
-                                Certificate c = keyStore.getCertificate(alias);
+                                Certificate c = keyStore.getKs().getCertificate(alias);
                                 PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath());
                                 CertificateUtils.dump(c, ps);
                             }
@@ -469,7 +492,7 @@
                 int selectedRow = table.getSelectedRow();
 
                 if (selectedRow != -1) {
-                    String alias = keyStore.getCertificateAlias(certs.get(selectedRow));
+                    String alias = keyStore.getKs().getCertificateAlias(certs.get(selectedRow));
                     if (alias != null) {
 
                         int i = JOptionPane.showConfirmDialog(parent,
@@ -477,12 +500,12 @@
                                                         R("CVRemoveConfirmTitle"),
                                                         JOptionPane.YES_NO_OPTION);
                         if (i == 0) {
-                            keyStore.deleteEntry(alias);
+                            keyStore.getKs().deleteEntry(alias);
                             File keyStoreFile = KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType).getFile();
                             if (!keyStoreFile.isFile()) {
                                 FileUtils.createRestrictedFile(keyStoreFile, true);
                             }
-                            SecurityUtil.storeKeyStore(keyStore, keyStoreFile);
+                            SecurityUtil.storeKeyStore(keyStore.getKs(), keyStoreFile);
                         }
                     }
                     repopulateTables();
@@ -520,7 +543,22 @@
     private class CloseButtonListener implements ActionListener {
         @Override
         public void actionPerformed(ActionEvent e) {
-            parent.dispose();
+            JNLPRuntime.exit(0);
+        }
+    }
+    
+    private class FullSettingsButtonListener implements ActionListener {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            try {
+                net.sourceforge.jnlp.controlpanel.ControlPanel.main(new String[0]);
+                parent.dispose();    
+            } catch (Exception ex) {
+                OutputController.getLogger().log(ex);
+                JOptionPane.showMessageDialog(parent, ex);
+
+            }
         }
     }
 
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java
--- a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java	Wed Nov 07 12:34:44 2018 +0100
@@ -41,20 +41,17 @@
 
 import java.awt.BorderLayout;
 import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Frame;
-import java.awt.Toolkit;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 
-import javax.swing.JDialog;
-import javax.swing.UIManager;
+import javax.swing.JFrame;
 
 import net.sourceforge.jnlp.runtime.JNLPRuntime;
 import net.sourceforge.jnlp.util.ImageResources;
 import net.sourceforge.jnlp.util.ScreenFinder;
+import net.sourceforge.swing.SwingUtils;
 
-public class CertificateViewer extends JDialog {
+public class CertificateViewer extends JFrame {
 
     private boolean initialized = false;
     private static final String dialogTitle = R("CVCertificateViewer");
@@ -62,7 +59,10 @@
     CertificatePane panel;
 
     public CertificateViewer() {
-        super((Frame) null, dialogTitle, true);
+        super(dialogTitle);
+        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        this.setName("CertificateViewer");
+        SwingUtils.info(this);
         setIconImages(ImageResources.INSTANCE.getApplicationImages());
 
         Container contentPane = getContentPane();
@@ -98,17 +98,21 @@
         ScreenFinder.centerWindowsToCurrentScreen(this);
     }
 
-    public static void showCertificateViewer() throws Exception {
+    private static void showCertificateViewer() {
         JNLPRuntime.initialize(true);
 
         CertificateViewer cv = new CertificateViewer();
         cv.setResizable(true);
         cv.centerDialog();
         cv.setVisible(true);
-        cv.dispose();
     }
 
     public static void main(String[] args) throws Exception {
-        CertificateViewer.showCertificateViewer();
+        SwingUtils.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                CertificateViewer.showCertificateViewer();
+            }
+        });
     }
 }
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/services/XBasicService.java
--- a/netx/net/sourceforge/jnlp/services/XBasicService.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/services/XBasicService.java	Wed Nov 07 12:34:44 2018 +0100
@@ -13,54 +13,68 @@
 // 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.
-
 package net.sourceforge.jnlp.services;
 
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Desktop;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
 import static net.sourceforge.jnlp.runtime.Translator.R;
 
 import java.io.IOException;
-import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.net.URLConnection;
+import java.util.StringTokenizer;
 
 import javax.jnlp.BasicService;
-import javax.swing.JOptionPane;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
 
 import net.sourceforge.jnlp.InformationDesc;
 import net.sourceforge.jnlp.JARDesc;
 import net.sourceforge.jnlp.JNLPFile;
-import net.sourceforge.jnlp.Launcher;
+import net.sourceforge.jnlp.config.BasicValueValidators;
+import static net.sourceforge.jnlp.config.BasicValueValidators.verifyFileOrCommand;
 import net.sourceforge.jnlp.config.DeploymentConfiguration;
 import net.sourceforge.jnlp.runtime.ApplicationInstance;
 import net.sourceforge.jnlp.runtime.JNLPRuntime;
+import net.sourceforge.jnlp.runtime.Translator;
+import net.sourceforge.jnlp.runtime.html.browser.LinkingBrowser;
 import net.sourceforge.jnlp.util.StreamUtils;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import net.sourceforge.swing.SwingUtils;
 
 /**
  * The BasicService JNLP service.
  *
- * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
+ * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell
+ * (JAM)</a> - initial author
  * @version $Revision: 1.10 $
  */
 class XBasicService implements BasicService {
 
-    /** command used to exec the native browser */
-    private String command = null;
-
-    /** whether the command was loaded / prompted for */
-    private boolean initialized = false;
-
     protected XBasicService() {
     }
 
     /**
-     * Returns the codebase of the application, applet, or
-     * installer.  If the codebase was not specified in the JNLP
-     * element then the main JAR's location is returned.  If no main
-     * JAR was specified then the location of the JAR containing the
-     * main class is returned.
+     * Returns the codebase of the application, applet, or installer. If the
+     * codebase was not specified in the JNLP element then the main JAR's
+     * location is returned. If no main JAR was specified then the location of
+     * the JAR containing the main class is returned.
      */
     @Override
     public URL getCodeBase() {
@@ -70,13 +84,15 @@
             JNLPFile file = app.getJNLPFile();
 
             // return the codebase.
-            if (file.getCodeBase() != null)
+            if (file.getCodeBase() != null) {
                 return file.getCodeBase();
+            }
 
             // else return the main JAR's URL.
             JARDesc mainJar = file.getResources().getMainJAR();
-            if (mainJar != null)
+            if (mainJar != null) {
                 return mainJar.getLocation();
+            }
 
             // else find JAR where main class was defined.
             //
@@ -101,8 +117,8 @@
     }
 
     /**
-     * Return the first URL from the jnlp file
-     * Or a default URL if no url found in JNLP file
+     * Return the first URL from the jnlp file Or a default URL if no url found
+     * in JNLP file
      */
     private URL findFirstURLFromJNLPFile() {
 
@@ -150,9 +166,8 @@
      */
     @Override
     public boolean isWebBrowserSupported() {
-        initialize();
-
-        return command != null;
+        //there is hardly anything our impl can not handle
+        return true;
     }
 
     /**
@@ -162,133 +177,238 @@
      */
     @Override
     public boolean showDocument(URL url) {
-        initialize();
-
-        if (url.toString().endsWith(".jnlp")) {
-            try {
-                new Launcher(false).launchExternal(url);
-                return true;
-            } catch (Exception ex) {
-                return false;
-            }
-        }
+        try {
+//        if (url.toString().endsWith(".jnlp")) {
+//            try {
+//                new Launcher(false).launchExternal(url);
+//                return true;
+//            } catch (Exception ex) {
+//                return false;
+//            }
+//        }
+// Ignorance of this code is the only regression against original code (if you asume msot of the jnlps havejnlp suffix...) we had
+// anyway, also jnlp protocol should be handled via this, so while this can be set via 
+// ALWAYS-ASK, or directly via BROWSER of deployment.browser.path , it still should be better then it was
+// in all cases, the mime recognition is much harder then .jnlp suffix
 
-        if (command != null) {
-            try {
-                // this is bogus because the command may require options;
-                // should use a StreamTokenizer or similar to get tokens
-                // outside of quotes.
-                Runtime.getRuntime().exec(command + " " + url.toString());
-                //Runtime.getRuntime().exec(new String[]{command,url.toString()});
-
-                return true;
-            } catch (IOException ex) {
-                OutputController.getLogger().log(ex);
-            }
-        }
-
-        return false;
-    }
+            String urls = url.toExternalForm();
+            OutputController.getLogger().log("showDocument for: " + urls);
 
-    private void initialize() {
-        if (initialized)
-            return;
-        initialized = true;
-        initializeBrowserCommand();
-        OutputController.getLogger().log("browser is " + command);
-    }
-
-    /**
-     * Initializes {@link #command} to launch a browser
-     */
-    private void initializeBrowserCommand() {
-        if (JNLPRuntime.isWindows()) {
-            command = "rundll32 url.dll,FileProtocolHandler ";
-        } else if (JNLPRuntime.isUnix()) {
             DeploymentConfiguration config = JNLPRuntime.getConfiguration();
-            command = config.getProperty(DeploymentConfiguration.KEY_BROWSER_PATH);
+            String command = config.getProperty(DeploymentConfiguration.KEY_BROWSER_PATH);
+            //for various debugging
+            //command=DeploymentConfiguration.ALWAYS_ASK;
             if (command != null) {
-                return;
+                OutputController.getLogger().log(DeploymentConfiguration.KEY_BROWSER_PATH + " located. Using: " + command);
+                return exec(command, urls);
             }
-
-            if (posixCommandExists("xdg-open")) {
-                command = "xdg-open";
-                return;
-            }
-
-            if (posixCommandExists(System.getenv("BROWSER"))) {
-                command = System.getenv("BROWSER");
-                return;
+            if (System.getenv(DeploymentConfiguration.BROWSER_ENV_VAR) != null) {
+                command = System.getenv(DeploymentConfiguration.BROWSER_ENV_VAR);
+                OutputController.getLogger().log("variable " + DeploymentConfiguration.BROWSER_ENV_VAR + " located. Using: " + command);
+                return exec(command, urls);
             }
-
-            while (true) {
-                command = promptForCommand(command);
-                if (command != null && posixCommandExists(command)) {
-                    config.setProperty(DeploymentConfiguration.KEY_BROWSER_PATH, command);
-                    try {
-                        config.save();
-                    } catch (IOException e) {
-                        OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
-                    }
-                    break;
+            if (JNLPRuntime.isHeadless() || !Desktop.isDesktopSupported()) {
+                command = promptForCommand(urls, false);
+                return exec(command, urls);
+            } else {
+                if (Desktop.isDesktopSupported()) {
+                    OutputController.getLogger().log("using default browser");
+                    Desktop.getDesktop().browse(url.toURI());
+                    return true;
+                } else {
+                    OutputController.getLogger().log("dont know what to do");
+                    return false;
                 }
             }
-        } else {
-            DeploymentConfiguration config = JNLPRuntime.getConfiguration();
-            command = config.getProperty(DeploymentConfiguration.KEY_BROWSER_PATH);
-
-            if (command == null) { // prompt & store
-                command = promptForCommand(null);
-
-                if (command != null) {
-                    config.setProperty(DeploymentConfiguration.KEY_BROWSER_PATH, command);
-                    try {
-                        config.save();
-                    } catch (IOException e) {
-                        OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
-                    }
-                }
-            }
+        } catch (Exception e) {
+            OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, e.toString());
+            OutputController.getLogger().log(e);
+            return false;
         }
     }
 
-    /**
-     * Check that a command exists on a posix-like system
-     * @param command the command to check
-     * @return true if the command exists
-     */
-    private boolean posixCommandExists(String command) {
-        if (command == null || command.trim().length() == 0) {
-            return false;
-        }
-
-        command = command.trim();
-        if (command.contains("\n") || command.contains("\r")) {
-            return false;
-        }
-
+    //cmd form user can contains spaces, wuotes and so... now we are relying on default dummy impl
+    private boolean exec(String cmd, String url) {
         try {
-            Process p = Runtime.getRuntime().exec(new String[] { "bash", "-c", "type " + command });
+            if (cmd == null || cmd.length() == 0) {
+                return false;
+            }
+            if (url == null || url.length() == 0) {
+                return false;
+            }
+            if (cmd.equals(DeploymentConfiguration.ALWAYS_ASK)) {
+                cmd = promptForCommand(url, true);
+            }
+            if (cmd.equals(DeploymentConfiguration.INTERNAL_HTML)) {
+                LinkingBrowser.createFrame(url, false, JFrame.DISPOSE_ON_CLOSE);
+                return true;
+            }
+            //copypasted from exec
+            StringTokenizer st = new StringTokenizer(cmd + " " + url);
+            String[] cmdarray = new String[st.countTokens()];
+            for (int i = 0; st.hasMoreTokens(); i++) {
+                cmdarray[i] = st.nextToken();
+            }
+            final ProcessBuilder pb = new ProcessBuilder(cmdarray);
+            pb.inheritIO();
+            final Process p = pb.start();
             StreamUtils.waitForSafely(p);
             return (p.exitValue() == 0);
-        } catch (IOException e) {
-            OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e);
+        } catch (Exception e) {
+            OutputController.getLogger().log(e);
+            try {
+                //time for stderr to deal with it in verbose mode
+                Thread.sleep(50);
+            } catch (Exception ex) {
+                //ss
+            }
+            OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, e.toString());
+            OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.VVPossibleBrowserValues());
             return false;
         }
     }
 
-    private String promptForCommand(String previousCommand) {
-        String message = null;
-        if (previousCommand == null) {
-            message = R("RBrowserLocationPromptMessage");
+    private String promptForCommand(final String targetUrl, boolean aa) throws IOException {
+        String message = Translator.VVPossibleBrowserValues();
+        String title = R("RBrowserLocationPromptTitle");
+        if (JNLPRuntime.isHeadless()) {
+            OutputController.getLogger().printOutLn(message);
+            OutputController.getLogger().printOutLn("*** " + targetUrl + " ***");
+            OutputController.getLogger().printOutLn(title);
+            String entered = OutputController.getLogger().readLine();
+            String verification = verifyFileOrCommand(entered);
+            if (verification == null) {
+                OutputController.getLogger().printOutLn(R("VVBrowserVerificationFail"));
+            } else {
+                OutputController.getLogger().printOutLn(R("VVBrowserVerificationPass", verification));
+            }
+            return entered;
         } else {
-            message = R("RBrowserLocationPromptMessageWithReason", previousCommand);
+            final PromptUrl pu = new PromptUrl();
+            pu.arrange(targetUrl, aa);
+            pu.setVisible(true);
+            return pu.getValue();
+        }
+    }
+
+    private static class PromptUrl extends JDialog {
+
+        JTextField value = new JTextField("firefox");
+        JLabel verification = new JLabel("?");
+        private WindowListener cl = new WindowAdapter() {
+            @Override
+            public void windowClosing(WindowEvent e) {
+                value.setText("");
+            }
+        };
+        JCheckBox save = new JCheckBox(R("PESaveChanges"));
+        private boolean ask;
+
+        public PromptUrl() {
+            super((JDialog) null, R("RBrowserLocationPromptTitle"), true);
         }
-        return JOptionPane.showInputDialog(new JPanel(),
-                                           R("RBrowserLocationPromptTitle"),
-                                           message,
-                                           JOptionPane.PLAIN_MESSAGE
-                                          );
+
+        public void arrange(String url, boolean ask) {
+            this.ask = ask;
+            JPanel top = new JPanel(new GridLayout(2, 1));
+            JPanel bottom = new JPanel(new GridLayout(5, 1));
+            this.setLayout(new BorderLayout());
+            this.add(top, BorderLayout.NORTH);
+            this.add(bottom, BorderLayout.SOUTH);
+            top.add(new JLabel("<html><b>" + R("RBrowserLocationPromptTitle")));
+            JTextField urlField = new JTextField(url);
+            urlField.setEditable(false);
+            top.add(urlField);
+            JTextArea ta = new JTextArea(Translator.VVPossibleBrowserValues());
+            ta.setEditable(false);
+            ta.setLineWrap(true);
+            ta.setWrapStyleWord(false);
+            JScrollPane scrollableTa=new JScrollPane(ta);
+            scrollableTa.setHorizontalScrollBar(null);
+            this.add(scrollableTa);
+            bottom.add(value);
+            bottom.add(verification);
+            JButton ok = new JButton(R("ButOk"));
+            ok.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    if (save.isSelected()) {
+                        JNLPRuntime.getConfiguration().setProperty(DeploymentConfiguration.KEY_BROWSER_PATH, value.getText());
+                        try {
+                            JNLPRuntime.getConfiguration().save();
+                        } catch (IOException ex) {
+                            OutputController.getLogger().log(ex);
+                        }
+                    }
+                    PromptUrl.this.dispose();
+                }
+            });
+            JButton cancel = new JButton(R("ButCancel"));
+            cancel.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    cl.windowClosing(null);
+                    PromptUrl.this.dispose();
+                }
+            });
+            bottom.add(save);
+            bottom.add(ok);
+            bottom.add(cancel);
+            if (this.ask) {
+                save.setSelected(false);
+                save.setEnabled(false);
+                save.setToolTipText(R("VVBrowserSaveNotAllowed", DeploymentConfiguration.ALWAYS_ASK, DeploymentConfiguration.KEY_BROWSER_PATH));
+            } else {
+                save.setEnabled(true);
+                save.setToolTipText(R("VVBrowserSaveAllowed", DeploymentConfiguration.KEY_BROWSER_PATH));
+            }
+            this.addWindowListener(cl);
+
+            value.getDocument().addDocumentListener(new DocumentListener() {
+
+                @Override
+                public void insertUpdate(DocumentEvent e) {
+                    check();
+                }
+
+                @Override
+                public void removeUpdate(DocumentEvent e) {
+                    check();
+                }
+
+                @Override
+                public void changedUpdate(DocumentEvent e) {
+                    check();
+                }
+
+                private void check() {
+                    String result = BasicValueValidators.verifyFileOrCommand(value.getText());
+                    if (result == null) {
+                        verification.setForeground(Color.red);
+                        verification.setText(R("VVBrowserVerificationFail"));
+                        if (!PromptUrl.this.ask) {
+                            save.setSelected(false);
+                        }
+                    } else {
+                        verification.setForeground(Color.green);
+                        verification.setText(R("VVBrowserVerificationPass", result));
+                        if (!PromptUrl.this.ask) {
+                            save.setSelected(true);
+                        }
+                    }
+                }
+            });
+            this.pack();
+            this.setSize(500, 400);
+        }
+
+        private String getValue() {
+            if (value.getText().trim().isEmpty()) {
+                return null;
+            }
+            return value.getText();
+        }
+
     }
 
 }
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java
--- a/netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java	Wed Nov 07 12:34:44 2018 +0100
@@ -55,7 +55,7 @@
 import java.util.Observable;
 import java.util.Observer;
 
-import javax.swing.SwingUtilities;
+import net.sourceforge.swing.SwingUtils;
 import net.sourceforge.jnlp.runtime.Translator;
 import net.sourceforge.jnlp.splashscreen.SplashUtils.SplashReason;
 import net.sourceforge.jnlp.splashscreen.parts.BasicComponentSplashScreen;
@@ -558,18 +558,16 @@
 
     @Override
     public void update(Observable o, Object arg) {
-        try {
-            SwingUtilities.invokeAndWait(new Runnable() {
+        SwingUtils.invokeAndWait(new Runnable() {
 
-                @Override
-                public void run() {
+            @Override
+            public void run() {
+                if (master.isAnimationRunning()) {
                     ExtensionManager.getExtension().animate();
                     master.repaint();
                 }
-            });
-        } catch (Exception ex) {
-            OutputController.getLogger().log(ex);
-        }
+            }
+        });
     }
 
     public BasicComponentSplashScreen getMaster() {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/splashscreen/parts/BasicComponentErrorSplashScreen.java
--- a/netx/net/sourceforge/jnlp/splashscreen/parts/BasicComponentErrorSplashScreen.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/splashscreen/parts/BasicComponentErrorSplashScreen.java	Wed Nov 07 12:34:44 2018 +0100
@@ -37,6 +37,7 @@
 package net.sourceforge.jnlp.splashscreen.parts;
 
 import net.sourceforge.jnlp.splashscreen.SplashErrorPanel;
+import net.sourceforge.swing.SwingUtils;
 
 public abstract class BasicComponentErrorSplashScreen extends BasicComponentSplashScreen implements SplashErrorPanel {
 
@@ -70,8 +71,7 @@
     }
 
     protected void raiseExceptionDialogQUEUED() {
-        java.awt.EventQueue.invokeLater(new Runnable() {
-
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 raiseExceptionDialogNOW();
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java
--- a/netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java	Wed Nov 07 12:34:44 2018 +0100
@@ -66,6 +66,7 @@
 import net.sourceforge.jnlp.util.BasicExceptionDialog;
 import net.sourceforge.jnlp.util.docprovider.TextsProvider;
 import net.sourceforge.jnlp.util.logging.OutputController;
+import net.sourceforge.swing.SwingUtils;
 
 public class JEditorPaneBasedExceptionDialog extends JDialog implements HyperlinkListener {
 
@@ -276,8 +277,7 @@
      * @param args the command line arguments
      */
     public static void main(String args[]) {
-        java.awt.EventQueue.invokeLater(new Runnable() {
-
+        SwingUtils.invokeLater(new Runnable() {
             public void run() {
                 Exception ex = new RuntimeException("dsgsfdg");
                 JEditorPaneBasedExceptionDialog dialog = new JEditorPaneBasedExceptionDialog(new JFrame(), true, ex, null, "uaaa: aaa\nwqdeweq:sdsds");
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java
--- a/netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java	Wed Nov 07 12:34:44 2018 +0100
@@ -57,7 +57,7 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
-import javax.swing.SwingUtilities;
+import net.sourceforge.swing.SwingUtils;
 import net.sourceforge.jnlp.controlpanel.CachePane;
 import net.sourceforge.jnlp.util.logging.JavaConsole;
 
@@ -81,6 +81,8 @@
 
         JOptionPane optionPane = new JOptionPane(mainPanel, JOptionPane.ERROR_MESSAGE);
         final JDialog errorDialog = optionPane.createDialog(R("Error"));
+        errorDialog.setName("BasicExceptionDialog");
+        SwingUtils.info(errorDialog);
         errorDialog.setIconImages(ImageResources.INSTANCE.getApplicationImages());
 
         final JPanel quickInfoPanelAll = new JPanel();
@@ -179,7 +181,7 @@
 
             @Override
             public void actionPerformed(java.awt.event.ActionEvent evt) {
-                SwingUtilities.invokeLater(new Runnable() {
+                SwingUtils.invokeLater(new Runnable() {
 
                     @Override
                     public void run() {
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/util/FileUtils.java
--- a/netx/net/sourceforge/jnlp/util/FileUtils.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/util/FileUtils.java	Wed Nov 07 12:34:44 2018 +0100
@@ -33,16 +33,20 @@
 import java.io.Writer;
 import java.nio.channels.FileChannel;
 import java.nio.channels.FileLock;
+import java.nio.file.Files;
+import java.nio.file.attribute.AclEntry;
+import java.nio.file.attribute.AclEntryFlag;
+import java.nio.file.attribute.AclEntryPermission;
+import java.nio.file.attribute.AclEntryType;
+import java.nio.file.attribute.AclFileAttributeView;
 import java.security.DigestInputStream;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 import javax.swing.JFrame;
 import javax.swing.JOptionPane;
-import javax.swing.SwingUtilities;
+import net.sourceforge.swing.SwingUtils;
 
 import net.sourceforge.jnlp.config.DirectoryValidator;
 import net.sourceforge.jnlp.config.DirectoryValidator.DirectoryCheckResults;
@@ -60,6 +64,8 @@
 
     private static final String WIN_DRIVE_LETTER_COLON_WILDCHAR = "WINDOWS_VERY_SPECIFIC_DOUBLEDOT";
 
+    private static final List<String> WIN_ROOT_PRINCIPALS = Arrays.asList("NT AUTHORITY\\SYSTEM", "BUILTIN\\Administrators");
+
     /**
      * Indicates whether a file was successfully opened. If not, provides specific reasons
      * along with a general failure case
@@ -242,37 +248,52 @@
         }
 
         if (JNLPRuntime.isWindows()) {
-            // remove all permissions
-            if (!tempFile.setExecutable(false, false)) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RRemoveXPermFailed", tempFile));
-            }
-            if (!tempFile.setReadable(false, false)) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RRemoveRPermFailed", tempFile));
-            }
-            if (!tempFile.setWritable(false, false)) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RRemoveWPermFailed", tempFile));
-            }
-
-            // allow owner to read
-            if (!tempFile.setReadable(true, true)) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RGetRPermFailed", tempFile));
+            // prepare ACL flags
+            Set<AclEntryFlag> flags = new LinkedHashSet<>();
+            if (tempFile.isDirectory()) {
+                flags.add(AclEntryFlag.DIRECTORY_INHERIT);
+                flags.add(AclEntryFlag.FILE_INHERIT);
             }
 
-            // allow owner to write
-            if (writableByOwner && !tempFile.setWritable(true, true)) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RGetWPermFailed", tempFile));
+            // prepare ACL permissions
+            Set<AclEntryPermission> permissions = new LinkedHashSet<>();
+            permissions.addAll(Arrays.asList(
+                    AclEntryPermission.READ_DATA,
+                    AclEntryPermission.READ_NAMED_ATTRS,
+                    AclEntryPermission.EXECUTE,
+                    AclEntryPermission.READ_ATTRIBUTES,
+                    AclEntryPermission.READ_ACL,
+                    AclEntryPermission.SYNCHRONIZE));
+            if (writableByOwner) {
+                permissions.addAll(Arrays.asList(
+                        AclEntryPermission.WRITE_DATA,
+                        AclEntryPermission.APPEND_DATA,
+                        AclEntryPermission.WRITE_NAMED_ATTRS,
+                        AclEntryPermission.DELETE_CHILD,
+                        AclEntryPermission.WRITE_ATTRIBUTES,
+                        AclEntryPermission.DELETE,
+                        AclEntryPermission.WRITE_ACL,
+                        AclEntryPermission.WRITE_OWNER));
             }
 
-            // allow owner to enter directories
-            if (isDir && !tempFile.setExecutable(true, true)) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RGetXPermFailed", tempFile));
+            // filter ACL's leaving only root and owner
+            AclFileAttributeView view = Files.getFileAttributeView(tempFile.toPath(), AclFileAttributeView.class);
+            List<AclEntry> list = new ArrayList<>();
+            String owner = view.getOwner().getName();
+            for (AclEntry ae : view.getAcl()) {
+                String principalName = ae.principal().getName();
+                if (WIN_ROOT_PRINCIPALS.contains(principalName) || owner.equals(principalName)) {
+                    list.add(AclEntry.newBuilder()
+                            .setType(AclEntryType.ALLOW)
+                            .setPrincipal(ae.principal())
+                            .setPermissions(permissions)
+                            .setFlags(flags)
+                            .build());
+                }
             }
-            // rename this file. Unless the file is moved/renamed, any program that
-            // opened the file right after it was created might still be able to
-            // read the data.
-            if (!tempFile.renameTo(file)) {
-                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RCantRename", tempFile, file));
-            }
+
+            // apply ACL
+            view.setAcl(list);
         } else {
         // remove all permissions
         if (!tempFile.setExecutable(false, false)) {
@@ -299,15 +320,14 @@
         if (isDir && !tempFile.setExecutable(true, true)) {
             throw new IOException(R("RGetXPermFailed", tempFile));
         }
-        
+        }
+
         // rename this file. Unless the file is moved/renamed, any program that
         // opened the file right after it was created might still be able to
         // read the data.
         if (!tempFile.renameTo(file)) {
             throw new IOException(R("RCantRename", tempFile, file));
         }
-        }
-
     }
 
     /**
@@ -375,7 +395,7 @@
      * @param frame a {@link JFrame} to act as parent to this dialog
      */
     public static void showReadOnlyDialog(final Component frame) {
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 JOptionPane.showMessageDialog(frame, R("RFileReadOnly"), R("Warning"), JOptionPane.WARNING_MESSAGE);
@@ -423,7 +443,7 @@
      * @param message a {@link String} giving the specific reason the file could not be opened
      */
     public static void showCouldNotOpenDialog(final Component frame, final String message) {
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public void run() {
                 JOptionPane.showMessageDialog(frame, message, R("Error"), JOptionPane.ERROR_MESSAGE);
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/util/ImageResources.java
--- a/netx/net/sourceforge/jnlp/util/ImageResources.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/util/ImageResources.java	Wed Nov 07 12:34:44 2018 +0100
@@ -77,14 +77,16 @@
         }
 
         InputStream in = cl.getResourceAsStream(APPLICATION_ICON_PATH);
-        try {
-            Image image = ImageIO.read(in);
-            cache.put(APPLICATION_ICON_PATH, image);
-            return image;
-        } catch (IOException ioe) {
-            OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ioe);
-            return null;
+        if (in != null) {
+            try {
+                Image image = ImageIO.read(in);
+                cache.put(APPLICATION_ICON_PATH, image);
+                return image;
+            } catch (IOException ioe) {
+                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ioe);
+            }
         }
+        return null;
     }
 
     /**
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java
--- a/netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java	Wed Nov 07 12:34:44 2018 +0100
@@ -94,7 +94,13 @@
      */
     synchronized public static LockedFile getInstance(File file) {
         if (!instanceCache.containsKey(file)) {
-            instanceCache.put(file, new LockedFile(file));
+            LockedFile l;
+            if (JNLPRuntime.isWindows()) {
+                l = new WindowsLockedFile(file);
+            } else {
+                l = new LockedFile(file);
+            }
+            instanceCache.put(file, l);
         }
 
         return instanceCache.get(file);
@@ -113,9 +119,6 @@
      * Lock access to the file. Lock is reentrant.
      */
     public void lock() throws IOException {
-        if (JNLPRuntime.isWindows()) {
-            return;
-        }
         // Create if does not already exist, cannot lock non-existing file
         if (!isReadOnly()) {
             this.file.createNewFile();
@@ -153,10 +156,14 @@
      * Unlock access to the file. Lock is reentrant. Does not do anything if not holding the lock.
      */
     public void unlock() throws IOException {
-        if (JNLPRuntime.isWindows() || !this.threadLock.isHeldByCurrentThread()) {
+        if (!this.threadLock.isHeldByCurrentThread()) {
             return;
         }
         boolean releaseProcessLock = (this.threadLock.getHoldCount() == 1);
+        unlockImpl(releaseProcessLock);
+    }
+
+    protected void unlockImpl(boolean releaseProcessLock) throws IOException {
         try {
             if (releaseProcessLock) {
                 if (this.processLock != null){
@@ -180,4 +187,27 @@
     public boolean isHeldByCurrentThread() {
         return this.threadLock.isHeldByCurrentThread();
     }
-}
\ No newline at end of file
+
+    private static class WindowsLockedFile extends LockedFile {
+
+        public WindowsLockedFile(File file) {
+            super(file);
+        }
+
+        /*Comment why itis different*/
+        @Override
+        public void lock() throws IOException {
+            super.file.createNewFile();
+            super.threadLock.lock();
+        }
+
+        /*Comment why itis different*/
+        @Override
+        public void unlock() throws IOException {
+            if (!super.threadLock.isHeldByCurrentThread()) {
+                return;
+            }
+            unlockImpl(false);
+        }
+    }
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java
--- a/netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java	Wed Nov 07 12:34:44 2018 +0100
@@ -46,6 +46,7 @@
 import net.sourceforge.jnlp.runtime.JNLPRuntime;
 import net.sourceforge.jnlp.runtime.Translator;
 import net.sourceforge.jnlp.util.logging.headers.ObservableMessagesProvider;
+import net.sourceforge.swing.SwingUtils;
 
 public class ConsoleOutputPane extends JPanel implements Observer {
     
@@ -188,8 +189,7 @@
 
             @Override
             public final void mouseClicked(final MouseEvent e) {
-                EventQueue.invokeLater(new Runnable() {
-
+                SwingUtils.invokeLater(new Runnable() {
                     @Override
                     public final void run() {
                         try {
@@ -213,8 +213,7 @@
                 if (e.getKeyCode() != KeyEvent.VK_CONTEXT_MENU) {
                     return;
                 }
-                EventQueue.invokeLater(new Runnable() {
-
+                SwingUtils.invokeLater(new Runnable() {
                     @Override
                     public final void run() {
                         try {
@@ -283,8 +282,7 @@
             return;
         }
         done.set(false);
-        EventQueue.invokeLater(new Runnable() {
-
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public final void run() {
                 try {
@@ -683,8 +681,7 @@
 
             @Override
             public final void actionPerformed(final ActionEvent e) {
-                EventQueue.invokeLater(new Runnable() {
-
+                SwingUtils.invokeLater(new Runnable() {
                     @Override
                     public final void run() {
                         try {
@@ -706,8 +703,7 @@
 
             @Override
             public final void actionPerformed(final ActionEvent e) {
-                EventQueue.invokeLater(new Runnable() {
-
+                SwingUtils.invokeLater(new Runnable() {
                     @Override
                     public final void run() {
                         try {
@@ -730,8 +726,7 @@
 
             @Override
             public final void actionPerformed(final ActionEvent e) {
-                EventQueue.invokeLater(new Runnable() {
-
+                SwingUtils.invokeLater(new Runnable() {
                     @Override
                     public final void run() {
                         try {
@@ -903,8 +898,7 @@
     }
 
     public static final void main(final String args[]) {
-        EventQueue.invokeLater(new Runnable() {
-
+        SwingUtils.invokeLater(new Runnable() {
             @Override
             public final void run() {
                 final JFrame dialog = new JFrame();
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/jnlp/util/logging/JavaConsole.java
--- a/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java	Wed Nov 07 12:34:44 2018 +0100
@@ -69,10 +69,10 @@
 import javax.swing.JSpinner;
 import javax.swing.JSplitPane;
 import javax.swing.SpinnerNumberModel;
-import javax.swing.SwingUtilities;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.text.DefaultFormatter;
+import net.sourceforge.swing.SwingUtils;
 import net.sourceforge.jnlp.config.DeploymentConfiguration;
 import net.sourceforge.jnlp.runtime.JNLPRuntime;
 import net.sourceforge.jnlp.util.ImageResources;
@@ -204,6 +204,9 @@
 
     private void initializeWindow(Dimension size, JPanel content) {
         consoleWindow = new JDialog((JFrame) null, R("DPJavaConsole"));
+        consoleWindow.setName("JavaConsole");
+        SwingUtils.info(consoleWindow);
+        
         consoleWindow.addWindowListener(new WindowAdapter() {
 
             @Override
@@ -353,7 +356,7 @@
 
             @Override
             public void actionPerformed(ActionEvent e) {
-                SwingUtilities.invokeLater(new Runnable() {
+                SwingUtils.invokeLater(new Runnable() {
 
                     @Override
                     public void run() {
@@ -407,7 +410,7 @@
     }
 
     public void showConsoleLater(final boolean modal) {
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
 
             @Override
             public void run() {
@@ -417,7 +420,7 @@
     }
 
     public void hideConsoleLater() {
-        SwingUtilities.invokeLater(new Runnable() {
+        SwingUtils.invokeLater(new Runnable() {
 
             @Override
             public void run() {
@@ -512,9 +515,21 @@
         updateModel(null);
     }
 
-    private synchronized void updateModel(Boolean force) {
+    private synchronized void updateModel(final Boolean force) {
         observable.setChanged();
-        observable.notifyObservers(force);
+        
+        SwingUtils.invokeLater(new Runnable() {
+
+            @Override
+            public void run() {
+                // avoid too much processing if already processed:
+                synchronized(observable) {
+                    if (observable.hasChanged() || (Boolean.TRUE.equals(force))) {
+                        observable.notifyObservers(force);
+                    }
+                }
+            }
+        });
     }
 
     /**
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/swing/SwingUtils.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/netx/net/sourceforge/swing/SwingUtils.java	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,187 @@
+/* SwingUtils.java
+   Copyright (C) 2018 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+package net.sourceforge.swing;
+
+import java.awt.Component;
+import java.awt.EventQueue;
+import java.awt.Window;
+import java.lang.reflect.InvocationTargetException;
+import javax.swing.JWindow;
+import javax.swing.RepaintManager;
+import javax.swing.SwingUtilities;
+import net.sourceforge.jnlp.runtime.Translator;
+import net.sourceforge.jnlp.util.logging.OutputController;
+
+/**
+ * Swing / AWT utility class
+ */
+public final class SwingUtils {
+
+    private static final boolean DEBUG_EDT = System.getProperty("icedtea-web.edt.debug", "false").equalsIgnoreCase("true");
+
+    // debugging flags:
+    private static final boolean INFO_DIALOG = false;
+    private static final boolean TRACE_INVOKE_EDT = false;
+    private static final boolean TRACE_TG = false;
+
+    // internals:
+    private static boolean DO_SETUP = true;
+
+    /** main thread group (initialized at startup) */
+    private static final ThreadGroup MAIN_GROUP = Thread.currentThread().getThreadGroup();
+
+    /* shared Window owner */
+    private static Window window = null;
+
+    private SwingUtils() {
+        // forbidden
+    }
+
+    public static void setup() {
+        if (DO_SETUP) {
+            DO_SETUP = false; // avoid reentrance
+
+            if (DEBUG_EDT) {
+                trace("Using ThreadCheckingRepaintManager");
+                RepaintManager.setCurrentManager(new ThreadCheckingRepaintManager());
+            }
+        }
+    }
+
+    static void trace(final String msg) {
+        // Use System.err directly for debuging EDT without any conflict with console / logging system
+        System.err.println(msg);
+    }
+
+    static void traceWithStack(final String msg) {
+        trace(msg);
+        new Throwable().printStackTrace();
+    }
+
+    public static void info(final Window dialog) {
+        if (INFO_DIALOG) {
+            trace("Dialog[" + dialog.getName() + "]"
+                    + " in TG [" + Thread.currentThread().getThreadGroup() + "]");
+            checkEDT();
+        }
+    }
+
+    public static void checkEDT() {
+        if (!isEventDispatchThread()) {
+            OutputController.getLogger().log(OutputController.Level.ERROR_ALL, new Exception("EDT violation"));
+        }
+    }
+
+    private static boolean isMainThreadGroup() {
+        final Thread t = Thread.currentThread();
+        final ThreadGroup g = t.getThreadGroup();
+
+        if (g != MAIN_GROUP) {
+            if (TRACE_TG) {
+                traceWithStack("----------\ncheckThreadGroup: " + t);
+            }
+            return false;
+        }
+        return true;
+    }
+
+    // --- SwingUtilities wrapper ---
+    public static Window getWindowAncestor(Component c) {
+        return SwingUtilities.getWindowAncestor(c);
+    }
+
+    public static boolean isEventDispatchThread() {
+        return EventQueue.isDispatchThread();
+    }
+
+    public static void invokeLater(final Runnable doRun) {
+        if (isMainThreadGroup()) {
+            if (TRACE_INVOKE_EDT && isEventDispatchThread()) {
+                traceWithStack("invokeLater() from EDT: MAY be fixed (useless) ?");
+            }
+        }
+        EventQueue.invokeLater(doRun);
+    }
+
+    public static void invokeRunnableOrEnqueueLater(final Runnable runnable) {
+        if (isEventDispatchThread()) {
+            runnable.run();
+        } else {
+            invokeLater(runnable);
+        }
+    }
+
+    public static void callOnAppContext(final Runnable doRun) throws InterruptedException, InvocationTargetException {
+        EventQueue.invokeAndWait(doRun);
+    }
+
+    public static void invokeAndWait(final Runnable doRun) {
+        if (isEventDispatchThread()) {
+            if (TRACE_INVOKE_EDT) {
+                traceWithStack("invokeAndWait() from EDT: to be fixed (illegal) ?");
+            }
+            // Direct invocation:
+            doRun.run();
+        } else {
+            try {
+                callOnAppContext(doRun);
+            } catch (InterruptedException ie) {
+                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ie);
+            } catch (InvocationTargetException ite) {
+                OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ite);
+            }
+        }
+    }
+
+    public static synchronized Window getOrCreateWindowOwner() {
+        if (window == null) {
+            invokeAndWait(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        window = new JWindow().getOwner();
+                        window.setName("getOrCreateWindowOwner");
+                    } catch (Exception ex) {
+                        OutputController.getLogger().log(ex);
+                        OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("HEADLESS_MISSCONFIGURED"));
+                    }
+                }
+            });
+        }
+        return window;
+    }
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb netx/net/sourceforge/swing/ThreadCheckingRepaintManager.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/netx/net/sourceforge/swing/ThreadCheckingRepaintManager.java	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,120 @@
+/**
+ * License unknown.
+ * based on  Alexander Potochkin's "Debugging Swing, the final summary"
+ * when oracle acquired sun, this blog post was removed, and lives only in copies.
+ * most complex was found:
+http://web.archive.org/web/20150523152453/https://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html
+ */
+package net.sourceforge.swing;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import javax.swing.JComponent;
+import javax.swing.RepaintManager;
+import static net.sourceforge.swing.SwingUtils.trace;
+
+/**
+ * For usage of this class, please refer to http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html
+ * <p> To use it, call RepaintManager.setCurrentManager(new ThreadCheckingRepaintManager()) then watch the print out
+ * from the console of all threading violations. </p>
+ */
+public final class ThreadCheckingRepaintManager extends RepaintManager {
+
+    // it is recommended to pass the complete check
+    private boolean completeCheck = true;
+    private boolean checkIsShowing = false;
+
+    /**
+     * Creates ThreadCheckingRepaintManager. You can create one and set it using RepaintManager.setCurrentManager(new
+     * ThreadCheckingRepaintManager()).
+     */
+    public ThreadCheckingRepaintManager() {
+        super();
+    }
+
+    /**
+     * Creates ThreadCheckingRepaintManager. You can create one and set it using RepaintManager.setCurrentManager(new
+     * ThreadCheckingRepaintManager()).
+     *
+     * @param checkIsShowing true to only check showing components.
+     */
+    public ThreadCheckingRepaintManager(boolean checkIsShowing) {
+        super();
+        this.checkIsShowing = checkIsShowing;
+    }
+
+    /**
+     * Initially there was a rule that it is safe to create and use Swing components until they are realized but this
+     * rule is not valid any more, and now it is recommended to interact with Swing from EDT only.
+     * <p/>
+     * That's why completeCheck flag is used - if you test the old program switch it to false, but new applications
+     * should be tested with completeCheck set to true*
+     *
+     * @return true or false. By default, it is false.
+     */
+    public boolean isCompleteCheck() {
+        return completeCheck;
+    }
+
+    /**
+     * @param completeCheck true or false.
+     *
+     * @see #isCompleteCheck()
+     */
+    public void setCompleteCheck(boolean completeCheck) {
+        this.completeCheck = completeCheck;
+    }
+
+    @Override
+    public synchronized void addInvalidComponent(JComponent jComponent) {
+        checkThreadViolations(jComponent);
+        super.addInvalidComponent(jComponent);
+    }
+
+    @Override
+    public synchronized void addDirtyRegion(JComponent jComponent, int i, int i1, int i2, int i3) {
+        checkThreadViolations(jComponent);
+        super.addDirtyRegion(jComponent, i, i1, i2, i3);
+    }
+
+    private void checkThreadViolations(JComponent c) {
+        if (!SwingUtils.isEventDispatchThread() && (completeCheck || checkIsShowing(c))) {
+            Exception exception = new Exception();
+            boolean repaint = false;
+            boolean fromSwing = false;
+            StackTraceElement[] stackTrace = exception.getStackTrace();
+            for (StackTraceElement st : stackTrace) {
+                if (repaint && st.getClassName().startsWith("javax.swing.")) {
+                    fromSwing = true;
+                }
+                if ("repaint".equals(st.getMethodName())) {
+                    repaint = true;
+                }
+            }
+            if (repaint && !fromSwing) {
+                //no problems here, since repaint() is thread safe
+                return;
+            }
+            trace("----------Wrong Thread START");
+            trace(getStrackTraceAsString(exception));
+            trace("----------Wrong Thread END");
+        }
+    }
+
+    @SuppressWarnings({"SimplifiableIfStatement"})
+    private boolean checkIsShowing(JComponent c) {
+        if (this.checkIsShowing) {
+            return c.isShowing();
+        } else {
+            return true;
+        }
+    }
+
+    private String getStrackTraceAsString(Exception e) {
+        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+        PrintStream printStream = new PrintStream(byteArrayOutputStream);
+        e.printStackTrace(printStream);
+        printStream.flush();
+        return byteArrayOutputStream.toString();
+    }
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb plugin/icedteanp/IcedTeaNPPlugin.cc
--- a/plugin/icedteanp/IcedTeaNPPlugin.cc	Mon Dec 18 13:22:51 2017 +0100
+++ b/plugin/icedteanp/IcedTeaNPPlugin.cc	Wed Nov 07 12:34:44 2018 +0100
@@ -1562,11 +1562,15 @@
   command_line[2] = NULL;
 
   if ( standard_error != NULL ){
-    if(strstr(standard_error, "\"9") != NULL) {
-      PLUGIN_DEBUG ("detected 9\n");
-      PLUGIN_DEBUG ("plugin_get_java_version return\n");
-      return 9;
-    }
+    int major = 0;
+    int minor = 0;
+    sscanf(standard_error, "%*s %*s \"%d.%d", &major, &minor);
+    if (major == 1)
+      major = minor;
+
+    PLUGIN_DEBUG ("detected version %d\n", major);
+    PLUGIN_DEBUG ("plugin_get_java_version return\n");
+    return major;
   }
   PLUGIN_DEBUG ("detected 8 (or generally non nine)\n");
   PLUGIN_DEBUG ("plugin_get_java_version return\n");
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java
--- a/tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java	Wed Nov 07 12:34:44 2018 +0100
@@ -33,8 +33,7 @@
 this exception to your version of the library, but you are not
 obligated to do so.  If you do not wish to do so, delete this
 exception statement from your version.
-*/
-
+ */
 package net.sourceforge.jnlp;
 
 import java.io.InputStream;
@@ -46,8 +45,10 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-/** Test that the parser works with basic jnlp files */
-public class ParserBasic extends NoStdOutErrTest{
+/**
+ * Test that the parser works with basic jnlp files
+ */
+public class ParserBasic extends NoStdOutErrTest {
 
     private static Node root;
     private static Parser parser;
@@ -214,6 +215,22 @@
     }
 
     @Test
+    public void testResourcesInsideJava() throws ParseException {
+        ClassLoader cl = ParserBasic.class.getClassLoader();
+        if (cl == null) {
+            cl = ClassLoader.getSystemClassLoader();
+        }
+        ParserSettings defaultParser = new ParserSettings();
+        InputStream jnlpStream = cl.getResourceAsStream("net/sourceforge/jnlp/jarsInJreDesc.jnlp");
+        Node omega = Parser.getRootNode(jnlpStream, defaultParser);
+        Parser omegaParser = new Parser(new DummyJNLPFile(), null, omega, defaultParser);
+        ResourcesDesc resources = omegaParser.getResources(omega, false).get(0);
+        JARDesc[] r = resources.getJARs();
+        // we ensures that also in j2se hars ar eloaded.it is 7 withutt them.
+        Assert.assertTrue(r.length>30);
+    }
+
+    @Test
     public void testResourcesJar() throws ParseException {
         ResourcesDesc resources = parser.getResources(root, false).get(0);
 
@@ -276,7 +293,7 @@
         ApplicationDesc app = (ApplicationDesc) parser.getLauncher(root);
         Assert.assertNotNull(app);
         Assert.assertEquals("MainClass", app.getMainClass());
-        Assert.assertArrayEquals(new String[] { "arg1", "arg2" }, app.getArguments());
+        Assert.assertArrayEquals(new String[]{"arg1", "arg2"}, app.getArguments());
     }
 
 }
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/netx/unit/net/sourceforge/jnlp/ParserCornerCases.java
--- a/tests/netx/unit/net/sourceforge/jnlp/ParserCornerCases.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/tests/netx/unit/net/sourceforge/jnlp/ParserCornerCases.java	Wed Nov 07 12:34:44 2018 +0100
@@ -66,7 +66,7 @@
         Assert.assertTrue(target.getContent().contains("<entry key=\"key\">value</entry>"));
 
         Node node = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("argument", node.getNodeName());
+        Assert.assertEquals("argument", node.getNodeName().getName());
         String contents = node.getNodeValue();
         Assert.assertTrue(contents.contains("xml"));
         Assert.assertTrue(contents.contains("DOCTYPE"));
@@ -94,7 +94,7 @@
 
         Node node = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
         node = node.getFirstChild().getFirstChild();
-        Assert.assertEquals("argument", node.getNodeName());
+        Assert.assertEquals("argument", node.getNodeName().getName());
         String contents = node.getNodeValue();
         Assert.assertTrue(contents.contains("xml"));
         Assert.assertTrue(contents.contains("DOCTYPE"));
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/netx/unit/net/sourceforge/jnlp/ParserTest.java
--- a/tests/netx/unit/net/sourceforge/jnlp/ParserTest.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/tests/netx/unit/net/sourceforge/jnlp/ParserTest.java	Wed Nov 07 12:34:44 2018 +0100
@@ -67,7 +67,7 @@
         String data = "<jnlp></jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -82,7 +82,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -105,7 +105,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -135,7 +135,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -162,7 +162,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -185,7 +185,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -216,7 +216,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -247,7 +247,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -277,7 +277,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -306,7 +306,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -334,7 +334,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -361,7 +361,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -385,7 +385,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -409,7 +409,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -431,7 +431,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -454,7 +454,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -493,7 +493,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(ALL_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -516,7 +516,7 @@
         String data = "<jnlp></jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -531,7 +531,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -554,7 +554,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -580,7 +580,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -607,7 +607,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -630,7 +630,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -661,7 +661,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -692,7 +692,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -722,7 +722,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -751,7 +751,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -779,7 +779,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -806,7 +806,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -830,7 +830,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -854,7 +854,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -876,7 +876,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -899,7 +899,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -938,7 +938,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -961,7 +961,7 @@
         String data = "<jnlp></jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -976,7 +976,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -999,7 +999,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -1021,7 +1021,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -1045,7 +1045,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -1068,7 +1068,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -1099,7 +1099,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -1130,7 +1130,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -1156,7 +1156,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = parser.getInfo(root);
@@ -1184,7 +1184,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -1211,7 +1211,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -1235,7 +1235,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -1259,7 +1259,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
         List<InformationDesc> infoDescs = new ArrayList<InformationDesc>();
@@ -1281,7 +1281,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -1304,7 +1304,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -1343,7 +1343,7 @@
                 + "</jnlp>\n";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser);
@@ -1371,7 +1371,7 @@
                 "</jnlp>";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         URL overwrittenCodebase = new URL("http://icedtea.classpath.org");
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
@@ -1390,7 +1390,7 @@
                 "</jnlp>";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         URL overwrittenCodebase = new URL("http://icedtea.classpath.org");
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
@@ -1408,7 +1408,7 @@
                 "</jnlp>";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         URL overwrittenCodebase = new URL("http://icedtea.classpath.org");
 
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
@@ -1427,7 +1427,7 @@
                 + "</jnlp>";
 
         Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName());
         MockJNLPFile file = new MockJNLPFile(LANG_LOCALE);
         Parser parser = new Parser(file, null, root, defaultParser, null);
         ParseException eex = null;
@@ -1453,7 +1453,7 @@
                 + "</jnlp>";
 
         Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName());
         MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE);
         Parser parser1 = new Parser(file1, null, root1, defaultParser, null);
         String main1 = parser1.getLauncher(root1).getMainClass();
@@ -1461,7 +1461,7 @@
         
         //strict also ok
         Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName());
         MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE);
         Parser parser2 = new Parser(file2, null, root2, defaultParser, null);
         String main2 = parser2.getLauncher(root2).getMainClass();
@@ -1478,7 +1478,7 @@
                 + "</jnlp>";
 
         Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName());
         MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE);
         Parser parser1 = new Parser(file1, null, root1, defaultParser, null);
         String main1 = parser1.getLauncher(root1).getMainClass();
@@ -1486,7 +1486,7 @@
         
         //strict also ok
         Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName());
         MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE);
         Parser parser2 = new Parser(file2, null, root2, strictParser, null);
         String main2 = parser2.getLauncher(root2).getMainClass();
@@ -1503,7 +1503,7 @@
                 + "</jnlp>";
 
         Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName());
         MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE);
         Parser parser1 = new Parser(file1, null, root1, defaultParser, null);
         parser1.getLauncher(root1).getMainClass();
@@ -1520,7 +1520,7 @@
                 + "</jnlp>";
 
         Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName());
         MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE);
         Parser parser1 = new Parser(file1, null, root1, defaultParser, null);
         String main1 = parser1.getLauncher(root1).getMainClass();
@@ -1528,7 +1528,7 @@
         
         //strict also ok
         Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName());
         MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE);
         Parser parser2 = new Parser(file2, null, root2, strictParser, null);
         String main2 = parser2.getLauncher(root2).getMainClass();
@@ -1546,7 +1546,7 @@
                 + "</jnlp>";
 
         Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName());
         MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE);
         Parser parser1 = new Parser(file1, null, root1, defaultParser, null);
         String main1 = parser1.getLauncher(root1).getMainClass();
@@ -1554,7 +1554,7 @@
         
         //strict throws
         Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName());
         MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE);
         Parser parser2 = new Parser(file2, null, root2, strictParser, null);
         parser2.getLauncher(root2).getMainClass();
@@ -1570,7 +1570,7 @@
                 + "</jnlp>";
 
         Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName());
         MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE);
         Parser parser1 = new Parser(file1, null, root1, defaultParser, null);
         String main1 = parser1.getLauncher(root1).getMainClass();
@@ -1578,7 +1578,7 @@
         
         //strict throws
         Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName());
         MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE);
         Parser parser2 = new Parser(file2, null, root2, strictParser, null);
         parser2.getLauncher(root2).getMainClass();
@@ -1594,7 +1594,7 @@
                 + "</jnlp>";
 
         Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName());
         MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE);
         Parser parser1 = new Parser(file1, null, root1, defaultParser, null);
         String main1 = parser1.getLauncher(root1).getMainClass();
@@ -1602,7 +1602,7 @@
         
         //strict throws
         Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName());
         MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE);
         Parser parser2 = new Parser(file2, null, root2, strictParser, null);
         parser2.getLauncher(root2).getMainClass();
@@ -1617,7 +1617,7 @@
                 + "</jnlp>";
 
         Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName());
         MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE);
         Parser parser1 = new Parser(file1, null, root1, defaultParser, null);
         String main1 = parser1.getLauncher(root1).getMainClass();
@@ -1625,7 +1625,7 @@
         
         //strict throws
         Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser);
-        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName());
+        Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName());
         MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE);
         Parser parser2 = new Parser(file2, null, root2, strictParser, null);
         parser2.getLauncher(root2).getMainClass();
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/netx/unit/net/sourceforge/jnlp/jarsInJreDesc.jnlp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/netx/unit/net/sourceforge/jnlp/jarsInJreDesc.jnlp	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+exmaple of "bad" jnlp file with resources inside j2sa
+-->
+<jnlp spec="1.0+" codebase="http://localhost/" href="jnlp.jnlp">
+	<information>
+		<title>OmegaT</title>
+		<vendor>OmegaT development team</vendor>
+		<homepage href="http://www.omegat.org" />
+		<shortcut online="false">
+			<desktop />
+			<menu submenu="OmegaT from WebStart" />
+		</shortcut>
+		<offline-allowed />
+        <association mime-type="application/x-omegat-project" extensions="project" />
+
+<!--
+		<related-content href="readme.html">
+			<title>README</title>
+			<description>
+				The README file contains additional information about
+				the product
+			</description>
+		</related-content>
+-->
+	</information>
+
+	<security>
+		<all-permissions />
+	</security>
+
+	<resources>
+		<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se">
+			<resources>
+				<jar href="OmegaT.jar" />
+				<jar href="docs.jar" />
+				<jar href="htmlparser.jar" />
+				<jar href="jmyspell-core-1.0.0-beta-2.jar" />
+				<jar href="jna.jar" />
+				<jar href="lib-mnemonics.jar" />
+				<jar href="swing-layout-1.0.4.jar" />
+				<jar href="vldocking-3.0.5-SNAPSHOT.jar" />
+				<jar href="svnkit-1.8.5.jar" />
+				<jar href="antlr-runtime-3.4.jar" />
+				<jar href="sqljet-1.1.10.jar" />
+				<jar href="sequence-library-1.0.2.jar" />
+				<jar href="org.eclipse.jgit-3.7.1.201504261725-r.jar" />
+				<jar href="jsch-0.1.49.jar" />
+				<jar href="lucene-analyzers-3.6.2.jar" />
+				<jar href="lucene-core-3.6.2.jar" />
+				<jar href="lucene-kuromoji-3.6.2.jar" />
+				<jar href="lucene-smartcn-3.6.2.jar" />
+				<jar href="tinysegmenter.jar" />
+				<jar href="commons-lang-2.4.jar"  />
+				<jar href="commons-io-2.4.jar"  />
+				<jar href="commons-logging-1.1.1.jar"  />
+				<jar href="jwordsplitter-3.4.jar"  />
+				<jar href="KoreanAnalyzer-3x-120223.jar" />
+				<jar href="LanguageTool-data.jar"  />
+				<jar href="languagetool-core-2.2.jar"  />
+				<jar href="morfologik-fsa-1.5.4.jar"  />
+				<jar href="morfologik-speller-1.5.4.jar"  />
+				<jar href="morfologik-stemming-1.5.4.jar"  />
+				<jar href="cjftransform-1.0.1.jar"  />
+				<jar href="ictclas4j-1.0.1.jar"  />
+				<jar href="segment-1.4.1.jar"  />		
+				<jar href="lucene-gosen-2.0.2-ipadic.jar"  />
+				<jar href="pdfbox-app-1.8.1.jar"  />
+				<jar href="groovy-all-2.2.2.jar"  />
+				<jar href="diff.jar" />
+				<jar href="SuperTMXMerge-for_OmegaT.jar" />
+				<jar href="slf4j-api-1.7.7.jar" />
+				<jar href="slf4j-jdk14-1.7.7.jar" />
+				<jar href="trilead-ssh2-1.0.0-build217.jar" />
+				<jar href="juniversalchardet-1.0.3.jar" />
+			</resources>
+			<resources os="Linux" arch="amd64">
+				<nativelib href="hunspell-linux64.jar" />
+			</resources>
+			<resources os="Linux" arch="i386">
+				<nativelib href="hunspell-linux32.jar" />
+			</resources>
+			<resources os="MacOS" arch="x86_64">
+				<nativelib href="hunspell-macos64.jar" />
+			</resources>
+			<resources os="MacOS" arch="i386">
+				<nativelib href="hunspell-macos32.jar" />
+			</resources>
+			<resources os="Windows" arch="amd64">
+				<nativelib href="hunspell-win64.jar" />
+			</resources>
+			<resources os="Windows" arch="x86">
+				<nativelib href="hunspell-win32.jar" />
+			</resources>
+		</j2se>
+		<property name="javaws.cfg.jauthenticator" value="true" />
+	</resources>
+	<application-desc main-class="org.omegat.Main" />
+</jnlp>
\ No newline at end of file
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/netx/unit/net/sourceforge/jnlp/resources/MessagesPropertiesTest.java
--- a/tests/netx/unit/net/sourceforge/jnlp/resources/MessagesPropertiesTest.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/tests/netx/unit/net/sourceforge/jnlp/resources/MessagesPropertiesTest.java	Wed Nov 07 12:34:44 2018 +0100
@@ -58,6 +58,7 @@
         public static final LocalesIdentifier DE = new LocalesIdentifier("de");
         public static final LocalesIdentifier PL = new LocalesIdentifier("pl");
         //public static final LocalesIdentifier DE_DE = new LocalesIdentifier("DE","de");
+        public static final LocalesIdentifier RU = new LocalesIdentifier("ru");
         
         public static final String mainFileName = "Messages";
         public static final String pckg = "net.sourceforge.jnlp.resources";
@@ -146,7 +147,7 @@
         //get default by non existing language and country
         main = LocalesIdentifier.DEFAULT;
         assertNotNull(main);
-        secondary= new LocalesIdentifier[] {LocalesIdentifier.CZ, LocalesIdentifier.DE, LocalesIdentifier.PL};
+        secondary= new LocalesIdentifier[] {LocalesIdentifier.CZ, LocalesIdentifier.DE, LocalesIdentifier.PL, LocalesIdentifier.RU};
         assertNotNull(secondary);
         for (LocalesIdentifier secondary1 : secondary) {
             assertNotNull(secondary1);
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/netx/unit/net/sourceforge/jnlp/util/FileUtilsTest.java
--- a/tests/netx/unit/net/sourceforge/jnlp/util/FileUtilsTest.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/tests/netx/unit/net/sourceforge/jnlp/util/FileUtilsTest.java	Wed Nov 07 12:34:44 2018 +0100
@@ -37,6 +37,9 @@
 package net.sourceforge.jnlp.util;
 
 import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.attribute.AclEntry;
+import java.nio.file.attribute.AclFileAttributeView;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -130,4 +133,27 @@
         assertFalse(testChild.exists());
     }
 
+    @Test
+    public void testCreateRestrictedFile() throws Exception {
+        if (!JNLPRuntime.isWindows()) {
+            return;
+        }
+        final File tmpdir = new File(System.getProperty("java.io.tmpdir")), testfile = new File(tmpdir, "itw_test_create_restricted_file");
+        if (testfile.exists()) {
+            assertTrue(testfile.delete());
+        }
+        testfile.deleteOnExit();
+        FileUtils.createRestrictedFile(testfile, true);
+        boolean hasOwner = false;
+        AclFileAttributeView view = Files.getFileAttributeView(testfile.toPath(), AclFileAttributeView.class);
+        for (AclEntry ae : view.getAcl()) {
+            if (view.getOwner().getName().equals(ae.principal().getName())) {
+                assertFalse("Duplicate owner entry", hasOwner);
+                hasOwner = true;
+                assertEquals("Owner must have all perimissions",14, ae.permissions().size());
+            }
+        }
+        assertTrue("No owner entry", hasOwner);
+    }
+
 }
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/custom/JavaFx/resources/JavaFx.jar
Binary file tests/reproducers/custom/JavaFx/resources/JavaFx.jar has changed
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/custom/JavaFx/resources/JavaFx.jnlp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/custom/JavaFx/resources/JavaFx.jnlp	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" xmlns:jfx="http://javafx.com" >
+  <information>
+    <title>JavaFx</title>
+    <vendor>ITW</vendor>
+    <description>JavaFx</description>
+    <offline-allowed/>
+  </information>
+  <resources>
+    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
+    <jar href="JavaFx.jar" size="2102" download="eager" />
+  </resources>
+  <jfx:javafx-desc  width="600" height="400" main-class="Main"  name="JavaFXApp" />
+  <update check="background"/>
+</jnlp>
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/custom/JavaFx/srcs/Controller.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/custom/JavaFx/srcs/Controller.java	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,11 @@
+import javafx.fxml.FXML;
+import javafx.scene.text.Text;
+
+public class Controller {
+    @FXML private Text text;
+
+    @FXML
+    public void onPressButton() {
+        text.setVisible(true);
+    }
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/custom/JavaFx/srcs/Main.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/custom/JavaFx/srcs/Main.java	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,23 @@
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+public class Main extends Application {
+
+    @Override
+    public void start(Stage primaryStage) throws Exception {
+        Parent root = FXMLLoader.load(getClass().getResource("helloworld.fxml"));
+        primaryStage.setTitle("Hello World");
+        primaryStage.setScene(new Scene(root, 500, 200));
+        primaryStage.show();
+        System.out.println("jnlp-javafx started");
+        System.out.println("jnlp-javafx can be terminated");
+    }
+
+
+    public static void main(String[] args) {
+        launch(args);
+    }
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/custom/JavaFx/srcs/Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/custom/JavaFx/srcs/Makefile	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,25 @@
+TESTNAME=JavaFx
+
+JAVAC_CLASSPATH=$(TEST_EXTENSIONS_DIR):$(NETX_DIR)/lib/classes.jar
+JAVAC=$(EXPORTED_JAVAC)
+JAR=$(EXPORTED_JAR)
+JARSIGNER=$(EXPORTED_JARSIGNER)
+
+TMPDIR:=$(shell mktemp -d)
+
+prepare-reproducer:
+	echo PREPARING REPRODUCER $(TESTNAME)
+	#this test contains prebuild binary, as javafx, when installed on computer, preven ITW from building
+	#due to JSObject differennt implementation
+	#$(JAVAC) -d $(TMPDIR) -classpath $(JAVAC_CLASSPATH) Controller.java Main.java; \
+	#cp helloworld.fxml $(TMPDIR) ; \
+	#pushd $(TMPDIR); \
+	#$(JAR) cf $(TESTNAME).jar *.class *.fxml; \
+	#popd
+	#cp $(TMPDIR)/$(TESTNAME).jar $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR); \
+	cp ../resources/* $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR); \
+	rm -rf $(TMPDIR); \
+	echo PREPARED REPRODUCER $(TESTNAME); \
+
+clean-reproducer:
+	echo NOTHING TO CLEAN FOR $(TESTNAME)
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/custom/JavaFx/srcs/helloworld.fxml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/custom/JavaFx/srcs/helloworld.fxml	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.GridPane?>
+<?import javafx.scene.text.Text?>
+<?import javafx.scene.control.Button?>
+<GridPane fx:controller="Controller"
+          xmlns:fx="http://javafx.com/fxml"
+          alignment="CENTER">
+    <Text text="Hello"
+          GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.halignment="CENTER"/>
+    <Button fx:id="button" text="press if you're brave enough"
+            GridPane.columnIndex="0" GridPane.rowIndex="1" GridPane.halignment="CENTER"
+            onAction="#onPressButton"/>
+    <Text fx:id="text" text="BAF!" style="-fx-text-fill: red; -fx-font-size: 50; -fx-fill: red;"
+          GridPane.rowIndex="2" GridPane.columnIndex="0" GridPane.halignment="CENTER"
+          visible="false"/>
+</GridPane>
\ No newline at end of file
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/custom/JavaFx/testcases/JavaFxTest.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/custom/JavaFx/testcases/JavaFxTest.java	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,81 @@
+/* 
+Copyright (C) 2014 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+import java.util.Arrays;
+import net.sourceforge.jnlp.OptionsDefinitions;
+import org.junit.Assert;
+import org.junit.Test;
+
+import net.sourceforge.jnlp.ProcessResult;
+import net.sourceforge.jnlp.ServerAccess;
+import net.sourceforge.jnlp.annotations.NeedsDisplay;
+import net.sourceforge.jnlp.closinglisteners.StringBasedClosingListener;
+
+public class JavaFxTest {
+
+    private static final String correct = "jnlp-javafx started";
+    private static final String done = "jnlp-javafx can be terminated";
+    public static final ServerAccess server = new ServerAccess();
+
+    /*
+     * Randomly seeing:
+     * 
+(javaws:13906): Gdk-ERROR **: The program 'javaws' received an X Window System error.
+This probably reflects a bug in the program.
+The error was 'RenderBadPicture (invalid Picture parameter)'.
+  (Details: serial 7754 error_code 141 request_code 138 minor_code 7)
+  (Note to programmers: normally, X errors are reported asynchronously;
+   that is, you will receive the error a while after causing it.
+   To debug your program, run it with the --sync command line
+   option to change this behavior. You can then get a meaningful
+   backtrace from your debugger if you break on the gdk_x_error() function.)
+    
+     *  Suprsing is, that awt splasshcreen is visible, and after it also itw error dialogue is visible
+     */
+    @Test
+    @NeedsDisplay
+    public void testJavawsJNLP() throws Exception {
+        ProcessResult pr = server.executeJavaws(
+                Arrays.asList(new String[]{OptionsDefinitions.OPTIONS.NOSEC.option, OptionsDefinitions.OPTIONS.HEADLESS.option}),
+                "/JavaFx.jnlp",
+                new StringBasedClosingListener(done),
+                new StringBasedClosingListener("xceptionxception"));
+        System.out.println(pr.stdout);
+        System.out.println(pr.stderr);
+        Assert.assertTrue("stdout should contain " + correct + ", but it didnt.", pr.stdout.contains(correct));
+    }
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/signed/ShowDocument/resources/ShowDocumentApplet.jnlp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/signed/ShowDocument/resources/ShowDocumentApplet.jnlp	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,60 @@
+<!--
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version.
+
+-->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ShowDocumentApplet.jnlp">
+    <information>
+        <title>ShowDocumentApplet</title>
+        <vendor>IcedTea</vendor>
+        <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web "/>
+        <description>ShowDocumentApplet</description>
+        <offline/>
+    </information>
+    <resources>
+        <j2se version="1.4+"/>
+        <jar href="ShowDocument.jar"/>
+    </resources>
+    <security>
+      <all-permissions/>
+    </security>
+    <applet-desc
+      documentBase="."
+      name="ShowDocument"
+      main-class="ShowDocument"
+      width="100"
+      height="100">
+    </applet-desc>
+</jnlp>
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/signed/ShowDocument/resources/ShowDocumentMain.jnlp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/signed/ShowDocument/resources/ShowDocumentMain.jnlp	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,56 @@
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="1.0" href="ShowDocumentMain.jnlp" codebase=".">
+  <information>
+    <title>ShowDocumentMain</title>
+    <vendor>IcedTea</vendor>
+    <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/>
+    <description>ShowDocumentMain</description>
+    <offline/>
+  </information>
+  <resources>
+    <j2se version="1.4+"/>
+    <jar href="ShowDocument.jar"/>
+  </resources>
+  <security>
+    <all-permissions/>
+  </security>
+  <application-desc main-class="ShowDocument">
+  </application-desc>
+</jnlp>
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/signed/ShowDocument/resources/document.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/signed/ShowDocument/resources/document.txt	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,2 @@
+document appears!
+Good.
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/signed/ShowDocument/srcs/ShowDocument.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/signed/ShowDocument/srcs/ShowDocument.java	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,122 @@
+
+import java.applet.Applet;
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.jnlp.BasicService;
+import javax.jnlp.ServiceManager;
+import javax.jnlp.UnavailableServiceException;
+
+
+/* SimpleTest2.java
+Copyright (C) 2011 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version.
+ */
+public class ShowDocument extends Applet {
+
+    //this is the only reason why it is isgned
+    private static String url = System.getProperty("durl", "http://www-eng-x.llnl.gov/documents/a_document.txt");
+
+    private static class Killer extends Thread {
+
+        public static final int n = 2000;
+
+        @Override
+        public void run() {
+            try {
+                Thread.sleep(n);
+                System.out.println("Applet killing himself after " + n + " ms of life");
+                System.exit(0);
+            } catch (Exception ex) {
+            }
+        }
+    }
+    private Killer killer;
+
+    public static void main(String[] args) throws MalformedURLException, UnavailableServiceException {
+        // Lookup the javax.jnlp.BasicService object
+        BasicService bs = (BasicService) ServiceManager.lookup("javax.jnlp.BasicService");
+        // Invoke the showDocument method
+        bs.showDocument(new URL(url));
+    }
+
+    public void work1() {
+        try {
+            boolean ok = true;
+            this.getAppletContext().showDocument(new URL(url));
+            if (!ok) {
+                throw new RuntimeException("document should show");
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public void work2() {
+        try {
+            boolean ok = true;
+            this.getAppletContext().showDocument(new URL(url), "");
+            if (!ok) {
+                throw new RuntimeException("document should show");
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void init() {
+        System.out.println("applet was initialised");
+        killer = new Killer();
+    }
+
+    @Override
+    public void start() {
+        System.out.println("applet was started");
+        work1();
+        work2();
+        killer.start();
+    }
+
+    @Override
+    public void stop() {
+        System.out.println("applet was stopped");
+    }
+
+    @Override
+    public void destroy() {
+        System.out.println("applet will be destroyed");
+    }
+
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/signed/ShowDocument/testcases/ShowDocumentTest.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/reproducers/signed/ShowDocument/testcases/ShowDocumentTest.java	Wed Nov 07 12:34:44 2018 +0100
@@ -0,0 +1,76 @@
+/* ShowDocumentTest.java
+Copyright (C) 2011 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+import java.util.Arrays;
+import net.sourceforge.jnlp.OptionsDefinitions;
+import net.sourceforge.jnlp.ProcessResult;
+import net.sourceforge.jnlp.ProcessWrapper;
+import net.sourceforge.jnlp.ServerAccess;
+import net.sourceforge.jnlp.closinglisteners.StringBasedClosingListener;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ShowDocumentTest {
+
+    private static ServerAccess server = new ServerAccess();
+
+    @Test
+    public void testShowDocumentMain() throws Exception {
+        ProcessWrapper pw = new ProcessWrapper(server.getJavawsLocation(), Arrays.asList(
+                new String[]{OptionsDefinitions.OPTIONS.HEADLESS.option,
+                    "-J-Ddurl=http://localhost:" + server.getPort() + "/document.txt"}), server.getUrl("ShowDocumentMain.jnlp"));
+        pw.setWriter("curl\n");
+        pw.addStdOutListener(new StringBasedClosingListener("killer was started"));
+        ProcessResult pr = pw.execute();
+        Assert.assertFalse("stderr should NOT contains Exception but didn", pr.stderr.contains("Exception"));
+        Assert.assertTrue("stdout hsould read document but didn't", pr.stdout.contains("document appears!"));
+    }
+
+    @Test
+    public void testShowDocumentApplet() throws Exception {
+        ProcessWrapper pw = new ProcessWrapper(server.getJavawsLocation(), Arrays.asList(
+                new String[]{OptionsDefinitions.OPTIONS.HEADLESS.option,
+                    "-J-Ddurl=http://localhost:" + server.getPort() + "/document.txt"}), server.getUrl("ShowDocumentApplet.jnlp"));
+        pw.setWriter("curl\n");
+        pw.addStdOutListener(new StringBasedClosingListener("killer was started"));
+        ProcessResult pr = pw.execute();
+        Assert.assertFalse("stderr should NOT contains Exception but didn", pr.stderr.contains("Exception"));
+        Assert.assertTrue("stdout hsould read document but didn't", pr.stdout.contains("document appears!"));
+    }
+
+}
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/reproducers/simple/simpletest1/testcases/XDGspecificationTests.java
--- a/tests/reproducers/simple/simpletest1/testcases/XDGspecificationTests.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/tests/reproducers/simple/simpletest1/testcases/XDGspecificationTests.java	Wed Nov 07 12:34:44 2018 +0100
@@ -327,7 +327,7 @@
             ProcessWrapper pw1 = new ProcessWrapper();
             pw1.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath()
+                       server.getItwebSettingsFile().getAbsolutePath()
                     }));
             pw1.setVars(setXdgVAlues(tmp, tmp));
             ProcessResult pr1 = pw1.execute();
@@ -335,7 +335,7 @@
             ProcessWrapper pw2 = new ProcessWrapper();
             pw2.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath(),
+                       server.getItwebSettingsFile().getAbsolutePath(),
                         //one impl of new parser was unable to handle duplicates
                         "set", "oldBaf", "differentOldBaf"
                     }));
@@ -796,7 +796,7 @@
             ProcessWrapper pw = new ProcessWrapper();
             pw.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath()
+                       server.getItwebSettingsFile().getAbsolutePath()
                     }));
             pw.setVars(removeXdgVAlues());
             ProcessResult pr = pw.execute();
@@ -819,7 +819,7 @@
             ProcessWrapper pw = new ProcessWrapper();
             pw.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath()
+                       server.getItwebSettingsFile().getAbsolutePath()
                     }));
             pw.setVars(setXdgVAlues(f));
             ProcessResult pr = pw.execute();
@@ -846,7 +846,7 @@
             ProcessWrapper pw1 = new ProcessWrapper();
             pw1.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath()
+                       server.getItwebSettingsFile().getAbsolutePath()
                     }));
             pw1.setVars(removeXdgVAlues());
             ProcessResult pr1 = pw1.execute();
@@ -857,7 +857,7 @@
             ProcessWrapper pw2 = new ProcessWrapper();
             pw2.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath()
+                       server.getItwebSettingsFile().getAbsolutePath()
                     }));
             pw2.setVars(removeXdgVAlues());
             ProcessResult pr2 = pw2.execute();
@@ -882,7 +882,7 @@
             ProcessWrapper pw1 = new ProcessWrapper();
             pw1.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath()
+                       server.getItwebSettingsFile().getAbsolutePath()
                     }));
             pw1.setVars(setXdgVAlues(f));
             ProcessResult pr = pw1.execute();
@@ -892,7 +892,7 @@
             ProcessWrapper pw2 = new ProcessWrapper();
             pw2.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath()
+                       server.getItwebSettingsFile().getAbsolutePath()
                     }));
             pw2.setVars(removeXdgVAlues());
             ProcessResult pr2 = pw2.execute();
@@ -918,7 +918,7 @@
             ProcessWrapper pw = new ProcessWrapper();
             pw.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath(),
+                       server.getItwebSettingsFile().getAbsolutePath(),
                         //one impl of new parser was unable to handle duplicates
                         "set", "blah", "differentBlah"
                     }));
@@ -944,7 +944,7 @@
             ProcessWrapper pw = new ProcessWrapper();
             pw.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath(),
+                       server.getItwebSettingsFile().getAbsolutePath(),
                         //one impl of new parser was unable to handle duplicates
                         "set", "blah", "differentBlah"
                     }));
@@ -974,7 +974,7 @@
             ProcessWrapper pw1 = new ProcessWrapper();
             pw1.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath(),
+                       server.getItwebSettingsFile().getAbsolutePath(),
                         //one impl of new parser was unable to handle duplicates
                         "set", "blah", "differentBlah"
                     }));
@@ -988,7 +988,7 @@
             ProcessWrapper pw2 = new ProcessWrapper();
             pw2.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath(),
+                       server.getItwebSettingsFile().getAbsolutePath(),
                         //one impl of new parser was unable to handle duplicates
                         "set", "baf", "differentBaf"
                     }));
@@ -1016,7 +1016,7 @@
             ProcessWrapper pw1 = new ProcessWrapper();
             pw1.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath(),
+                       server.getItwebSettingsFile().getAbsolutePath(),
                         //one impl of new parser was unable to handle duplicates
                         "set", "blah", "differentBlah"
                     }));
@@ -1029,7 +1029,7 @@
             ProcessWrapper pw2 = new ProcessWrapper();
             pw2.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath(),
+                       server.getItwebSettingsFile().getAbsolutePath(),
                         //one impl of new parser was unable to handle duplicates
                         "set", "baf", "differentBaf"
                     }));
@@ -1197,7 +1197,7 @@
             ProcessWrapper pw = new ProcessWrapper();
             pw.setArgs(Arrays.asList(
                     new String[]{
-                        new File(server.getJavawsFile().getParentFile(), "itweb-settings").getAbsolutePath(),
+                       server.getItwebSettingsFile().getAbsolutePath(),
                         //one impl of new parser was unable to handle duplicates
                         "set", "blah", "blah"
                     }));
diff -r dbb8dc397d15 -r 057fabf9fdcb tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java
--- a/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java	Mon Dec 18 13:22:51 2017 +0100
+++ b/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java	Wed Nov 07 12:34:44 2018 +0100
@@ -325,6 +325,34 @@
     public File getJavawsFile() {
         return new File(System.getProperty(JAVAWS_BUILD_BIN));
     }
+    
+    /**
+     *
+     * @return - file pointing to itweb-settings deducted from passed inside
+     * javaws binary location (JAVAWS_BUILD_BIN)
+     */
+    public File getItwebSettingsFile() {
+        String itwebSettings = "itweb-settings";
+        return getFileInJavawsDir(itwebSettings);
+    }
+    
+        /**
+     *
+     * @return - file pointing to itweb-settings deducted from passed inside
+     * javaws binary location (JAVAWS_BUILD_BIN)
+     */
+    public File getIPolicyEditorFile() {
+        String policyeditor = "policyeditor";
+        return getFileInJavawsDir(policyeditor);
+    }
+
+    private File getFileInJavawsDir(String file) {
+        String javawsNameRoot = "javaws";
+        File dir = getJavawsFile().getParentFile();
+        String name = getJavawsFile().getName();
+        String nwName = name.replace(javawsNameRoot, file);
+        return new File(dir, nwName);
+    }
 
     /**
      *