Version in base suite: 21.0.9+10-1~deb13u1 Base version: openjdk-21_21.0.9+10-1~deb13u1 Target version: openjdk-21_21.0.10+7-1~deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/o/openjdk-21/openjdk-21_21.0.9+10-1~deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/o/openjdk-21/openjdk-21_21.0.10+7-1~deb13u1.dsc /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/empty.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_invalid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_null.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_valid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_wrongType.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_invalid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_null.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_valid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_wrongType.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_invalid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_null.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_valid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_wrongType.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_invalid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_null.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_valid.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_wrongType.ser |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/ValidateICCHeaderData/invalidSRGB.icc |binary /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/4287208/duke.gif |binary openjdk-21-21.0.10+7/.jcheck/conf | 2 openjdk-21-21.0.10+7/debian/JB-doc.overrides.in | 8 openjdk-21-21.0.10+7/debian/JB-jre-headless.overrides.in | 6 openjdk-21-21.0.10+7/debian/JB-jre-zero.overrides.in | 3 openjdk-21-21.0.10+7/debian/JB-jre.overrides.in | 4 openjdk-21-21.0.10+7/debian/changelog | 41 openjdk-21-21.0.10+7/debian/control | 14 openjdk-21-21.0.10+7/debian/patches/jdk-8369450-proposed.patch | 18 openjdk-21-21.0.10+7/debian/patches/series | 1 openjdk-21-21.0.10+7/debian/rules | 7 openjdk-21-21.0.10+7/debian/source/lintian-overrides | 4 openjdk-21-21.0.10+7/debian/tests/control | 4 openjdk-21-21.0.10+7/debian/tests/control.in | 4 openjdk-21-21.0.10+7/doc/building.html | 6 openjdk-21-21.0.10+7/doc/building.md | 6 openjdk-21-21.0.10+7/make/RunTests.gmk | 6 openjdk-21-21.0.10+7/make/autoconf/basic_tools.m4 | 2 openjdk-21-21.0.10+7/make/autoconf/boot-jdk.m4 | 3 openjdk-21-21.0.10+7/make/autoconf/configure.ac | 3 openjdk-21-21.0.10+7/make/autoconf/flags-cflags.m4 | 4 openjdk-21-21.0.10+7/make/autoconf/flags.m4 | 10 openjdk-21-21.0.10+7/make/autoconf/jdk-options.m4 | 25 openjdk-21-21.0.10+7/make/conf/jib-profiles.js | 6 openjdk-21-21.0.10+7/make/conf/version-numbers.conf | 6 openjdk-21-21.0.10+7/make/data/asan/asan_default_options.c | 2 openjdk-21-21.0.10+7/make/devkit/Tools.gmk | 23 openjdk-21-21.0.10+7/make/ide/netbeans/langtools/build.xml | 4 openjdk-21-21.0.10+7/make/langtools/tools/javacserver/shared/PortFile.java | 44 openjdk-21-21.0.10+7/make/modules/java.desktop/lib/Awt2dLibraries.gmk | 18 openjdk-21-21.0.10+7/src/hotspot/cpu/aarch64/aarch64.ad | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/aarch64/interp_masm_aarch64.cpp | 12 openjdk-21-21.0.10+7/src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp | 8 openjdk-21-21.0.10+7/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp | 17 openjdk-21-21.0.10+7/src/hotspot/cpu/ppc/interp_masm_ppc.hpp | 3 openjdk-21-21.0.10+7/src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp | 10 openjdk-21-21.0.10+7/src/hotspot/cpu/ppc/ppc.ad | 12 openjdk-21-21.0.10+7/src/hotspot/cpu/ppc/stubGenerator_ppc.cpp | 175 openjdk-21-21.0.10+7/src/hotspot/cpu/ppc/templateTable_ppc_64.cpp | 13 openjdk-21-21.0.10+7/src/hotspot/cpu/ppc/vm_version_ppc.cpp | 10 openjdk-21-21.0.10+7/src/hotspot/cpu/riscv/c2_MacroAssembler_riscv.cpp | 10 openjdk-21-21.0.10+7/src/hotspot/cpu/riscv/interp_masm_riscv.cpp | 9 openjdk-21-21.0.10+7/src/hotspot/cpu/riscv/interp_masm_riscv.hpp | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/riscv/javaFrameAnchor_riscv.hpp | 14 openjdk-21-21.0.10+7/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp | 6 openjdk-21-21.0.10+7/src/hotspot/cpu/riscv/templateTable_riscv.cpp | 15 openjdk-21-21.0.10+7/src/hotspot/cpu/s390/s390.ad | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/x86/macroAssembler_x86.cpp | 139 openjdk-21-21.0.10+7/src/hotspot/cpu/x86/macroAssembler_x86_32_exp.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/x86/macroAssembler_x86_32_log.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/x86/macroAssembler_x86_32_pow.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/x86/stubGenerator_x86_64_exp.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/x86/stubGenerator_x86_64_log.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/cpu/x86/stubGenerator_x86_64_pow.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/os/aix/os_aix.cpp | 28 openjdk-21-21.0.10+7/src/hotspot/os/aix/porting_aix.cpp | 5 openjdk-21-21.0.10+7/src/hotspot/os/aix/porting_aix.hpp | 2 openjdk-21-21.0.10+7/src/hotspot/os/linux/cgroupSubsystem_linux.cpp | 194 openjdk-21-21.0.10+7/src/hotspot/os/linux/cgroupSubsystem_linux.hpp | 3 openjdk-21-21.0.10+7/src/hotspot/os/linux/cgroupUtil_linux.cpp | 30 openjdk-21-21.0.10+7/src/hotspot/os/linux/cgroupV1Subsystem_linux.cpp | 77 openjdk-21-21.0.10+7/src/hotspot/os/linux/cgroupV2Subsystem_linux.cpp | 6 openjdk-21-21.0.10+7/src/hotspot/os/windows/os_windows.cpp | 23 openjdk-21-21.0.10+7/src/hotspot/os/windows/symbolengine.cpp | 4 openjdk-21-21.0.10+7/src/hotspot/share/c1/c1_Canonicalizer.hpp | 6 openjdk-21-21.0.10+7/src/hotspot/share/c1/c1_GraphBuilder.cpp | 28 openjdk-21-21.0.10+7/src/hotspot/share/c1/c1_LIRGenerator.cpp | 16 openjdk-21-21.0.10+7/src/hotspot/share/c1/c1_LinearScan.cpp | 16 openjdk-21-21.0.10+7/src/hotspot/share/c1/c1_ValueStack.cpp | 50 openjdk-21-21.0.10+7/src/hotspot/share/c1/c1_ValueStack.hpp | 33 openjdk-21-21.0.10+7/src/hotspot/share/cds/classListParser.cpp | 104 openjdk-21-21.0.10+7/src/hotspot/share/cds/classListParser.hpp | 14 openjdk-21-21.0.10+7/src/hotspot/share/cds/filemap.cpp | 34 openjdk-21-21.0.10+7/src/hotspot/share/cds/unregisteredClasses.cpp | 108 openjdk-21-21.0.10+7/src/hotspot/share/cds/unregisteredClasses.hpp | 15 openjdk-21-21.0.10+7/src/hotspot/share/classfile/systemDictionary.cpp | 10 openjdk-21-21.0.10+7/src/hotspot/share/classfile/systemDictionaryShared.cpp | 47 openjdk-21-21.0.10+7/src/hotspot/share/classfile/systemDictionaryShared.hpp | 1 openjdk-21-21.0.10+7/src/hotspot/share/classfile/verifier.cpp | 229 openjdk-21-21.0.10+7/src/hotspot/share/classfile/verifier.hpp | 13 openjdk-21-21.0.10+7/src/hotspot/share/classfile/vmClassMacros.hpp | 3 openjdk-21-21.0.10+7/src/hotspot/share/classfile/vmSymbols.hpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/code/debugInfo.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp | 27 openjdk-21-21.0.10+7/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadGroup.cpp | 418 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadGroup.hpp | 65 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadGroupManager.cpp | 332 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadGroupManager.hpp | 48 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp | 19 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.hpp | 7 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp | 4 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/jfrRecorder.cpp | 9 openjdk-21-21.0.10+7/src/hotspot/share/jfr/recorder/jfrRecorder.hpp | 1 openjdk-21-21.0.10+7/src/hotspot/share/jfr/support/jfrThreadLocal.cpp | 50 openjdk-21-21.0.10+7/src/hotspot/share/jfr/support/jfrThreadLocal.hpp | 4 openjdk-21-21.0.10+7/src/hotspot/share/memory/allocation.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/memory/guardedMemory.cpp | 9 openjdk-21-21.0.10+7/src/hotspot/share/memory/guardedMemory.hpp | 58 openjdk-21-21.0.10+7/src/hotspot/share/oops/fieldStreams.hpp | 4 openjdk-21-21.0.10+7/src/hotspot/share/oops/instanceKlass.cpp | 35 openjdk-21-21.0.10+7/src/hotspot/share/oops/instanceKlass.hpp | 1 openjdk-21-21.0.10+7/src/hotspot/share/prims/jni.cpp | 6 openjdk-21-21.0.10+7/src/hotspot/share/prims/jniCheck.cpp | 48 openjdk-21-21.0.10+7/src/hotspot/share/prims/jvm.cpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/prims/jvmtiAgentList.cpp | 14 openjdk-21-21.0.10+7/src/hotspot/share/prims/jvmtiAgentList.hpp | 13 openjdk-21-21.0.10+7/src/hotspot/share/prims/jvmtiRedefineClasses.cpp | 8 openjdk-21-21.0.10+7/src/hotspot/share/prims/whitebox.cpp | 16 openjdk-21-21.0.10+7/src/hotspot/share/prims/whitebox.hpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/runtime/abstract_vm_version.cpp | 12 openjdk-21-21.0.10+7/src/hotspot/share/runtime/fieldDescriptor.cpp | 5 openjdk-21-21.0.10+7/src/hotspot/share/runtime/fieldDescriptor.hpp | 4 openjdk-21-21.0.10+7/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp | 10 openjdk-21-21.0.10+7/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp | 3 openjdk-21-21.0.10+7/src/hotspot/share/runtime/globals.hpp | 4 openjdk-21-21.0.10+7/src/hotspot/share/runtime/javaThread.cpp | 3 openjdk-21-21.0.10+7/src/hotspot/share/runtime/objectMonitor.cpp | 9 openjdk-21-21.0.10+7/src/hotspot/share/runtime/objectMonitor.hpp | 28 openjdk-21-21.0.10+7/src/hotspot/share/runtime/perfData.cpp | 19 openjdk-21-21.0.10+7/src/hotspot/share/runtime/perfData.hpp | 17 openjdk-21-21.0.10+7/src/hotspot/share/runtime/reflectionUtils.hpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/runtime/synchronizer.cpp | 1 openjdk-21-21.0.10+7/src/hotspot/share/runtime/thread.cpp | 3 openjdk-21-21.0.10+7/src/hotspot/share/runtime/vmThread.cpp | 20 openjdk-21-21.0.10+7/src/hotspot/share/services/attachListener.cpp | 7 openjdk-21-21.0.10+7/src/hotspot/share/services/diagnosticCommand.cpp | 6 openjdk-21-21.0.10+7/src/hotspot/share/services/mallocHeader.inline.hpp | 2 openjdk-21-21.0.10+7/src/hotspot/share/utilities/vmError.cpp | 5 openjdk-21-21.0.10+7/src/java.base/linux/classes/jdk/internal/platform/cgroupv1/CgroupV1SubsystemController.java | 42 openjdk-21-21.0.10+7/src/java.base/share/classes/java/lang/AbstractStringBuilder.java | 20 openjdk-21-21.0.10+7/src/java.base/share/classes/java/lang/String.java | 110 openjdk-21-21.0.10+7/src/java.base/share/classes/java/lang/StringLatin1.java | 6 openjdk-21-21.0.10+7/src/java.base/share/classes/java/lang/StringUTF16.java | 295 openjdk-21-21.0.10+7/src/java.base/share/classes/java/lang/invoke/IndirectVarHandle.java | 2 openjdk-21-21.0.10+7/src/java.base/share/classes/java/lang/invoke/VarForm.java | 6 openjdk-21-21.0.10+7/src/java.base/share/classes/java/lang/invoke/VarHandle.java | 7 openjdk-21-21.0.10+7/src/java.base/share/classes/java/lang/invoke/VarHandleGuards.java | 2 openjdk-21-21.0.10+7/src/java.base/share/classes/java/net/InMemoryCookieStore.java | 18 openjdk-21-21.0.10+7/src/java.base/share/classes/java/net/URI.java | 23 openjdk-21-21.0.10+7/src/java.base/share/classes/java/text/Collator.java | 9 openjdk-21-21.0.10+7/src/java.base/share/classes/java/text/RuleBasedCollator.java | 11 openjdk-21-21.0.10+7/src/java.base/share/classes/java/util/Locale.java | 27 openjdk-21-21.0.10+7/src/java.base/share/classes/java/util/SimpleTimeZone.java | 27 openjdk-21-21.0.10+7/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArraySet.java | 41 openjdk-21-21.0.10+7/src/java.base/share/classes/java/util/concurrent/Executors.java | 7 openjdk-21-21.0.10+7/src/java.base/share/classes/jdk/internal/classfile/impl/verifier/VerifierImpl.java | 17 openjdk-21-21.0.10+7/src/java.base/share/classes/jdk/internal/misc/CDS.java | 120 openjdk-21-21.0.10+7/src/java.base/share/classes/jdk/internal/util/StaticProperty.java | 24 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/net/www/MessageHeader.java | 4 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/nio/ch/Net.java | 13 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/nio/ch/SocketChannelImpl.java | 42 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/security/pkcs10/PKCS10.java | 3 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/security/provider/certpath/URICertStore.java | 358 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/security/ssl/DTLSInputRecord.java | 9 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/security/ssl/SignatureScheme.java | 5 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/util/calendar/ZoneInfo.java | 10 openjdk-21-21.0.10+7/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java | 33 openjdk-21-21.0.10+7/src/java.base/share/conf/security/java.security | 48 openjdk-21-21.0.10+7/src/java.base/unix/native/libjava/ProcessImpl_md.c | 80 openjdk-21-21.0.10+7/src/java.base/unix/native/libjava/TimeZone_md.c | 32 openjdk-21-21.0.10+7/src/java.base/unix/native/libnio/ch/Net.c | 5 openjdk-21-21.0.10+7/src/java.base/windows/native/include/jni_md.h | 7 openjdk-21-21.0.10+7/src/java.base/windows/native/libnio/ch/Net.c | 7 openjdk-21-21.0.10+7/src/java.desktop/macosx/classes/com/apple/laf/AquaFileChooserUI.java | 6 openjdk-21-21.0.10+7/src/java.desktop/macosx/classes/com/apple/laf/AquaKeyBindings.java | 3 openjdk-21-21.0.10+7/src/java.desktop/macosx/classes/sun/lwawt/macosx/CDesktopPeer.java | 57 openjdk-21-21.0.10+7/src/java.desktop/macosx/native/libawt_lwawt/awt/CDesktopPeer.m | 126 openjdk-21-21.0.10+7/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_Ports.cpp | 83 openjdk-21-21.0.10+7/src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java | 9 openjdk-21-21.0.10+7/src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/MarkerSegment.java | 5 openjdk-21-21.0.10+7/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java | 6 openjdk-21-21.0.10+7/src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/MotifFileChooserUI.java | 6 openjdk-21-21.0.10+7/src/java.desktop/share/classes/com/sun/media/sound/AudioFileSoundbankReader.java | 9 openjdk-21-21.0.10+7/src/java.desktop/share/classes/java/awt/color/ICC_ColorSpace.java | 5 openjdk-21-21.0.10+7/src/java.desktop/share/classes/java/awt/color/ICC_Profile.java | 106 openjdk-21-21.0.10+7/src/java.desktop/share/classes/javax/swing/JFileChooser.java | 1 openjdk-21-21.0.10+7/src/java.desktop/share/classes/javax/swing/JViewport.java | 2 openjdk-21-21.0.10+7/src/java.desktop/share/classes/javax/swing/border/LineBorder.java | 6 openjdk-21-21.0.10+7/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java | 107 openjdk-21-21.0.10+7/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPasswordFieldUI.java | 21 openjdk-21-21.0.10+7/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTextUI.java | 18 openjdk-21-21.0.10+7/src/java.desktop/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java | 2 openjdk-21-21.0.10+7/src/java.desktop/share/classes/javax/swing/plaf/synth/SynthPasswordFieldUI.java | 17 openjdk-21-21.0.10+7/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java | 6 openjdk-21-21.0.10+7/src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java | 48 openjdk-21-21.0.10+7/src/java.desktop/share/classes/sun/java2d/pipe/SpanClipRenderer.java | 8 openjdk-21-21.0.10+7/src/java.desktop/share/classes/sun/print/PathGraphics.java | 18 openjdk-21-21.0.10+7/src/java.desktop/share/classes/sun/swing/FilePane.java | 4 openjdk-21-21.0.10+7/src/java.desktop/share/classes/sun/swing/SwingUtilities2.java | 2 openjdk-21-21.0.10+7/src/java.desktop/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java | 2 openjdk-21-21.0.10+7/src/java.desktop/share/legal/libpng.md | 12 openjdk-21-21.0.10+7/src/java.desktop/share/native/common/java2d/opengl/OGLContext.c | 1 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_Fp.c | 9 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_ext.c | 6 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16ext.c | 23 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16nw.c | 7 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_32nw.c | 7 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8ext.c | 23 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8nw.c | 7 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16ext.c | 23 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16nw.c | 7 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_Bit.c | 12 openjdk-21-21.0.10+7/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c | 11 openjdk-21-21.0.10+7/src/java.desktop/share/native/libsplashscreen/splashscreen_gif.c | 6 openjdk-21-21.0.10+7/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java | 6 openjdk-21-21.0.10+7/src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java | 2 openjdk-21-21.0.10+7/src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsIconFactory.java | 28 openjdk-21-21.0.10+7/src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java | 60 openjdk-21-21.0.10+7/src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsMenuItemUI.java | 20 openjdk-21-21.0.10+7/src/java.desktop/windows/classes/sun/awt/windows/ThemeReader.java | 19 openjdk-21-21.0.10+7/src/java.desktop/windows/classes/sun/awt/windows/WDesktopPeer.java | 53 openjdk-21-21.0.10+7/src/java.desktop/windows/classes/sun/awt/windows/WInputMethod.java | 6 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/java2d/d3d/D3DGlyphCache.cpp | 2 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/java2d/windows/GDIRenderer.cpp | 8 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/java2d/windows/GDIWindowSurfaceData.cpp | 4 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp | 8 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_Canvas.cpp | 22 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp | 64 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_Desktop.cpp | 49 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_DnDDS.cpp | 10 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_DnDDT.cpp | 4 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_Frame.cpp | 74 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_Menu.h | 4 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_MenuBar.cpp | 4 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_MenuBar.h | 4 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_PrintDialog.h | 8 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp | 165 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_TextComponent.cpp | 10 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_Window.cpp | 149 openjdk-21-21.0.10+7/src/java.desktop/windows/native/libawt/windows/awt_new.cpp | 11 openjdk-21-21.0.10+7/src/java.rmi/share/classes/javax/rmi/ssl/SslRMIClientSocketFactory.java | 13 openjdk-21-21.0.10+7/src/java.security.jgss/windows/native/libsspi_bridge/sspi.cpp | 15 openjdk-21-21.0.10+7/src/java.security.jgss/windows/native/libw2k_lsa_auth/NativeCreds.c | 1 openjdk-21-21.0.10+7/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegularExpression.java | 40 openjdk-21-21.0.10+7/src/jdk.accessibility/windows/native/jaccesswalker/jaccesswalker.cpp | 2 openjdk-21-21.0.10+7/src/jdk.accessibility/windows/native/libjavaaccessbridge/AccessBridgeJavaEntryPoints.cpp | 8 openjdk-21-21.0.10+7/src/jdk.accessibility/windows/native/toolscommon/AccessInfo.cpp | 4 openjdk-21-21.0.10+7/src/jdk.attach/share/classes/sun/tools/attach/HotSpotVirtualMachine.java | 45 openjdk-21-21.0.10+7/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Type.java | 2 openjdk-21-21.0.10+7/src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java | 6 openjdk-21-21.0.10+7/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c | 3 openjdk-21-21.0.10+7/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_crypt.c | 38 openjdk-21-21.0.10+7/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_keymgmt.c | 103 openjdk-21-21.0.10+7/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c | 10 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Headers.java | 37 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/sun/net/httpserver/ChunkedOutputStream.java | 6 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/sun/net/httpserver/Event.java | 33 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/sun/net/httpserver/ExchangeImpl.java | 19 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/sun/net/httpserver/FixedLengthOutputStream.java | 8 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/sun/net/httpserver/ServerImpl.java | 157 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/sun/net/httpserver/UndefLengthOutputStream.java | 8 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/sun/net/httpserver/Utils.java | 33 openjdk-21-21.0.10+7/src/jdk.httpserver/share/classes/sun/net/httpserver/WriteFinishedEvent.java | 34 openjdk-21-21.0.10+7/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Main.java | 148 openjdk-21-21.0.10+7/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources.java | 28 openjdk-21-21.0.10+7/src/jdk.jartool/share/man/jarsigner.1 | 5 openjdk-21-21.0.10+7/src/jdk.jdi/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java | 1 openjdk-21-21.0.10+7/src/jdk.jfr/share/classes/jdk/jfr/internal/SettingsManager.java | 2 openjdk-21-21.0.10+7/src/jdk.jfr/share/conf/jfr/default.jfc | 6 openjdk-21-21.0.10+7/src/jdk.jpackage/windows/native/applauncher/WinLauncher.cpp | 25 openjdk-21-21.0.10+7/src/jdk.jpackage/windows/native/common/Executor.cpp | 6 openjdk-21-21.0.10+7/src/jdk.jpackage/windows/native/common/Executor.h | 13 openjdk-21-21.0.10+7/src/jdk.management/linux/native/libmanagement_ext/UnixOperatingSystem.c | 4 openjdk-21-21.0.10+7/src/jdk.management/windows/native/libmanagement_ext/OperatingSystemImpl.c | 10 openjdk-21-21.0.10+7/test/hotspot/gtest/memory/test_guardedMemory.cpp | 17 openjdk-21-21.0.10+7/test/hotspot/gtest/nmt/test_nmt_buffer_overflow_detection.cpp | 2 openjdk-21-21.0.10+7/test/hotspot/gtest/runtime/test_arguments.cpp | 5 openjdk-21-21.0.10+7/test/hotspot/gtest/runtime/test_cgroupSubsystem_linux.cpp | 83 openjdk-21-21.0.10+7/test/hotspot/gtest/runtime/test_os.cpp | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/ProblemList-Virtual.txt | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/ProblemList.txt | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/TEST.ROOT | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/arraycopy/TestIllegalArrayCopyBeforeInfiniteLoop.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/arraycopy/TestNegArrayLengthAsIndex1.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/arraycopy/TestNegArrayLengthAsIndex2.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/arraycopy/TestNegativeArrayCopyAfterLoop.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c1/TestRangeCheckEliminated.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/Test7046096.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/Test7179138_2.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/TestBit.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/TestDuplicateSimpleLoopBackedge.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/cr6865031/Test.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/cr7200264/TestDriver.java | 69 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/cr7200264/TestIntVect.java | 1476 - openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/cr7200264/TestSSE2IntVect.java | 50 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/cr7200264/TestSSE4IntVect.java | 43 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/c2/irTests/TestAutoVectorization2DArray.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/compilercontrol/TestConflictInlineCommands.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/debug/TraceIterativeGVN.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/exceptions/TestDeoptExceptionState.java | 68 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/intrinsics/math/TestPow0Dot5Opt.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/intrinsics/math/TestPow2Opt.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/intrinsics/sha/cli/TestUseSHA3IntrinsicsOptionOnSupportedCPU.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/intrinsics/sha/cli/TestUseSHA3IntrinsicsOptionOnUnsupportedCPU.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/intrinsics/string/TestStringConstructionIntrinsics.java | 253 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/jvmci/errors/TestInvalidTieredStopAtLevel.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/lib/compile_framework/Compile.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/lib/ir_framework/driver/TestVMProcess.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/loopopts/TestLoopEndNodeEliminate.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/loopopts/TestLoopPredicateDep.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/loopopts/TestSkeletonPredicateNegation.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/oracle/TestInvalidCompileCommand.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/patches/java.base/java/lang/Helper.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/print/TestTraceOptoParse.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/regalloc/TestGCMRecalcPressureNodes.java | 3 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/unsafe/TestMisalignedUnsafeAccess.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/vectorapi/TestIntrinsicBailOut.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/vectorapi/TestVectorErgonomics.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/compiler/vectorapi/VectorReinterpretTest.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java | 238 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/DockerBasicTest.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/ShareTmpDir.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestCPUAwareness.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestCPUSets.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestContainerInfo.java | 3 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestJFREvents.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestJFRNetworkEvents.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestJFRWithJMX.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestJcmd.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestJcmdWithSideCar.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestLimitsUpdating.java | 3 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestMemoryWithCgroupV1.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestMemoryWithSubgroups.java | 144 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestMisc.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/containers/docker/TestPids.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/gc/TestObjectAlignmentCardSize.java | 3 openjdk-21-21.0.10+7/test/hotspot/jtreg/gc/g1/plab/TestPLABEvacuationFailure.java | 1 openjdk-21-21.0.10+7/test/hotspot/jtreg/gc/g1/plab/lib/PLABUtils.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/gc/shenandoah/compiler/TestLinkToNativeRBP.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/gtest/GTestWrapper.java | 3 openjdk-21-21.0.10+7/test/hotspot/jtreg/gtest/MetaspaceUtilsGtests.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/6294277/SourceDebugExtension.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/CompressedOops/UseCompressedOops.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/ErrorHandling/CreateCoredumpOnCrash.java | 1 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/Thread/TooSmallStackSize.java | 1 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/FillerObjectLoadTest.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/WrongClasspath.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatE.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/customLoader/DifferentSourcesTest.java | 79 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/customLoader/RegUnregSuperTest.java | 88 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee5.java | 28 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee5Child.java | 28 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/DifferentSourcesApp.java | 41 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/RegUnregSuperApp.java | 108 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MainModuleOnly.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/WrongTopClasspath.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/MainModuleOnly.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/jni/checked/TestCharArrayReleasing.java | 131 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/jni/checked/libCharArrayReleasing.c | 125 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/jni/terminatedThread/TestTerminatedThread.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/signal/SigTestDriver.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/runtime/signal/TestSigusr2.java | 35 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/AsyncGetCallTrace/MyPackage/ASGCTBaseTest.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/jvmti/VMEvent/libVMEventTest.c | 42 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/jvmti/thread/GetCurrentContendedMonitor/contmon01/contmon01.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/GarbageProducerTest.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/GcNewTest.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/GcTest01.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/GcTest02.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/utils/JstatGcCapacityTool.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/utils/JstatGcCauseTool.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/utils/JstatGcNewTool.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/utils/JstatGcTool.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/utils/JstatResults.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/serviceability/tmtools/jstat/utils/JstatTool.java | 59 openjdk-21-21.0.10+7/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/Automatic.java | 68 openjdk-21-21.0.10+7/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/ByteCodeGenerator.java | 26 openjdk-21-21.0.10+7/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/IRTreeGenerator.java | 97 openjdk-21-21.0.10+7/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/JavaCodeGenerator.java | 23 openjdk-21-21.0.10+7/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/ProductionParams.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/TestsGenerator.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/testlibrary/jittester/src/jdk/test/lib/jittester/utils/OptionResolver.java | 22 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/gc/gctests/AllocateWithoutOomTest/AllocateWithoutOomTest.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AccessWatchpointEvent/_itself_/awevent001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AccessWatchpointEvent/_itself_/awevent001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPackagePrivate/accipp002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPrivate/isPrivate001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPrivate/isPrivate001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPrivate/isprivate002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPrivate/isprivate002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isProtected/isProtected001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isProtected/isProtected001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isProtected/isprotected002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isProtected/isprotected002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPublic/isPublic001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPublic/isPublic001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPublic/ispublic002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPublic/ispublic002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPublic/ispublic003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/isPublic/ispublic003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/modifiers/modifiers001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/modifiers/modifiers001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/modifiers/modifiers002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Accessible/modifiers/modifiers002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/description/description001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/description/description001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/isValid/isvalid005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/label/label001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/label/label001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/mustSpecify/mustspecify001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/mustSpecify/mustspecify001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/name/name001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/setValue/setvalue001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/setValue/setvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/setValue/setvalue002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/setValue/setvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/value/value001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/value/value002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/value/value002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/value/value003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Argument/value/value004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValue/getvalue001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValue/getvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValue/getvalue002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValue/getvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValue/getvalue003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValue/getvalue003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues/getvalues001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues/getvalues001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues/getvalues002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues/getvalues002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues/getvalues003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues/getvalues003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/getValues_ii/getvaluesii005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/length/length001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/length/length001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValue/setvalue001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValue/setvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValue/setvalue002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValue/setvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValue/setvalue003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValue/setvalue003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_ilii/setvaluesilii005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_l/setvaluesl001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_l/setvaluesl001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_l/setvaluesl002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_l/setvaluesl002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_l/setvaluesl003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/setValues_l/setvaluesl003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentSignature/componentsignature001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentSignature/componentsignature001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentSignature/componentsignature002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentSignature/componentsignature002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentType/componenttype001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentType/componenttype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentTypeName/componenttypename001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentTypeName/componenttypename001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentTypeName/componenttypename002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/componentTypeName/componenttypename002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance004.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayType/newInstance/newinstance004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach002/TestDescription.java | 2 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach004/TestDriver.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach004/attach004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attachnosuspend/attachnosuspend001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc01x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc01x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc01x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc01x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc02x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc02x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc02x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc02x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc03x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc03x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc04x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc04x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc04x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc04x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc05x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc05x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc05x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc05x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc06x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc06x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc07x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc07x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc08x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc08x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc09x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc09x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc09x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc09x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc10x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc10x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc10x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/hotswap/tc10x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc01x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc01x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc03x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc03x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc04x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc04x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc01x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc01x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc01x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc01x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc02x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc02x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc03x003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc04x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc04x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc05x001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/singlethrd/tc05x001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/booleanValue/booleanvalue001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/booleanValue/booleanvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/booleanValue/booleanvalue002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/booleanValue/booleanvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/isValid/isvalid001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/isValid/isvalid001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/isValid/isvalid002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/isValid/isvalid002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/setValue/setvalue001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/setValue/setvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/setValue/setvalue002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/setValue/setvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/stringValueOf/stringvalueof001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/stringValueOf/stringvalueof001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/stringValueOf/stringvalueof002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanArgument/stringValueOf/stringvalueof002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanType/_itself_/booleantype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanType/_itself_/booleantype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanValue/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanValue/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanValue/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanValue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanValue/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanValue/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointEvent/_itself_/breakpoint001.java | 20 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointEvent/_itself_/breakpoint001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointEvent/_itself_/breakpoint001a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointEvent/_itself_/breakpoint002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointEvent/_itself_/breakpoint002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/_bounds_/filters001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/_bounds_/filters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/location/location001.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/location/location001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteType/_itself_/bytetype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteType/_itself_/bytetype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/compareTo/compareto001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/compareTo/compareto001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteValue/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharType/_itself_/chartype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharType/_itself_/chartype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/compareTo/compareto001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/compareTo/compareto001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/CharValue/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/visibleClasses/visibleclasses001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/visibleClasses/visibleclasses001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/visibleClasses/visibleclasses002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/visibleClasses/visibleclasses002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassObjectReference/reflectedType/reflectype001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassObjectReference/reflectedType/reflectype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassObjectReference/reflectedType/reflectype002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassObjectReference/reflectedType/reflectype002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassObjectReference/toString/tostring001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassObjectReference/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareEvent/referenceType/refType001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareEvent/referenceType/refType001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareEvent/thread/thread001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareEvent/thread/thread001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/_bounds_/filters001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/_bounds_/filters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassExclusionFilter/filter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassExclusionFilter/filter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassExclusionFilter/filter002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassExclusionFilter/filter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassExclusionFilter/filter003.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassExclusionFilter/filter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_rt/filter_rt001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_rt/filter_rt001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_rt/filter_rt002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_rt/filter_rt002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_rt/filter_rt003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_rt/filter_rt003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_s/filter_s001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_s/filter_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_s/filter_s002.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_s/filter_s002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addSourceNameFilter/addSourceNameFilter001/addSourceNameFilter001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addSourceNameFilter/addSourceNameFilter002/addSourceNameFilter002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/allInterfaces/allinterfaces001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/allInterfaces/allinterfaces001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/allInterfaces/allinterfaces002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/allInterfaces/allinterfaces002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/concreteMethodByName/method001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/concreteMethodByName/method001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/concreteMethodByName/method002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/concreteMethodByName/method002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/interfaces/interfaces001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/interfaces/interfaces001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/interfaces/interfaces002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/interfaces/interfaces002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod001a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod007.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod007a.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod009.java | 30 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod009t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod010.java | 46 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod010/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod010t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod011.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod011/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod012.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod012/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod013.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod013/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod014.java | 28 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod014/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod014t.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod015.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod015/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/isEnum/isenum001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/isEnum/isenum001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance001.java | 26 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance001a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance002.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance002a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance007.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance007a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance009.java | 51 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance009t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue004.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue005.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue007.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/subclasses/subclasses001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/subclasses/subclasses001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/subclasses/subclasses002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/subclasses/subclasses002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/superclass/superclass001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/superclass/superclass001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/superclass/superclass002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/superclass/superclass002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadEvent/className/classname001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadEvent/className/classname001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadEvent/classSignature/signature001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadEvent/classSignature/signature001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadRequest/_bounds_/filters001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadRequest/_bounds_/filters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadRequest/addClassExclusionFilter/exclfilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadRequest/addClassExclusionFilter/exclfilter002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadRequest/addClassExclusionFilter/exclfilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadRequest/addClassFilter/filter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadRequest/addClassFilter/filter002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassUnloadRequest/addClassFilter/filter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/_bounds_/bounds001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/_bounds_/bounds001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/defaultArguments/defaultArguments003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/description/description001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/description/description001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/name/name001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/toString/tostring001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/transport/transport001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Connector/transport/transport001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ConstantField/values001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ConstantField/values001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleType/_itself_/doubletype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleType/_itself_/doubletype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/compareTo/compareto001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/compareTo/compareto001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleValue/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/_itself_/event001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/_itself_/event001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/_itself_/event002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/_itself_/event002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/equals/equals001.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/equals/equals001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/hashCode/hashcode001.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/hashCode/hashcode001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/request/request001.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/request/request001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventIterator/nextEvent/nextevent001.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventIterator/nextEvent/nextevent001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/hashCode/hashcode001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove004.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l004.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/_bounds_/eventrequest001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/_bounds_/eventrequest001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/addCountFilter/addcountfilter001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/addCountFilter/addcountfilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/disable/disable001.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/disable/disable001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/disable/disable002.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/disable/disable002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/disable/disable003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/disable/disable003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/enable/enable001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/enable/enable001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/enable/enable002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/enable/enable002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/getProperty/getproperty001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/getProperty/getproperty001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/hashCode/hashcode001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/isEnabled/isenabled001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/isEnabled/isenabled001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/putProperty/putproperty001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/putProperty/putproperty001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setSuspendPolicy/setsuspendpolicy001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setSuspendPolicy/setsuspendpolicy001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/suspendPolicy/suspendpolicy001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/suspendPolicy/suspendpolicy001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/_bounds_/requests001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/_bounds_/requests001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/accessWatchpointRequests/accwtchpreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/accessWatchpointRequests/accwtchpreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/accessWatchpointRequests/accwtchpreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/accessWatchpointRequests/accwtchpreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/breakpointRequests/breakpreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/breakpointRequests/breakpreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/breakpointRequests/breakpreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/breakpointRequests/breakpreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classPrepareRequests/clsprepreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classPrepareRequests/clsprepreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classPrepareRequests/clsprepreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classPrepareRequests/clsprepreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classUnloadRequests/clsunlreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classUnloadRequests/clsunlreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classUnloadRequests/clsunlreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classUnloadRequests/clsunlreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createAccessWatchpointRequest/craccwtchpreq002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createAccessWatchpointRequest/craccwtchpreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createAccessWatchpointRequest/craccwtchpreq003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createAccessWatchpointRequest/craccwtchpreq003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createBreakpointRequest/crbreakpreq002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createBreakpointRequest/crbreakpreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createBreakpointRequest/crbreakpreq003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createBreakpointRequest/crbreakpreq003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createClassPrepareRequest/cpreg001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createClassPrepareRequest/cpreg001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createClassUnloadRequest/cureg001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createClassUnloadRequest/cureg001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createExceptionRequest/crexreq009.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createExceptionRequest/crexreq009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createExceptionRequest/crexreq010.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createExceptionRequest/crexreq010/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createMethodEntryRequest/menreg001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createMethodEntryRequest/menreg001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createMethodExitRequest/mexreg001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createMethodExitRequest/mexreg001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createModificationWatchpointRequest/crmodwtchpreq002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createModificationWatchpointRequest/crmodwtchpreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createModificationWatchpointRequest/crmodwtchpreq003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createModificationWatchpointRequest/crmodwtchpreq003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq001.java | 51 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq001t.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq003.java | 21 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq003a.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq004.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq004a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq007.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq009.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq010.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq010/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createThreadDeathRequest/tdreg001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createThreadDeathRequest/tdreg001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createThreadStartRequest/tsreg001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createThreadStartRequest/tsreg001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createVMDeathRequest/vmdreg001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createVMDeathRequest/vmdreg001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteAllBreakpoints/delallbreakp002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteAllBreakpoints/delallbreakp002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequest/delevtreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequest/delevtreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequest/delevtreq003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequest/delevtreq003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequests/delevtreqs002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequests/delevtreqs002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/exceptionRequests/excreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/exceptionRequests/excreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/exceptionRequests/excreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/exceptionRequests/excreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/hashCode/hashcode001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodEntryRequests/methentreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodEntryRequests/methentreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodEntryRequests/methentreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodEntryRequests/methentreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodExitRequests/methexitreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodExitRequests/methexitreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodExitRequests/methexitreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodExitRequests/methexitreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/modificationWatchpointRequests/modwtchpreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/modificationWatchpointRequests/modwtchpreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/modificationWatchpointRequests/modwtchpreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/modificationWatchpointRequests/modwtchpreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/stepRequests/stepreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/stepRequests/stepreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/stepRequests/stepreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/stepRequests/stepreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadDeathRequests/thrdeathreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadDeathRequests/thrdeathreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadDeathRequests/thrdeathreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadDeathRequests/thrdeathreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadStartRequests/thrstartreq001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadStartRequests/thrstartreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadStartRequests/thrstartreq002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadStartRequests/thrstartreq002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/vmDeathRequests/vmdeathreq001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/vmDeathRequests/vmdeathreq001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator001.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator003.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator004.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume002.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume004.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume005.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume006.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume007.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume009.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume010.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume010/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume011.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume011/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume012.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume012/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume013.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume013/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy001.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy004.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy005.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy006.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy007.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy008.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy009.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy010.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy010/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy011.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy011/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy012.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy012/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy013.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy013/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy014.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy014/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy015.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy015/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy016.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy016/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy017.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy017/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy018.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy018/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/toString/tostring001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/virtualMachine/virtualmachine001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/virtualMachine/virtualmachine001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent007.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/_itself_/exevent008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/catchLocation/location001.java | 20 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/catchLocation/location001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/catchLocation/location001a.java | 21 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/catchLocation/location002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/catchLocation/location002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/exception/exception001.java | 27 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/exception/exception001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionEvent/exception/exception001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/_bounds_/filters001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/_bounds_/filters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassExclusionFilter/filter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassExclusionFilter/filter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassExclusionFilter/filter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassExclusionFilter/filter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_rt/filter_rt001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_rt/filter_rt001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_rt/filter_rt002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_rt/filter_rt002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_rt/filter_rt003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_rt/filter_rt003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_s/filter_s001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_s/filter_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_s/filter_s002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_s/filter_s002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/exception/exception001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/exception/exception001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/notifyCaught/notifycaught001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/notifyCaught/notifycaught001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/notifyUncaught/notifyuncaught001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/notifyUncaught/notifyuncaught001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/equals/equals001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/equals/equals003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/equals/equals003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/equals/equals005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/equals/equals005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/hashCode/hashcode001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/isEnumConstant/isenumconstant001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/isEnumConstant/isenumconstant001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/isTransient/istrans001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/isTransient/istrans001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/isVolatile/isvol001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/isVolatile/isvol001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/type/type001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/type/type001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/type/type002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/type/type002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/type/type003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/type/type003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/type/type004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/type/type004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/typeName/typename001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/typeName/typename001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/typeName/typename002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Field/typeName/typename002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatType/_itself_/floattype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatType/_itself_/floattype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/compareTo/compareto001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/compareTo/compareto001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatValue/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/HiddenClass/events/events001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/intValue/intvalue001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/intValue/intvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/intValue/intvalue002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/intValue/intvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/isValid/isvalid003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/max/max001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/max/max001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/min/min001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/min/min001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/setValue/setvalue001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/setValue/setvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/stringValueOf/stringvalueof001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerArgument/stringValueOf/stringvalueof001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerType/_itself_/integertype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerType/_itself_/integertype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/compareTo/compareto001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/compareTo/compareto001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerValue/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/InterfaceType/implementors/implementors001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/InterfaceType/implementors/implementors001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/InterfaceType/subinterfaces/subinterfaces001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/InterfaceType/subinterfaces/subinterfaces001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/InterfaceType/superinterfaces/superinterfaces001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/InterfaceType/superinterfaces/superinterfaces001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LaunchingConnector/launch/launch001.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LaunchingConnector/launch/launch002.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LaunchingConnector/launch/launch003.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LaunchingConnector/launch/launch004.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LaunchingConnector/launchnosuspend/launchnosuspend001.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/accept/accept001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/accept/accept002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/listennosuspend/listennosuspend001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/startListening/startlis001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/startListening/startlis002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/stopListening/stoplis001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/stopListening/stoplis001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/stopListening/stoplis002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/stopListening/stoplis002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/supportsMultipleConnections/supportsmultipleconnections001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ListeningConnector/supportsMultipleConnections/supportsmultipleconnections001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/genericSignature/gensignature001.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/genericSignature/gensignature001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/isArgument/isargument001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/isArgument/isargument001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/isVisible/isvisible001.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/isVisible/isvisible001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/isVisible/isvisible001a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/name/name001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/signature/signature001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/signature/signature001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/toString/tostring001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/type/type001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/type/type001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/type/type002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/type/type002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/typeName/typename001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/typeName/typename001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/typeName/typename002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/typeName/typename002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location004.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location004a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location005.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location005a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location006.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocatableEvent/thread/thread001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocatableEvent/thread/thread001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/codeIndex/codeindex001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/codeIndex/codeindex001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/declaringType/declaringtype001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/declaringType/declaringtype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber/linenumber001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber/linenumber001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber_s/lineNumber_s002/lineNumber_s002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber_s/linenumber_s001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber_s/linenumber_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/method/method001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/method/method001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName/sourcename001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName/sourcename001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName_s/sourceName_s002/sourceName_s002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName_s/sourcename_s001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName_s/sourcename_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath/sourcepath001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath/sourcepath001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath_s/sourcePath_s002/sourcePath_s002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath_s/sourcepath_s001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath_s/sourcepath_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongType/_itself_/longtype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongType/_itself_/longtype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/compareTo/compareto001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/compareTo/compareto001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/LongValue/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/_bounds_/bounds001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/_bounds_/bounds001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations/alllinelocations001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations/alllinelocations001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations/alllinelocations002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations/alllinelocations002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations_ss/allLineLocations_ss002/allLineLocations_ss002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations_ss/allLineLocations_ss003/allLineLocations_ss003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations_ss/alllinelocations_ss001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations_ss/alllinelocations_ss001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypeNames/argumenttypenames001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypeNames/argumenttypenames001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypeNames/argumenttypenames002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypeNames/argumenttypenames002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypeNames/argumenttypenames003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypeNames/argumenttypenames003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypes/argumenttypes001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypes/argumenttypes001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypes/argumenttypes002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/argumentTypes/argumenttypes002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/arguments/arguments001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/arguments/arguments001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/arguments/arguments002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/arguments/arguments002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/arguments/arguments003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/arguments/arguments003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/bytecodes/bytecodes001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/bytecodes/bytecodes001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isAbstract/isabstract001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isAbstract/isabstract001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isBridge/isbridge001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isBridge/isbridge001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isConstructor/isconstructor001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isConstructor/isconstructor001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isNative/isnative001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isNative/isnative001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isObsolete/isobsolete001.java | 21 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isObsolete/isobsolete001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isObsolete/isobsolete002.java | 21 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isObsolete/isobsolete002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isObsolete/isobsolete003.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isObsolete/isobsolete003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isStaticInitializer/isstinitializer001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isStaticInitializer/isstinitializer001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isSynchronized/issynchronized001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isSynchronized/issynchronized001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isVarArgs/isvarargs001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/isVarArgs/isvarargs001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationOfCodeIndex/locationofcodeindex001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationOfCodeIndex/locationofcodeindex001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine/locationsofline001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine/locationsofline001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsOfLine_ssi002/locationsOfLine_ssi002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsOfLine_ssi003/locationsOfLine_ssi003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsofline_ssi001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsofline_ssi001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnType/returntype001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnType/returntype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnType/returntype002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnType/returntype002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnType/returntype003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnType/returntype003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnTypeNames/returntypenames001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnTypeNames/returntypenames001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnTypeNames/returntypenames002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnTypeNames/returntypenames002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnTypeNames/returntypenames003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/returnTypeNames/returntypenames003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/variables/variables001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/variables/variables001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/variables/variables002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/variables/variables002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/variablesByName/variablesbyname001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/variablesByName/variablesbyname001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/variablesByName/variablesbyname002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/variablesByName/variablesbyname002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryEvent/method/method001.java | 20 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryEvent/method/method001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryEvent/method/method001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryEvent/method/method002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryEvent/method/method002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/_bounds_/filters001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/_bounds_/filters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassExclusionFilter/filter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassExclusionFilter/filter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassExclusionFilter/filter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassExclusionFilter/filter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_rt/filter_rt001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_rt/filter_rt001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_rt/filter_rt002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_rt/filter_rt002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_rt/filter_rt003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_rt/filter_rt003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_s/filter_s001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_s/filter_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_s/filter_s002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_s/filter_s002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/_itself_/methodexit001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/_itself_/methodexit001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/method/method002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue001/returnValue001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue002/returnValue002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue003/returnValue003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitEvent/returnValue/returnValue004/returnValue004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/_bounds_/filters001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/_bounds_/filters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassExclusionFilter/filter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassExclusionFilter/filter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassExclusionFilter/filter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassExclusionFilter/filter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_s/filter_s001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_s/filter_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_s/filter_s002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_s/filter_s002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/hashCode/hashcode001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/toString/tostring001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/virtualMachine/virtualmachine001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/virtualMachine/virtualmachine001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ModificationWatchpointEvent/_itself_/mwevent001.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ModificationWatchpointEvent/_itself_/mwevent001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ModificationWatchpointEvent/valueToBe/valuetobe001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ModificationWatchpointEvent/valueToBe/valuetobe001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ModificationWatchpointEvent/valueToBe/valuetobe002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ModificationWatchpointEvent/valueToBe/valuetobe002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitRequest/MonitorWaitRequest001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitRequest/MonitorWaitRequest002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitRequest/addClassExclusionFilter/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitRequest/addClassFilter_ClassName/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitRequest/addClassFilter_ReferenceType/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitRequest/addInstanceFilter/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitRequest/addThreadFilter/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitedRequest/MonitorWaitedRequest001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitedRequest/MonitorWaitedRequest002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassExclusionFilter/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassFilter_ClassName/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitedRequest/addClassFilter_ReferenceType/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitedRequest/addInstanceFilter/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/MonitorWaitedRequest/addThreadFilter/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/_bounds_/bounds003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/disableCollection/disablecollection001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/disableCollection/disablecollection001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/disableCollection/disablecollection002.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/disableCollection/disablecollection002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount002.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue001.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue002.java | 26 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue002a.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue004.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod001.java | 31 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod001a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod002.java | 28 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod002t.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod003.java | 40 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod003t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod004.java | 44 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod004t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod005.java | 32 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod005t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod006.java | 32 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod006t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod007.java | 32 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod007t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod008.java | 36 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod008t.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod009.java | 36 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod009t.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod010.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod010/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod011.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod011/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod012.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod012/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod013.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod013/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod014.java | 38 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod014/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod014t.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/isCollected/iscollected001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/isCollected/iscollected001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread001.java | 27 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread002.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype001.java | 35 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype001a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype004.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype005.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype006.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype007.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects001/referringObjects001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects002/referringObjects002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects003/referringObjects003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects004/referringObjects004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue002.java | 49 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue002t.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue003.java | 44 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue003t.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue004.java | 44 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue004t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue005.java | 46 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue005t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/uniqueID/uniqueid001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/uniqueID/uniqueid001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads004.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/waitingThreads/waitingthreads004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/baseDirectory/directory001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/baseDirectory/directory001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/bootClassPath/bootpath001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/bootClassPath/bootpath001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/classPath/classpath001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/classPath/classpath001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveType/_itself_/primitivetype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveType/_itself_/primitivetype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/booleanValue/booleanvalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/booleanValue/booleanvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/byteValue/bytevalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/byteValue/bytevalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/charValue/charvalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/charValue/charvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/doubleValue/doublevalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/doubleValue/doublevalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/doubleValue/doublevalue002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/doubleValue/doublevalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/floatValue/floatvalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/floatValue/floatvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/intValue/intvalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/intValue/intvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/longValue/longvalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/longValue/longvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/shortValue/shortvalue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/shortValue/shortvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/_bounds_/bounds001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/_bounds_/bounds001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/_bounds_/bounds002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/_bounds_/bounds002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields004.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allFields/allfields006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations/alllinelocations001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations/alllinelocations001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations/alllinelocations002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations/alllinelocations002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/allLineLocations_ss003/allLineLocations_ss003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/allLineLocations_ss004/allLineLocations_ss004.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/alllinelocations_ss001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/alllinelocations_ss001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/alllinelocations_ss002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/alllinelocations_ss002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods004.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allMethods/allmethods006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/availableStrata/availableStrata002/availableStrata002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/availableStrata/availablestrata001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/availableStrata/availablestrata001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classLoader/classloader001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classLoader/classloader001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classObject/classobj001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classObject/classobj001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classObject/classobj002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classObject/classobj002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classObject/classobj003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classObject/classobj003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultStratum002/defaultStratum002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultStratum003/defaultStratum003.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultStratum004/defaultStratum004.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultstratum001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultstratum001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/equals/equals001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/equals/equals002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/failedToInitialize/failedToInitialize001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/failedToInitialize/failedToInitialize001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/failedToInitialize/failedtoinit002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/failedToInitialize/failedtoinit002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fieldByName/fieldbyname001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fieldByName/fieldbyname001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fieldByName/fieldbyname002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fieldByName/fieldbyname002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fieldByName/fieldbyname003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fieldByName/fieldbyname003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields004.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/fields/fields006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/genericSignature/genericSignature001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/genericSignature/genericSignature001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/genericSignature/genericSignature002.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/genericSignature/genericSignature002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue002.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue003.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/hashCode/hashcode001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/hashCode/hashcode002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/hashCode/hashcode002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/instances/instances001/instances001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/instances/instances002/instances002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/instances/instances003/instances003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/instances/instances005/instances005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isAbstract/isAbstract001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isAbstract/isAbstract001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isAbstract/isabstract002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isAbstract/isabstract002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isAbstract/isabstract003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isAbstract/isabstract003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isFinal/isfinal001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isFinal/isfinal001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isFinal/isfinal002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isFinal/isfinal002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isInitialized/isinit001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isInitialized/isinit001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isInitialized/isinit002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isInitialized/isinit002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isInitialized/isinit003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isInitialized/isinit003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isPrepared/isprepared001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isPrepared/isprepared001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isPrepared/isprepared002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isPrepared/isprepared002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isStatic/isstatic001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isStatic/isstatic001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isStatic/isstatic002.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isStatic/isstatic002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isVerified/isVerified001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isVerified/isVerified001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isVerified/isverified002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isVerified/isverified002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isVerified/isverified003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isVerified/isverified003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_i/locationsofline_i001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_i/locationsofline_i001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_i/locationsofline_i002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_i/locationsofline_i002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsOfLine_ssi003/locationsOfLine_ssi003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsOfLine_ssi004/locationsOfLine_ssi004.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsofline_ssi001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsofline_ssi001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsofline_ssi002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsofline_ssi002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods004.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methods/methods006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_s/methbyname_s001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_s/methbyname_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_s/methbyname_s002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_s/methbyname_s002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_s/methbyname_s003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_s/methbyname_s003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_s/methbyname_s004.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_s/methbyname_s004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_ss/methbyname_ss001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_ss/methbyname_ss001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_ss/methbyname_ss002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_ss/methbyname_ss002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_ss/methbyname_ss003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/methodsByName_ss/methbyname_ss003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/name/name001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/name/name002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/name/name002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/nestedTypes/nestedtypes001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/nestedTypes/nestedtypes001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/nestedTypes/nestedtypes002.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/nestedTypes/nestedtypes002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceDebugExtension/srcdebugx001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceDebugExtension/srcdebugx001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceDebugExtension/srcdebugx002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceDebugExtension/srcdebugx002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename004.java | 22 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceName/sourcename004t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourceNames003/sourceNames003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames002.java | 23 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames002t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcePaths003/sourcePaths003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcepaths001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcepaths001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcepaths002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcepaths002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield004.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleFields/visibfield006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod001.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod003.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod004.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod005.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod007.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/visibleMethods/visibmethod007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Scenarios/invokeMethod/popframes001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Scenarios/invokeMethod/popframes001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Scenarios/invokeMethod/redefineclasses001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Scenarios/invokeMethod/redefineclasses001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/SelectedArgument/choices/choices001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/SelectedArgument/choices/choices001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/SelectedArgument/isValid/isvalid001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/SelectedArgument/isValid/isvalid001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/SelectedArgument/isValid/isvalid002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/SelectedArgument/isValid/isvalid002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortType/_itself_/shorttype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortType/_itself_/shorttype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/compareTo/compareto001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/compareTo/compareto001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/equals/equals001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/equals/equals001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/hashCode/hashcode001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortValue/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/_bounds_/bounds002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues001/getArgumentValues001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues002/getArgumentValues002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getArgumentValues/getArgumentValues003/getArgumentValues003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue001a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue002.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue002a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue003.java | 51 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValue/getvalue003t.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues002.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues002a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues003.java | 57 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/getValues/getvalues003t.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/hashCode/hashcode001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/location/location001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/location/location001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/location/location001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue001/setvalue001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue001/setvalue001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue002/setvalue002.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue002/setvalue002a.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue003/setvalue003.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue003/setvalue003a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue004/setvalue004.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue004/setvalue004a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue005/setvalue005.java | 29 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue005/setvalue005t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue006/setvalue006.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue006/setvalue006t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject001a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject002.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject002a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thread/thread001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thread/thread001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thread/thread001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/toString/tostring001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname002.java | 14 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname002a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables002.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables002a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepEvent/_itself_/stepEvent003/stepEvent003.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepEvent/_itself_/stepEvent004/stepEvent004.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent001.java | 20 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent001a.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepEvent/_itself_/stepevent002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/_bounds_/filters001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/_bounds_/filters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter001.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter002.java | 20 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt003.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s001.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth003.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/size/size001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/size/size001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/size/size002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/size/size002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/thread/thread001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/thread/thread001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StringArgument/isValid/isvalid001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StringArgument/isValid/isvalid001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StringArgument/isValid/isvalid002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StringArgument/isValid/isvalid002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StringArgument/isValid/isvalid003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StringArgument/isValid/isvalid003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StringReference/value/value001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/StringReference/value/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathEvent/thread/thread001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathEvent/thread/thread001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter001.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter002.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter003.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter005.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/name/name001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/parent/parent001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/parent/parent001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/resume/resume001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/resume/resume001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/suspend/suspend001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/suspend/suspend001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/threadGroups/threadgroups001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/threadGroups/threadgroups001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/threads/threads001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/threads/threads001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/toString/tostring001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/_bounds_/bounds001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/_bounds_/bounds001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/currentContendedMonitor/currentcm001.java | 37 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/currentContendedMonitor/currentcm001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/currentContendedMonitor/currentcm001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn001/forceEarlyReturn001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn002/forceEarlyReturn002.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn002/forceEarlyReturn002a.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn003/forceEarlyReturn003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn004/forceEarlyReturn004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn005/forceEarlyReturn005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn008/forceEarlyReturn008.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn009/forceEarlyReturn009.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn010/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn011/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn012/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn013/forceEarlyReturn013.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn014/forceEarlyReturn014.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/forceEarlyReturn/forceEarlyReturn015/forceEarlyReturn015.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frame/frame001.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frame/frame001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frame/frame001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frameCount/framecount001.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frameCount/framecount001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frameCount/framecount001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames/frames001.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames/frames001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames/frames001a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii001.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii001a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii002.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii002a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isAtBreakpoint/isatbreakpoint001.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isAtBreakpoint/isatbreakpoint001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isAtBreakpoint/isatbreakpoint001a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended001.java | 41 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended002.java | 39 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended002a.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended003.java | 41 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended003a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended004.java | 41 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended004a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/name/name001.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/name/name001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors001.java | 33 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors002.java | 51 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitors/ownedmonitors002t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames001/ownedMonitorsAndFrames001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames002/ownedMonitorsAndFrames002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames003/ownedMonitorsAndFrames003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames004/ownedMonitorsAndFrames004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames005/ownedMonitorsAndFrames005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames006/ownedMonitorsAndFrames006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames007/ownedMonitorsAndFrames007.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames009/ownedMonitorsAndFrames009.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes001.java | 23 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes002.java | 22 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes003.java | 27 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes004.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes005.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes006.java | 27 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes006t.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes007.java | 59 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes007t.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/resume/resume001.java | 55 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/resume/resume001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/resume/resume001a.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/status/status003/status003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/status/status004/status004.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/status/status005/status005.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/status/status006/status006.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/status/status007/status007.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/status/status008/status008.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop001.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop002.java | 26 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop002t.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspend/suspend001.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspend/suspend001a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspendCount/suspendcount001.java | 25 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspendCount/suspendcount001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspendCount/suspendcount001a.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/threadGroup/threadgroup001.java | 34 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/threadGroup/threadgroup001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartEvent/thread/thread001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartEvent/thread/thread001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter001.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter003.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter005.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Transport/name/name001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Transport/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/hashCode/hashcode001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/hashCode/hashcode001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/name/name001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/name/name002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/name/name002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/name/name003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/name/name003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/signature/signature001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/signature/signature001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/signature/signature002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/signature/signature002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/signature/signature003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Type/signature/signature003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype007.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype009.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/declaringType/decltype009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/genericSignature/genericSignature001.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/genericSignature/genericSignature001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/genericSignature/genericSignature002.java | 13 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/genericSignature/genericSignature002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isFinal/isfinal004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPackagePrivate/ispackageprivate001.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPackagePrivate/ispackageprivate001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPackagePrivate/ispackageprivate002.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPackagePrivate/ispackageprivate002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPrivate/isprivate001.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPrivate/isprivate001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPrivate/isprivate002.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPrivate/isprivate002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isProtected/isprotected001.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isProtected/isprotected001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isProtected/isprotected002.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isProtected/isprotected002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPublic/ispublic001.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPublic/ispublic001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPublic/ispublic002.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isPublic/ispublic002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic004.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isStatic/isstatic004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isSynthetic/issynthetic001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isSynthetic/issynthetic001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isSynthetic/issynthetic002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/isSynthetic/issynthetic002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/name/name001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/name/name002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/name/name002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/name/name003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/name/name003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/signature/sign001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/signature/sign001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/signature/sign002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/signature/sign002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/signature/sign003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/TypeComponent/signature/sign003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMCannotBeModifiedEx/_itself_/canntbemod001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMCannotBeModifiedEx/_itself_/canntbemod001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath002.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath003.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDisconnectEvent/_itself_/disconnect003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMOutOfMemoryException/VMOutOfMemoryException001/VMOutOfMemoryException001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMStartEvent/thread/thread001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VMStartEvent/thread/thread001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/_itself_/value001.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/_itself_/value001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/type/type001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/type/type001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/type/type002/type002.java | 26 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/type/type002/type002a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/type/type003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/type/type003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allThreads/allthreads001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allThreads/allthreads001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canAddMethod/canaddmethod001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canAddMethod/canaddmethod001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canBeModified/canbemodified001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canBeModified/canbemodified001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetBytecodes/cangetbytecodes001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetBytecodes/cangetbytecodes001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetCurrentContendedMonitor/cangccm001.java | 26 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetCurrentContendedMonitor/cangccm001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetCurrentContendedMonitor/cangccm001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetMonitorInfo/cangetmonitorinfo001.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetMonitorInfo/cangetmonitorinfo001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetOwnedMonitorInfo/cangetinfo001.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetOwnedMonitorInfo/cangetinfo001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetOwnedMonitorInfo/cangetinfo001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetSourceDebugExtension/cangetsde001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetSourceDebugExtension/cangetsde001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetSyntheticAttribute/cangetattr001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetSyntheticAttribute/cangetattr001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canPopFrames/canpopframes001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canPopFrames/canpopframes001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canRedefineClasses/canredefineclasses001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canRedefineClasses/canredefineclasses001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canRequestVMDeathEvent/canreqvmdev001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canRequestVMDeathEvent/canreqvmdev001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canUnrestrictedlyRedefineClasses/curc001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canUnrestrictedlyRedefineClasses/curc001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canUseInstanceFilters/canusefilters001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canUseInstanceFilters/canusefilters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldAccess/canwatchaccess001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldAccess/canwatchaccess001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldModification/canwatchmod001.java | 19 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldModification/canwatchmod001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/classesByName/classesbyname001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/classesByName/classesbyname001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/description/description001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/description/description001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose003.java | 24 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose003a.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose004.java | 38 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose004a.java | 12 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose005.java | 11 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/eventQueue/eventqueue001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/eventQueue/eventqueue001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/eventRequestManager/eventrmanager001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/eventRequestManager/eventrmanager001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/exit/exit001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/exit/exit001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/exit/exit002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/exit/exit002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/getDefaultStratum/getdefaultstratum001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/getDefaultStratum/getdefaultstratum001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts001/instancecounts001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts003/instancecounts003.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/instanceCounts/instancecounts004/instancecounts004.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_bool/mirrorof_bool001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_bool/mirrorof_bool001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_byte/mirrorof_byte001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_byte/mirrorof_byte001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_char/mirrorof_char001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_char/mirrorof_char001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_double/mirrorof_double001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_double/mirrorof_double001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_float/mirrorof_float001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_float/mirrorof_float001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_int/mirrorof_int001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_int/mirrorof_int001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_long/mirrorof_long001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_long/mirrorof_long001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_short/mirrorof_short001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_short/mirrorof_short001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_string/mirrorof_string001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/mirrorOf_string/mirrorof_string001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/name/name001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/name/name001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/process/process001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/process/process001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses001.java | 29 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses003.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses004.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses005.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses006.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses007.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses008.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses009.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses009/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses010.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses010/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses011.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses011/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses012.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses012/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses013.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses013/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses014.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses014/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses015.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses015/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses016.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses016/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses020.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses020/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses022.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses022/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses024.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses024/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses025.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses025/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses026.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses026/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses027.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses027/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses028.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses028/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses029.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses029/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses030.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses030/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses031.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses031/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses032.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses032/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses034.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses034/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses035.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses035/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/resume/resume001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/resume/resume001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setDefaultStratum002/setDefaultStratum002.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setDefaultStratum003/setDefaultStratum003.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setdefaultstratum001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setdefaultstratum001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/suspend/suspend001.java | 38 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/suspend/suspend001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/suspend/suspend001a.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/topLevelThreadGroups/toplevelgroups001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/topLevelThreadGroups/toplevelgroups001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/version/version001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/version/version001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/allConnectors/allconnectors001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/allConnectors/allconnectors001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/attachingConnectors/attaching001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/attachingConnectors/attaching001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm002.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm003.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM001.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM002.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM003.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM004.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/createVirtualMachine/createVM005.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/defaultConnector/default001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/defaultConnector/default001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/launchingConnectors/launching001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/launchingConnectors/launching001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/listeningConnectors/listening001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/listeningConnectors/listening001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/majorInterfaceVersion/major001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/majorInterfaceVersion/major001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/minorInterfaceVersion/minor001.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/minorInterfaceVersion/minor001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidType/_itself_/voidtype001.java | 15 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidType/_itself_/voidtype001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidType/toString/tostring001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidType/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/equals/equals001/equals001.java | 26 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/equals/equals001/equals001a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/equals/equals002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/equals/equals002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/hashCode/hashcode001/hashcode001.java | 26 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/hashCode/hashcode001/hashcode001a.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/toString/tostring001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/toString/tostring001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/_itself_/wevent001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/_itself_/wevent001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/field/field001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/field/field001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/object/object001.java | 20 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/object/object001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/object/object001a.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/valueCurrent/valuecur001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointEvent/valueCurrent/valuecur001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/_bounds_/filters001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/_bounds_/filters001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter004.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt004.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt005.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt006.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s004.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter004.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter005.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter006.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter007.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter001.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter002.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter003.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter003/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter004.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter004/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter005.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter005/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter006.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter006/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter007.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter007/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter008.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter008/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/field/field001.java | 17 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/field/field001/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/field/field002.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/field/field002/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jdi/stress/ClassPrepareEvents/ClassPrepareEvents001/ClassPrepareEvents001.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/Allocate/alloc001/alloc001.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/RawMonitorEnter/rawmonenter003/TestDescription.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/RawMonitorExit/rawmonexit003/TestDescription.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/RawMonitorNotify/rawmnntfy003/TestDescription.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/RawMonitorNotifyAll/rawmnntfyall003/TestDescription.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/RawMonitorWait/rawmnwait003/TestDescription.java | 5 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/SetLocalVariable/setlocal001.java | 18 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/SetLocalVariable/setlocal001/setlocal001.cpp | 118 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/SetLocalVariable/setlocal003/setlocal003.cpp | 49 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/SetLocalVariable/setlocal004/setlocal004.cpp | 49 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/events/EM07/em07t002/em07t002.cpp | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdb/Launcher.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Binder.java | 9 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/ClassExclusionFilterTest.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/ClassFilterTest_ClassName.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/ClassFilterTest_ReferenceType.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java | 123 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/InstanceFilterTest.java | 8 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/JDIBase.java | 42 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/OwnedMonitorsDebugger.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/SerialExecutionDebugger.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/StressTestTemplate.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/TestDebuggerType1.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/ThreadFilterTest.java | 7 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/sde/SDEDebuggee.java | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jpda/BindServer.java | 1847 -- openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeArgumentHandler.java | 44 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeBinder.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeProcess.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/jpda/IOPipe.java | 10 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/native/native_thread.cpp | 6 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/native/nsk_list.cpp | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/nsk/share/test/Stresser.java | 38 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Implicit01/cs_disabled/TestDescription.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Implicit01/cs_enabled/TestDescription.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Merge01/cs_disabled/TestDescription.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/compiler/optimizations/stringconcat/implicit/Merge01/cs_enabled/TestDescription.java | 16 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Compact_InternedStrings_Strings/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Compact_NonbranchyTree/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Compact_NonbranchyTree_ArrayOf/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Compact_NonbranchyTree_TwoFields/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Compact_Strings/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Compact_Strings_InternedStrings/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Compact_Strings_TwoFields/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Humongous_NonbranchyTree/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/gc/compact/Humongous_Strings/TestDescription.java | 4 openjdk-21-21.0.10+7/test/hotspot/jtreg/vmTestbase/vm/mlvm/indy/func/jvmti/stepBreakPopReturn/stepBreakPopReturn.cpp | 6 openjdk-21-21.0.10+7/test/jdk/ProblemList.txt | 44 openjdk-21-21.0.10+7/test/jdk/TEST.ROOT | 13 openjdk-21-21.0.10+7/test/jdk/TEST.groups | 3 openjdk-21-21.0.10+7/test/jdk/com/sun/java/swing/plaf/windows/MenuItem/AcceleratorDelimiter/WindowsLAFMenuAcceleratorDelimiter.java | 95 openjdk-21-21.0.10+7/test/jdk/com/sun/java/swing/plaf/windows/WindowsDesktopManager/4227768/bug4227768.java | 99 openjdk-21-21.0.10+7/test/jdk/com/sun/java/swing/plaf/windows/WindowsDesktopManager/4305725/bug4305725.java | 97 openjdk-21-21.0.10+7/test/jdk/com/sun/jdi/EventQueueDisconnectTest.java | 4 openjdk-21-21.0.10+7/test/jdk/com/sun/jdi/RedefineNestmateAttr/TestNestmateAttr.java | 3 openjdk-21-21.0.10+7/test/jdk/com/sun/jdi/TestScaffold.java | 12 openjdk-21-21.0.10+7/test/jdk/com/sun/jdi/ThreadMemoryLeakTest.java | 2 openjdk-21-21.0.10+7/test/jdk/com/sun/jdi/VMConnection.java | 6 openjdk-21-21.0.10+7/test/jdk/com/sun/jdi/connect/spi/SimpleLaunchingConnector.java | 4 openjdk-21-21.0.10+7/test/jdk/com/sun/net/httpserver/FileServerHandler.java | 28 openjdk-21-21.0.10+7/test/jdk/com/sun/net/httpserver/ServerStopTerminationTest.java | 347 openjdk-21-21.0.10+7/test/jdk/com/sun/net/httpserver/Test12.java | 162 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/Bind.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/CloseDescriptors.java | 6 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/CommUp.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/Connect.java | 13 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/Receive.java | 16 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/ReceiveIntoDirect.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/Send.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/Shutdown.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpChannel/SocketOptionTests.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpMultiChannel/Branch.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpMultiChannel/CloseDescriptors.java | 13 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpMultiChannel/Send.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpMultiChannel/SendFailed.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpServerChannel/Accept.java | 15 openjdk-21-21.0.10+7/test/jdk/com/sun/nio/sctp/SctpServerChannel/NonBlockingAccept.java | 13 openjdk-21-21.0.10+7/test/jdk/com/sun/security/auth/login/ConfigFile/TEST.properties | 2 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/AuthOnly.java | 165 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/ConfSecurityLayer.java | 196 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/NoSecurityLayer.java | 199 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/PropertiesFileCallbackHandler.java | 145 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/gsseg_jaas.conf | 21 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/log.properties | 3 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/run-conf-wjaas.csh | 29 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/run-nosec-wjaas.csh | 24 openjdk-21-21.0.10+7/test/jdk/com/sun/security/sasl/gsskerb/runwjaas.csh | 24 openjdk-21-21.0.10+7/test/jdk/com/sun/tools/attach/FailedLoadAgentTest.java | 90 openjdk-21-21.0.10+7/test/jdk/java/awt/Clipboard/ClipboardSecurity.java | 156 openjdk-21-21.0.10+7/test/jdk/java/awt/Clipboard/GetAltContentsTest/SystemClipboardTest.java | 227 openjdk-21-21.0.10+7/test/jdk/java/awt/Clipboard/HTMLTransferTest/HTMLTransferTest.java | 4 openjdk-21-21.0.10+7/test/jdk/java/awt/Clipboard/ImageTransferTest.java | 519 openjdk-21-21.0.10+7/test/jdk/java/awt/Clipboard/NoDataConversionFailureTest.java | 173 openjdk-21-21.0.10+7/test/jdk/java/awt/Cursor/CursorDragTest/ListDragCursor.java | 100 openjdk-21-21.0.10+7/test/jdk/java/awt/Cursor/MultiResolutionCursorTest.java | 99 openjdk-21-21.0.10+7/test/jdk/java/awt/Cursor/MultiResolutionCursorTest/MultiResolutionCursorTest.html | 32 openjdk-21-21.0.10+7/test/jdk/java/awt/Cursor/MultiResolutionCursorTest/MultiResolutionCursorTest.java | 233 openjdk-21-21.0.10+7/test/jdk/java/awt/Desktop/BrowseTest.java | 26 openjdk-21-21.0.10+7/test/jdk/java/awt/Desktop/EditAndPrintTest/EditAndPrintTest.java | 2 openjdk-21-21.0.10+7/test/jdk/java/awt/DesktopProperties/FontSmoothing.java | 93 openjdk-21-21.0.10+7/test/jdk/java/awt/DesktopProperties/ThreeDBackgroundColor.java | 100 openjdk-21-21.0.10+7/test/jdk/java/awt/FileDialog/DoubleActionESC.java | 50 openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/ComponentLostFocusTest.java | 38 openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/MinimizeNonfocusableWindowTest.java | 76 openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/WindowDisposeFocusTest.java | 98 openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/bug6435715.java | 91 openjdk-21-21.0.10+7/test/jdk/java/awt/FontClass/FontTransformAttributeTest.java | 84 openjdk-21-21.0.10+7/test/jdk/java/awt/FontClass/FontUnderscoreTest.java | 77 openjdk-21-21.0.10+7/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.html | 43 openjdk-21-21.0.10+7/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.java | 240 openjdk-21-21.0.10+7/test/jdk/java/awt/FullScreen/NonfocusableFrameFullScreenTest.java | 139 openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/GDIResourceExhaustionTest.java | 121 openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/RepeatedRepaintTest.java | 137 openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/SmallPrimitives.java | 224 openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/TextAfterXor.java | 123 openjdk-21-21.0.10+7/test/jdk/java/awt/GridBagLayout/ComponentShortage.java | 99 openjdk-21-21.0.10+7/test/jdk/java/awt/Icon/ChildFrameIconTest.java | 76 openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.html | 53 openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.java | 108 openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest.java | 92 openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.html | 40 openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.java | 57 openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListEnterExitTest.java | 79 openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListScrollbarCursorTest.java | 70 openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListScrollbarTest.java | 197 openjdk-21-21.0.10+7/test/jdk/java/awt/List/MouseDraggedOriginatedByScrollBarTest.java | 84 openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/MenuActionEventTest.java | 98 openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/MenuVisibilityTest.java | 71 openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/RmInHideTest.java | 152 openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/SetShortCutTest.java | 132 openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/AddRemoveTransientForsTest.java | 123 openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/DialogLosesFocusTest.java | 107 openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/NativeDialogToFrontBackTest.java | 118 openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/DialogTest.java | 236 openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/FillThisScreen.java | 140 openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/IMCandidateWindowTest.java | 104 openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java | 148 openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/PrintCompatibilityTest.java | 446 openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/PrintComponentTest.java | 486 openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/ScaledImagePrintingTest.java | 102 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneAsNeededTest.java | 67 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneComponentTest.java | 125 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneEventType.java | 81 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneFlicker.java | 215 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPanePaint.java | 132 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneSize.java | 97 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPanechildViewportTest.java | 146 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPositionTest.java | 100 openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollbarsAsNeededTest.java | 72 openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/ListScrollbarTest.java | 139 openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/ScrollbarCtrlClickTest.java | 114 openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/UnitIncrementTest.java | 129 openjdk-21-21.0.10+7/test/jdk/java/awt/Selection/TestClipboard.java | 113 openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/AltPlusNumberKeyCombinationsTest.java | 74 openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/BackgroundTest.java | 127 openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/CorrectTextComponentSelectionTest.java | 139 openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/DisableTest.java | 98 openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/ModifiersTest.java | 85 openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/SelectionAndCaretColor.java | 162 openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/SelectionTest.java | 73 openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/TextFieldMargin.java | 67 openjdk-21-21.0.10+7/test/jdk/java/awt/TextField/SetEchoCharTest4/SetEchoCharTest4.java | 27 openjdk-21-21.0.10+7/test/jdk/java/awt/TextField/SetEchoCharWordOpsTest.java | 4 openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/DesktopProperties/DesktopPropertyTest.java | 272 openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/TestWrapped.java | 77 openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh | 221 openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/TimeUnsignedConversionTest.java | 128 openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/SerializationSpecTest.java | 99 openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/StandardProfilesRoundTrip.java | 73 openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/SerializedFormSize.java | 72 openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/ValidateICCHeaderData/ValidateICCHeaderData.java | 261 openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/ClipboardPerformanceTest.java | 133 openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.java | 4 openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/HTMLTransferConsoleOutputTest.java | 182 openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/ImageTransferCrashTest.java | 147 openjdk-21-21.0.10+7/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.html | 43 openjdk-21-21.0.10+7/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.java | 252 openjdk-21-21.0.10+7/test/jdk/java/awt/event/InputEvent/InputEventTimeTest.java | 115 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/AltGrTest.java | 90 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/CRTest.java | 124 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/CharUndefinedTest.java | 95 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/ExtendedKeysTest.java | 66 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyDownCaptureTest.java | 111 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyEventToLightweight.java | 125 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyModifiers.java | 134 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyPressedModifiers.java | 108 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyTest.java | 104 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/NumpadTest2.java | 108 openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/TestDoubleKeyEvent.java | 87 openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseEvent/AltGraphModifierTest/AltGraphModifierTest.java | 256 openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/HWWheelScroll.java | 160 openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/WheelEventCoord.java | 95 openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/WheelScrollEnabled.java | 129 openjdk-21-21.0.10+7/test/jdk/java/awt/font/FontNames/LocaleFamilyNames.java | 13 openjdk-21-21.0.10+7/test/jdk/java/awt/font/GlyphVector/TestOutline.java | 104 openjdk-21-21.0.10+7/test/jdk/java/awt/font/NumericShaper/ShaperTest.java | 180 openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestGASPHint.java | 113 openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestSelection.java | 134 openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestStrikethrough.java | 92 openjdk-21-21.0.10+7/test/jdk/java/awt/image/BufferedImage/VerifyNumBands.java | 56 openjdk-21-21.0.10+7/test/jdk/java/awt/print/Dialog/DialogType.java | 96 openjdk-21-21.0.10+7/test/jdk/java/awt/print/PrinterJob/PageDialogCancelTest.java | 58 openjdk-21-21.0.10+7/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java | 25 openjdk-21-21.0.10+7/test/jdk/java/io/File/MacPathTest.java | 11 openjdk-21-21.0.10+7/test/jdk/java/io/File/MaxPath.java | 10 openjdk-21-21.0.10+7/test/jdk/java/io/File/MaxPathLength.java | 43 openjdk-21-21.0.10+7/test/jdk/java/io/File/SymLinks.java | 39 openjdk-21-21.0.10+7/test/jdk/java/io/File/TimeZoneLastModified.java | 10 openjdk-21-21.0.10+7/test/jdk/java/io/File/WinDeviceName.java | 7 openjdk-21-21.0.10+7/test/jdk/java/io/File/WinMaxPath.java | 7 openjdk-21-21.0.10+7/test/jdk/java/io/File/WinSpecialFiles.java | 7 openjdk-21-21.0.10+7/test/jdk/java/io/FileDescriptor/Sync.java | 2 openjdk-21-21.0.10+7/test/jdk/java/io/FileOutputStream/ManyFiles.java | 11 openjdk-21-21.0.10+7/test/jdk/java/io/pathNames/win32/SJIS.java | 17 openjdk-21-21.0.10+7/test/jdk/java/lang/Math/FusedMultiplyAddTests.java | 9 openjdk-21-21.0.10+7/test/jdk/java/lang/ProcessBuilder/Basic.java | 70 openjdk-21-21.0.10+7/test/jdk/java/lang/ProcessBuilder/JspawnhelperProtocol.java | 9 openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-ALL.properties | 8 openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-FINE.properties | 2 openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-FINER.properties | 8 openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-INFO.properties | 2 openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-OFF.properties | 8 openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-SEVERE.properties | 8 openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-WARNING.properties | 8 openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/RuntimeExitLogTest.java | 86 openjdk-21-21.0.10+7/test/jdk/java/lang/String/Chars.java | 63 openjdk-21-21.0.10+7/test/jdk/java/lang/String/CompactString/MaxSizeUTF16String.java | 121 openjdk-21-21.0.10+7/test/jdk/java/lang/String/StringRacyConstructor.java | 437 openjdk-21-21.0.10+7/test/jdk/java/lang/System/LoggerFinder/internal/BootstrapLogger/BootstrapLoggerTest.java | 6 openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/ParkWithFixedThreadPool.java | 2 openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java | 30 openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/ParkALot.java | 37 openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/SleepALot.java | 2 openjdk-21-21.0.10+7/test/jdk/java/net/CookieStoreTest.java | 113 openjdk-21-21.0.10+7/test/jdk/java/net/InetAddress/ptr/Lookup.java | 9 openjdk-21-21.0.10+7/test/jdk/java/net/NetworkInterface/IPv4Only.java | 14 openjdk-21-21.0.10+7/test/jdk/java/net/Socket/DeadlockTest.java | 30 openjdk-21-21.0.10+7/test/jdk/java/net/URI/Test.java | 38 openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/CancelRequestTest.java | 10 openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/HttpsTunnelAuthTest.java | 10 openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/ManyRequests.java | 1 openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/ProxyServer.java | 61 openjdk-21-21.0.10+7/test/jdk/java/net/vthread/HttpALot.java | 45 openjdk-21-21.0.10+7/test/jdk/java/nio/channels/DatagramChannel/StressNativeSignal.java | 87 openjdk-21-21.0.10+7/test/jdk/java/nio/channels/FileChannel/directio/DirectIOTest.java | 90 openjdk-21-21.0.10+7/test/jdk/java/nio/channels/FileChannel/directio/libDirectIO.c | 34 openjdk-21-21.0.10+7/test/jdk/java/nio/channels/SocketChannel/PeerReadsAfterAsyncClose.java | 195 openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/AvailableCharsetNames.java | 29 openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/CharsetContainmentTest.java | 185 openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/Contains.java | 306 openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/EmptyCharsetName.java | 84 openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/EncDec.java | 39 openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/IllegalCharsetName.java | 108 openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/NullCharsetName.java | 30 openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/RegisteredCharsets.java | 2568 +-- openjdk-21-21.0.10+7/test/jdk/java/nio/file/Files/ReadWriteString.java | 41 openjdk-21-21.0.10+7/test/jdk/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java | 104 openjdk-21-21.0.10+7/test/jdk/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java | 3 openjdk-21-21.0.10+7/test/jdk/java/security/Security/SecurityPropFile/TEST.properties | 2 openjdk-21-21.0.10+7/test/jdk/java/text/Format/ChoiceFormat/ParseTest.java | 76 openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/DateFormatRegression.java | 14 openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/DateFormatTest.java | 16 openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/SDFTCKZoneNamesTest.java | 8 openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/bug4358730.java | 6 openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/CalendarRegression.java | 27 openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/JavatimeTest.java | 17 openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/bug4316678.java | 6 openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/bug4372743.java | 6 openjdk-21-21.0.10+7/test/jdk/java/util/Date/Bug4955000.java | 6 openjdk-21-21.0.10+7/test/jdk/java/util/Date/DateRegression.java | 7 openjdk-21-21.0.10+7/test/jdk/java/util/Date/DateTest.java | 10 openjdk-21-21.0.10+7/test/jdk/java/util/Locale/UserRegionTest.java | 74 openjdk-21-21.0.10+7/test/jdk/java/util/PluggableLocale/LocaleNameProviderTest.java | 151 openjdk-21-21.0.10+7/test/jdk/java/util/PluggableLocale/TimeZoneNameProviderTest.java | 49 openjdk-21-21.0.10+7/test/jdk/java/util/Properties/StoreDeadlock.java | 6 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug5097350.java | 11 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug6329116.java | 13 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug6772689.java | 11 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/DaylightTimeTest.java | 10 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/IDTest.java | 22 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/ListTimeZones.java | 10 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/NegativeDSTTest.java | 7 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/SimpleTimeZoneEqualsHashCodeTest.java | 83 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/TimeZoneBoundaryTest.java | 12 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/TimeZoneRegression.java | 20 openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/bug4096952.java | 6 openjdk-21-21.0.10+7/test/jdk/java/util/concurrent/CopyOnWriteArraySet/SerializationTest.java | 84 openjdk-21-21.0.10+7/test/jdk/java/util/concurrent/Executors/AutoShutdown.java | 59 openjdk-21-21.0.10+7/test/jdk/java/util/jar/Manifest/ValueUtf8Coding.java | 8 openjdk-21-21.0.10+7/test/jdk/java/util/logging/LocalizedLevelName.java | 3 openjdk-21-21.0.10+7/test/jdk/java/util/logging/SimpleFormatterFormat.java | 8 openjdk-21-21.0.10+7/test/jdk/java/util/zip/ZipFile/TestCleaner.java | 56 openjdk-21-21.0.10+7/test/jdk/javax/imageio/plugins/jpeg/WriteJPEGThumbnailTest.java | 155 openjdk-21-21.0.10+7/test/jdk/javax/management/security/SecurityTest.java | 11 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/CipherSuite.java | 8 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSNamedGroups.java | 3 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSOverDatagram.java | 12 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSSignatureSchemes.java | 3 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/FragmentedFinished.java | 72 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/PacketLossRetransmission.java | 27 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLEngine/Basics.java | 5 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLEngine/EngineCloseOnAlert.java | 8 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLHandshakeException.java | 2 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLKeyException.java | 2 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLPeerUnverifiedException.java | 2 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLProtocolException.java | 2 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/NamedGroups.java | 2 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/NamedGroupsSpec.java | 2 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/SignatureSchemes.java | 2 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/ServerName/EndingDotHostname.java | 3 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSCommon/TLSTest.java | 116 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSv11/GenericBlockCipher.java | 6 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSv12/ProtocolFilter.java | 7 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/ciphersuites/DisabledAlgorithms.java | 12 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/CheckCipherSuites.java | 22 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/SystemPropCipherSuitesOrder.java | 19 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/TLSCipherSuitesOrder.java | 4 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/templates/SSLExampleCert.java | 2 openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/templates/SSLSocketTemplate.java | 17 openjdk-21-21.0.10+7/test/jdk/javax/print/PrintServiceLookup/CountPrintServices.java | 28 openjdk-21-21.0.10+7/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.java | 5 openjdk-21-21.0.10+7/test/jdk/javax/security/auth/callback/PasswordCallback/CheckCleanerBound.java | 3 openjdk-21-21.0.10+7/test/jdk/javax/security/auth/callback/PasswordCallback/PasswordCleanup.java | 3 openjdk-21-21.0.10+7/test/jdk/javax/security/auth/login/TEST.properties | 2 openjdk-21-21.0.10+7/test/jdk/javax/sound/midi/BulkSoundBank/BulkSoundBank.java | 53 openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4151763.java | 94 openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4415505.java | 77 openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4978274.java | 108 openjdk-21-21.0.10+7/test/jdk/javax/swing/JCheckBox/4449413/bug4449413.java | 29 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4139900.java | 119 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4166593.java | 98 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4174876.java | 78 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4180054.java | 112 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4185024.java | 109 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4201964.java | 77 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4249732.java | 72 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4368848.java | 129 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4474400.java | 78 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4530952.java | 147 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4530953.java | 98 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4235215.java | 64 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4247610.java | 128 openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4254995.java | 60 openjdk-21-21.0.10+7/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/ScrollToReferenceTest.java | 91 openjdk-21-21.0.10+7/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/test.html | 93 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/6798062/bug6798062.java | 230 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/FileFilterDescription.java | 98 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/FileFilterDescription/FileFilterDescription.java | 98 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/HTMLFileName.java | 175 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4357012.java | 99 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4464774.java | 62 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4522756.java | 64 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4759934.java | 124 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4926884.java | 114 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4943900.java | 118 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug5045464.java | 68 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug6515169.java | 106 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug6798062.java | 230 openjdk-21-21.0.10+7/test/jdk/javax/swing/JFrame/bug4419914.java | 128 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/6726866/bug6726866.java | 87 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java | 17 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/InternalFrameTitleButtonTest.java | 127 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4151444.java | 84 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4190516.java | 75 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4215380.java | 109 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4242045.java | 123 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4321312.java | 126 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4322726.java | 109 openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug6726866.java | 87 openjdk-21-21.0.10+7/test/jdk/javax/swing/JLabel/bug4106007.java | 66 openjdk-21-21.0.10+7/test/jdk/javax/swing/JLabel/bug4945795.java | 73 openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4193267.java | 117 openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4249161.java | 96 openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4618767.java | 127 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuBar/RightLeftOrientation.java | 85 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/MenuItemTestHelper.java | 163 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug4729669.java | 61 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug6197830.java | 67 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/RightLeftOrientation.java | 105 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4207339.java | 67 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4327146.java | 114 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4402082.java | 81 openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4729669.java | 186 openjdk-21-21.0.10+7/test/jdk/javax/swing/JOptionPane/TestJOptionHTMLTag.java | 68 openjdk-21-21.0.10+7/test/jdk/javax/swing/JOptionPane/bug4194862.java | 94 openjdk-21-21.0.10+7/test/jdk/javax/swing/JPasswordField/PasswordFieldInputMapWordTest.java | 118 openjdk-21-21.0.10+7/test/jdk/javax/swing/JPasswordField/bug4382819.java | 86 openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4119993.java | 112 openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4187004.java | 97 openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4188832.java | 82 openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4212464.java | 142 openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4234793.java | 242 openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4530303.java | 85 openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/RightLeftOrientation.java | 147 openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug4230391.java | 139 openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug4393042.java | 90 openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug5003022.java | 82 openjdk-21-21.0.10+7/test/jdk/javax/swing/JRadioButton/bug4673850.java | 104 openjdk-21-21.0.10+7/test/jdk/javax/swing/JRootPane/bug4614623.java | 84 openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/6524424/bug6524424.html | 34 openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/6524424/bug6524424.java | 101 openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4186062.java | 99 openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4275631.java | 132 openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4382876.java | 110 openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug6524424.java | 120 openjdk-21-21.0.10+7/test/jdk/javax/swing/JSplitPane/bug4820080.java | 94 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/4287208/bug4287208.java | 90 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4273320.java | 90 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4287268.java | 102 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4362226.java | 76 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4499556.java | 5 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4613811.java | 82 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4668865.java | 112 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/CheckBoxFirstClick.java | 185 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/IllegalStateException.java | 187 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/InternationalCharacters.java | 172 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/JTableScrollPrintTest.java | 180 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/NullTableHeader.java | 44 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/PrintAllPagesTest.java | 4 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/ShiftClick.java | 187 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4118307.java | 182 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4128506.java | 84 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4129401.java | 87 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4138158.java | 62 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4139910.java | 68 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4188504.java | 71 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4190222.java | 103 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4193727.java | 135 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4224179.java | 74 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4226181.java | 87 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4239157.java | 85 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4242631.java | 144 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTextField/bug4232716.java | 81 openjdk-21-21.0.10+7/test/jdk/javax/swing/JTextField/bug5027332.java | 70 openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.html | 41 openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.java | 143 openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/bug4128979.java | 149 openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/TooltipTest.java | 90 openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/bug4225314.java | 72 openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/bug4255441.java | 64 openjdk-21-21.0.10+7/test/jdk/javax/swing/JViewport/ScrollRectToVisibleTest3.java | 165 openjdk-21-21.0.10+7/test/jdk/javax/swing/JViewport/SetViewRepaint.java | 114 openjdk-21-21.0.10+7/test/jdk/javax/swing/JWindow/bug4251781.java | 76 openjdk-21-21.0.10+7/test/jdk/javax/swing/SwingUtilities/bug4967768.java | 12 openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug4250178.java | 66 openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug4294808.java | 64 openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug6178004.java | 152 openjdk-21-21.0.10+7/test/jdk/javax/swing/border/LineBorder/ScaledLineBorderTest.java | 114 openjdk-21-21.0.10+7/test/jdk/javax/swing/border/LineBorder/ScaledTextFieldBorderTest.java | 9 openjdk-21-21.0.10+7/test/jdk/javax/swing/border/TransparentTitleTest.java | 122 openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/basic/BasicTextUI/PasswordSelectionWordTest.java | 94 openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/metal/MetalIconFactory/bug4952462.java | 66 openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/windows/bug4991587.java | 95 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/BoxView/BaselineTest.java | 182 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/DefaultEditorKit/4278839/bug4278839.java | 73 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/GlyphView/bug4188841.java | 93 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/bug4473401.java | 90 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frame1.html | 9 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frame2.html | 4 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frameresult.html | 5 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frameset.html | 11 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/bug4529702.java | 62 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/bug4890934.java | 91 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame1.html | 8 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame2.html | 4 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameresult.html | 7 openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameset.html | 11 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/cgroup/CgroupV1SubsystemControllerTest.java | 17 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java | 34 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/GetFreeSwapSpaceSize.java | 2 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/MetricsMemoryTester.java | 6 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerBasic.java | 3 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerCpuMetrics.java | 4 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetrics.java | 20 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java | 142 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java | 5 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestLimitsUpdating.java | 3 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestPidsLimit.java | 4 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java | 4 openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestUseContainerSupport.java | 3 openjdk-21-21.0.10+7/test/jdk/jdk/jfr/api/flightrecorder/TestSettingsControl.java | 14 openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestCompilerCompile.java | 4 openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestCompilerInlining.java | 2 openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestDeoptimization.java | 4 openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWith32BitOops.java | 2 openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWithZeroBasedOops.java | 2 openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/os/TestCPULoad.java | 26 openjdk-21-21.0.10+7/test/jdk/sun/awt/font/TestDevTransform.java | 48 openjdk-21-21.0.10+7/test/jdk/sun/java2d/cmm/ColorConvertOp/FilterSemiCustomImages.java | 162 openjdk-21-21.0.10+7/test/jdk/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java | 22 openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/AbstractFilePermissionTest.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/JMXInterfaceBindingTest.java | 2 openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/LocalManagementTest.java | 12 openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java | 3 openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/RmiRegistrySslTest.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/file/FileURLTest.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java | 716 openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/TEST.properties | 3 openjdk-21-21.0.10+7/test/jdk/sun/security/jgss/GssContextCleanup.java | 3 openjdk-21-21.0.10+7/test/jdk/sun/security/jgss/GssNameCleanup.java | 3 openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/Krb5NameEquals.java | 66 openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/MicroTime.java | 9 openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/auto/SaslBasic.java | 97 openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/runNameEquals.sh | 127 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/SupportedDHKeys.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestDH.java | 6 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestInterop.java | 6 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestShort.java | 35 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/UnsupportedDHKeys.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/DESParity.java | 11 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestAES.java | 14 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestChaCha20.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java | 2 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDH2048.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDefaultDHPrivateExpSize.java | 9 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval.java | 11 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyStore/ClientAuth.java | 5 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/PKCS11Test.java | 2 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecretKeyFactory/TestGeneral.java | 55 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecureRandom/Basic.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecureRandom/TestDeserialization.java | 12 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/Serialize/SerializeProvider.java | 8 openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/tls/tls12/FipsModeTLS12.java | 5 openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/ClientHandshaker/LengthCheckTest.java | 6 openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/EngineArgs/DebugReportsOneExtraByte.java | 6 openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureDTLS12.java | 54 openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS12.java | 120 openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS13.java | 70 openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS12.java | 2 openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS13.java | 2 openjdk-21-21.0.10+7/test/jdk/sun/security/tools/jarsigner/EC.java | 3 openjdk-21-21.0.10+7/test/jdk/sun/security/tools/jarsigner/VerifyJarEntryName.java | 142 openjdk-21-21.0.10+7/test/jdk/sun/security/util/Resources/TEST.properties | 2 openjdk-21-21.0.10+7/test/jdk/sun/security/x509/URICertStore/AIACertTimeout.java | 2 openjdk-21-21.0.10+7/test/jdk/sun/security/x509/URICertStore/ExtensionsWithLDAP.java | 92 openjdk-21-21.0.10+7/test/jdk/sun/security/x509/X509CertImpl/V3Certificate.java | 6 openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleData | 7712 ++++----- openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleData.cldr | 8118 +++++----- openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleDataTest.java | 127 openjdk-21-21.0.10+7/test/jdk/sun/tools/jcmd/JcmdBase.java | 4 openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/TestZoneInfo310.java | 19 openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/ZoneInfoOld.java | 10 openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/Zoneinfo.java | 4 openjdk-21-21.0.10+7/test/jdk/sun/util/logging/SourceClassName.java | 6 openjdk-21-21.0.10+7/test/jdk/sun/util/resources/TimeZone/Bug4640234.java | 11 openjdk-21-21.0.10+7/test/jdk/sun/util/resources/cldr/Bug8134384.java | 7 openjdk-21-21.0.10+7/test/jdk/sun/util/resources/cldr/Bug8202764.java | 5 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/apps/UseShutdownHook.java | 88 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/AnnotationsTest.java | 408 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/JavaAppDescTest.java | 98 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TKitTest.java | 244 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TestSuite.java | 63 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Annotations.java | 50 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/CfgFile.java | 121 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Executor.java | 83 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Functional.java | 14 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java | 67 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java | 38 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java | 62 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java | 8 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LinuxHelper.java | 43 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java | 42 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MethodCall.java | 234 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageTest.java | 11 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java | 145 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilder.java | 219 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilderConfig.java | 62 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestInstance.java | 41 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestMethodSupplier.java | 510 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/WindowsHelper.java | 101 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/resources/Win8365790Test.ps1 | 83 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AddLShortcutTest.java | 4 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AddLauncherTest.java | 7 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AppContentTest.java | 119 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AppLauncherEnvTest.java | 12 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/BasicTest.java | 2 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/InstallDirTest.java | 29 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/windows/Win8365790Test.java | 129 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/windows/WinChildProcessTest.java | 24 openjdk-21-21.0.10+7/test/jdk/tools/launcher/TooSmallStackSize.java | 4 openjdk-21-21.0.10+7/test/jtreg-ext/requires/VMProps.java | 18 openjdk-21-21.0.10+7/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.java | 22 openjdk-21-21.0.10+7/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.out | 2 openjdk-21-21.0.10+7/test/langtools/tools/javac/jvm/ClassRefDupInConstantPoolTest.java | 4 openjdk-21-21.0.10+7/test/langtools/tools/javac/parser/ExtraImportSemicolon.java | 2 openjdk-21-21.0.10+7/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/AnnotatedTypeToString.java | 2 openjdk-21-21.0.10+7/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/Test.java | 8 openjdk-21-21.0.10+7/test/lib-test/jdk/test/whitebox/vm_flags/SizeTTest.java | 4 openjdk-21-21.0.10+7/test/lib/jdk/test/lib/Container.java | 5 openjdk-21-21.0.10+7/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java | 11 openjdk-21-21.0.10+7/test/lib/jdk/test/lib/containers/cgroup/MetricsTesterCgroupV2.java | 5 openjdk-21-21.0.10+7/test/lib/jdk/test/lib/containers/docker/ContainerRuntimeVersionTestUtils.java | 116 openjdk-21-21.0.10+7/test/lib/jdk/test/lib/security/CertificateBuilder.java | 98 openjdk-21-21.0.10+7/test/lib/jdk/test/whitebox/WhiteBox.java | 54 openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/lang/StringConstructor.java | 152 openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/net/URIAuthorityParsingBenchmark.java | 62 openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/security/Signatures.java | 3 openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/util/concurrent/ProducerConsumer.java | 9 openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/util/concurrent/Queues.java | 9 openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/vm/compiler/AutoVectorization2DArray.java | 2 openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/vm/compiler/LoopUnroll.java | 2 3165 files changed, 58872 insertions(+), 29920 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp8ev8mrq4/openjdk-21_21.0.9+10-1~deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp8ev8mrq4/openjdk-21_21.0.10+7-1~deb13u1.dsc: no acceptable signature found diff -Nru openjdk-21-21.0.9+10/.jcheck/conf openjdk-21-21.0.10+7/.jcheck/conf --- openjdk-21-21.0.9+10/.jcheck/conf 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/.jcheck/conf 2026-01-15 15:34:19.000000000 +0000 @@ -1,7 +1,7 @@ [general] project=jdk-updates jbs=JDK -version=21.0.9 +version=21.0.10 [checks] error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists diff -Nru openjdk-21-21.0.9+10/debian/JB-doc.overrides.in openjdk-21-21.0.10+7/debian/JB-doc.overrides.in --- openjdk-21-21.0.9+10/debian/JB-doc.overrides.in 2025-07-17 14:12:13.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/JB-doc.overrides.in 2026-01-21 21:50:48.000000000 +0000 @@ -3,3 +3,11 @@ # chromium and firefox snaps are unable to load scripts from /usr/share/javascript # LP: 2032992 @basename@-doc binary: embedded-javascript-library + +# repeated path segments due to upstream code structure: +# usr/share/doc/openjdk-11-jre-headless/api/jdk.scripting.nashorn/jdk/nashorn/api/ +# usr/share/doc/openjdk-11-jre-headless/api/jquery/external/jquery/ +@basename@-doc binary: repeated-path-segment + +# override warning for the old mailing address in upstream copyright +@basename@-doc binary: old-fsf-address-in-copyright-file diff -Nru openjdk-21-21.0.9+10/debian/JB-jre-headless.overrides.in openjdk-21-21.0.10+7/debian/JB-jre-headless.overrides.in --- openjdk-21-21.0.9+10/debian/JB-jre-headless.overrides.in 2025-07-17 14:12:13.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/JB-jre-headless.overrides.in 2026-01-21 21:50:48.000000000 +0000 @@ -1,4 +1,5 @@ -# Strip libjvm.so with --strip-debug instead of --strip-unneeded. LP: #574997. +# keep symbols so that native memory tracking works +# See https://bugs.launchpad.net/ubuntu/+source/openjdk-20/+bug/2012326 @basename@-jre-headless binary: unstripped-binary-or-object # Ignore the mouse cursors @@ -16,3 +17,6 @@ # repeated lib due to upstream implementation directory layout @basename@-jre-headless binary: repeated-path-segment + +# override warning for the old mailing address in upstream copyright +@basename@-jre-headless binary: old-fsf-address-in-copyright-file diff -Nru openjdk-21-21.0.9+10/debian/JB-jre-zero.overrides.in openjdk-21-21.0.10+7/debian/JB-jre-zero.overrides.in --- openjdk-21-21.0.9+10/debian/JB-jre-zero.overrides.in 2025-07-17 14:12:13.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/JB-jre-zero.overrides.in 2026-01-12 00:57:31.000000000 +0000 @@ -1,4 +1,5 @@ -# Strip libjvm.so with --strip-debug instead of --strip-unneeded. LP: #574997. +# keep symbols so that native memory tracking works +# See https://bugs.launchpad.net/ubuntu/+source/openjdk-20/+bug/2012326 @basename@-jre-zero binary: unstripped-binary-or-object # Upstream implementation diff -Nru openjdk-21-21.0.9+10/debian/JB-jre.overrides.in openjdk-21-21.0.10+7/debian/JB-jre.overrides.in --- openjdk-21-21.0.9+10/debian/JB-jre.overrides.in 2025-07-17 14:12:13.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/JB-jre.overrides.in 2026-01-12 00:57:31.000000000 +0000 @@ -1,8 +1,8 @@ # these are in the -jre-headless package, -jre depends on it @basename@-jre binary: desktop-command-not-in-package -# LP: #2012326 - in order to print allocation locations, -# the libraries need to retain symbols +# keep symbols so that native memory tracking works +# See https://bugs.launchpad.net/ubuntu/+source/openjdk-20/+bug/2012326 @basename@-jre binary: unstripped-binary-or-object # repeated lib due to upstream implementation directory layout diff -Nru openjdk-21-21.0.9+10/debian/changelog openjdk-21-21.0.10+7/debian/changelog --- openjdk-21-21.0.9+10/debian/changelog 2025-10-23 10:14:51.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/changelog 2026-01-22 22:10:02.000000000 +0000 @@ -1,8 +1,45 @@ -openjdk-21 (21.0.9+10-1~deb13u1) trixie-security; urgency=medium +openjdk-21 (21.0.10+7-1~deb13u1) trixie-security; urgency=medium * Rebuild for trixie - -- Moritz Mühlenhoff Thu, 23 Oct 2025 12:14:51 +0200 + -- Moritz Muehlenhoff Thu, 22 Jan 2026 23:10:02 +0100 + +openjdk-21 (21.0.10+7-1) unstable; urgency=medium + + * OpenJDK 21.0.10 release, build 7. + - CVEs: + + CVE-2026-21945: 8368032: Enhance Certificate Checking. + + CVE-2026-21932: 8359501: Enhance Handling of URIs. + + CVE-2026-21933: 8362632: Improve HttpServer Request handling. + + CVE-2026-21925: 8341496: Improve JMX connections. + * d/t/control: Regenerate. + + -- Vladimir Petko Thu, 22 Jan 2026 10:57:02 +1300 + +openjdk-21 (21.0.10~6ea-1) unstable; urgency=medium + + * OpenJDK 21.0.10 early access, build 6. + * Update override comments for unstripped-binary-or-object. + We need to keep symbols for Native Memory Tracking to work. + * d/{JB-doc.overrides.in, JB-jre-headless.overrides.in}: Add override + for old FSF copyright address. + * d/s/lintian-overrides: Override false positive debian-rules-calls- + nproc. The utility is used to log the number of processors. + * d/t/control.in: dependencies.sh test needs only jre-headless + package, remove flaky and skippable flags. + + -- Vladimir Petko Mon, 05 Jan 2026 17:35:14 +1300 + +openjdk-21 (21.0.10~4ea-1) unstable; urgency=medium + + * OpenJDK 21.0.10 early access, build 4. + + [ Matthias Klose ] + * d/rules: Adjust any_archs, hppa is unlikely to get fixed for the + opposite stack frame growth. + * d/rules: Run the testsuite for loong64. + + -- Matthias Klose Sat, 29 Nov 2025 19:56:59 +0100 openjdk-21 (21.0.9+10-1) unstable; urgency=medium diff -Nru openjdk-21-21.0.9+10/debian/control openjdk-21-21.0.10+7/debian/control --- openjdk-21-21.0.9+10/debian/control 2025-10-23 10:14:51.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/control 2026-01-22 10:20:45.000000000 +0000 @@ -24,7 +24,7 @@ Vcs-Git: https://salsa.debian.org/openjdk-team/openjdk.git -b openjdk-21 Package: openjdk-21-jdk-headless -Architecture: alpha amd64 arc armel armhf arm64 hppa i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +Architecture: alpha amd64 arc armel armhf arm64 i386 loong64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 Multi-Arch: same Pre-Depends: ${dpkg:Depends} Depends: openjdk-21-jre-headless (= ${binary:Version}), @@ -47,7 +47,7 @@ applets, and components using the Java programming language. Package: openjdk-21-jre-headless -Architecture: alpha amd64 arc armel armhf arm64 hppa i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +Architecture: alpha amd64 arc armel armhf arm64 i386 loong64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 Multi-Arch: same Pre-Depends: ${dpkg:Depends} Depends: ${jredefault:Depends}, ${cacert:Depends}, @@ -77,7 +77,7 @@ using ${vm:Name}. Package: openjdk-21-jdk -Architecture: alpha amd64 arc armel armhf arm64 hppa i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +Architecture: alpha amd64 arc armel armhf arm64 i386 loong64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 Multi-Arch: same Pre-Depends: ${dpkg:Depends} Depends: openjdk-21-jre (= ${binary:Version}), @@ -95,7 +95,7 @@ applets, and components using the Java programming language. Package: openjdk-21-jre -Architecture: alpha amd64 arc armel armhf arm64 hppa i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +Architecture: alpha amd64 arc armel armhf arm64 i386 loong64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 Multi-Arch: same Pre-Depends: ${dpkg:Depends} Depends: openjdk-21-jre-headless (= ${binary:Version}), @@ -118,7 +118,7 @@ programs, using ${vm:Name}. Package: openjdk-21-demo -Architecture: alpha amd64 arc armel armhf arm64 hppa i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +Architecture: alpha amd64 arc armel armhf arm64 i386 loong64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 Priority: optional Pre-Depends: ${dpkg:Depends} Depends: openjdk-21-jre (= ${binary:Version}), @@ -158,7 +158,7 @@ This package contains the API documentation. Package: openjdk-21-dbg -Architecture: alpha amd64 arc armel armhf arm64 hppa i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +Architecture: alpha amd64 arc armel armhf arm64 i386 loong64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 Multi-Arch: same Priority: optional Section: debug @@ -175,7 +175,7 @@ This package contains the debugging symbols. Package: openjdk-21-testsupport -Architecture: alpha amd64 arc armel armhf arm64 hppa i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +Architecture: alpha amd64 arc armel armhf arm64 i386 loong64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 Multi-Arch: same Depends: openjdk-21-jdk (= ${binary:Version}), build-essential, xfwm4, xvfb, dbus-x11, libatk-wrapper-java, diff -Nru openjdk-21-21.0.9+10/debian/patches/jdk-8369450-proposed.patch openjdk-21-21.0.10+7/debian/patches/jdk-8369450-proposed.patch --- openjdk-21-21.0.9+10/debian/patches/jdk-8369450-proposed.patch 2025-10-09 08:03:04.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/patches/jdk-8369450-proposed.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -Description: [Ubuntu 25.10] openjdk fails to build due to rust-coreutils date - Add uutils as a GNU-compatible date provider. -Author: Vladimir Petko -Origin: upstream, https://github.com/openjdk/jdk/pull/27705 -Bug: https://bugs.openjdk.org/browse/JDK-8369450 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/openjdk-25/+bug/2127120 -Last-Update: 2025-10-09 ---- a/make/autoconf/basic_tools.m4 -+++ b/make/autoconf/basic_tools.m4 -@@ -378,7 +378,7 @@ - - # Check if it's a GNU date compatible version - AC_MSG_CHECKING([if date is a GNU compatible version]) -- check_date=`$DATE --version 2>&1 | $GREP "GNU\|BusyBox"` -+ check_date=`$DATE --version 2>&1 | $GREP "GNU\|BusyBox\|uutils"` - if test "x$check_date" != x; then - AC_MSG_RESULT([yes]) - IS_GNU_DATE=yes diff -Nru openjdk-21-21.0.9+10/debian/patches/series openjdk-21-21.0.10+7/debian/patches/series --- openjdk-21-21.0.9+10/debian/patches/series 2025-10-09 08:04:05.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/patches/series 2026-01-21 21:50:48.000000000 +0000 @@ -48,4 +48,3 @@ zero-alpha-workaround.diff #jdk-8347014-proposed.patch jdk-8359735.patch -jdk-8369450-proposed.patch diff -Nru openjdk-21-21.0.9+10/debian/rules openjdk-21-21.0.10+7/debian/rules --- openjdk-21-21.0.9+10/debian/rules 2025-10-21 21:41:36.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/rules 2026-01-21 21:54:12.000000000 +0000 @@ -83,7 +83,6 @@ endif is_upstream_release = yes -#is_upstream_release = srcdir = . builddir = build @@ -171,7 +170,7 @@ endif with_check = $(if $(findstring nocheck, $(DEB_BUILD_OPTIONS)),,yes) -ifneq (,$(filter $(DEB_HOST_ARCH), alpha arc hppa armel ia64 loong64 mipsel mips64el powerpc riscv64 x32)) +ifneq (,$(filter $(DEB_HOST_ARCH), alpha arc armel ia64 mipsel mips64el powerpc riscv64 x32)) with_check = disabled running check on $(DEB_HOST_ARCH) endif # no jtreg backport yet @@ -198,7 +197,7 @@ default_vm = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),hotspot,zero) -any_archs = alpha amd64 arc armel armhf arm64 hppa i386 ia64 loong64 mips mipsel mips64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +any_archs = alpha amd64 arc armel armhf arm64 i386 loong64 mips64el powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 altzero_archs = $(hotspot_archs) ifneq (,$(filter $(distrel),trusty)) @@ -2040,7 +2039,7 @@ dh_builddeb -a $(nodemo) $(nojrez) #$(bd_options) git_project = jdk21u -git_tag = jdk-21.0.9+10 +git_tag = jdk-21.0.10+7 package_version = $(shell echo $(PKGVERSION) | sed 's/-[^-][^-]*$$//') ifneq ($(is_upstream_release),yes) package_version := $(subst +,~,$(package_version)) diff -Nru openjdk-21-21.0.9+10/debian/source/lintian-overrides openjdk-21-21.0.10+7/debian/source/lintian-overrides --- openjdk-21-21.0.9+10/debian/source/lintian-overrides 2025-07-17 14:12:13.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/source/lintian-overrides 2026-01-21 21:50:48.000000000 +0000 @@ -22,3 +22,7 @@ # chromium and firefox snaps are unable to load scripts from /usr/share/javascript # LP: 2032992 openjdk-21 source: source-contains-prebuilt-javascript-object + +# false positive: nproc is called to print the number of processors +# to the log +openjdk-21 source: debian-rules-calls-nproc diff -Nru openjdk-21-21.0.9+10/debian/tests/control openjdk-21-21.0.10+7/debian/tests/control --- openjdk-21-21.0.9+10/debian/tests/control 2025-10-21 22:12:00.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/tests/control 2026-01-21 21:57:02.000000000 +0000 @@ -17,5 +17,5 @@ Architecture: amd64 i386 arm64 armhf ppc64 ppc64el riscv64 s390x alpha ia64 powerpc ppc64 sh4 x32 armel loong64 mipsel mips64el riscv64 Tests: dependencies.sh -Depends: @, build-essential, bash -Restrictions: allow-stderr, skippable, flaky +Depends: openjdk-21-jre-headless, build-essential, bash +Restrictions: allow-stderr diff -Nru openjdk-21-21.0.9+10/debian/tests/control.in openjdk-21-21.0.10+7/debian/tests/control.in --- openjdk-21-21.0.9+10/debian/tests/control.in 2025-10-17 07:19:14.000000000 +0000 +++ openjdk-21-21.0.10+7/debian/tests/control.in 2026-01-21 21:51:48.000000000 +0000 @@ -17,5 +17,5 @@ Architecture: @jtreg_archs@ Tests: dependencies.sh -Depends: @, build-essential, bash -Restrictions: allow-stderr, skippable, flaky +Depends: @basename@-jre-headless, build-essential, bash +Restrictions: allow-stderr diff -Nru openjdk-21-21.0.9+10/doc/building.html openjdk-21-21.0.10+7/doc/building.html --- openjdk-21-21.0.9+10/doc/building.html 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/doc/building.html 2026-01-15 15:34:19.000000000 +0000 @@ -476,7 +476,7 @@

The basic tooling is provided as part of the core operating system, but you will most likely need to install developer packages.

For apt-based distributions (Debian, Ubuntu, etc), try this:

-
sudo apt-get install build-essential
+
sudo apt-get install build-essential autoconf

For rpm-based distributions (Fedora, Red Hat, etc), try this:

sudo yum groupinstall "Development Tools"

For Alpine Linux, aside from basic tooling, install the GNU versions @@ -539,7 +539,7 @@ Linux -gcc 11.2.0 +gcc 13.2.0 macOS @@ -560,7 +560,7 @@ generate a warning by configure and are unlikely to work.

The JDK is currently known to be able to compile with at least -version 11.2 of gcc.

+version 13.2 of gcc.

In general, any version between these two should be usable.

clang

The minimum accepted version of clang is 3.5. Older versions will not diff -Nru openjdk-21-21.0.9+10/doc/building.md openjdk-21-21.0.10+7/doc/building.md --- openjdk-21-21.0.9+10/doc/building.md 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/doc/building.md 2026-01-15 15:34:19.000000000 +0000 @@ -289,7 +289,7 @@ For apt-based distributions (Debian, Ubuntu, etc), try this: ``` -sudo apt-get install build-essential +sudo apt-get install build-essential autoconf ``` For rpm-based distributions (Fedora, Red Hat, etc), try this: @@ -336,7 +336,7 @@ | Operating system | Toolchain version | | ------------------ | ------------------------------------------ | -| Linux | gcc 11.2.0 | +| Linux | gcc 13.2.0 | | macOS | Apple Xcode 10.1 (using clang 10.0.0) | | Windows | Microsoft Visual Studio 2022 update 17.1.0 | @@ -350,7 +350,7 @@ The minimum accepted version of gcc is 5.0. Older versions will generate a warning by `configure` and are unlikely to work. -The JDK is currently known to be able to compile with at least version 11.2 of +The JDK is currently known to be able to compile with at least version 13.2 of gcc. In general, any version between these two should be usable. diff -Nru openjdk-21-21.0.9+10/make/RunTests.gmk openjdk-21-21.0.10+7/make/RunTests.gmk --- openjdk-21-21.0.9+10/make/RunTests.gmk 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/RunTests.gmk 2026-01-15 15:34:19.000000000 +0000 @@ -1077,7 +1077,7 @@ # Now process each test to run and setup a proper make rule $(foreach test, $(TESTS_TO_RUN), \ $(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \ - $(TR) -cs '[a-z][A-Z][0-9]\n' '[_*1000]')) \ + $(TR) -cs '[a-z][A-Z][0-9]\n' '_')) \ $(eval ALL_TEST_IDS += $(TEST_ID)) \ $(if $(call UseCustomTestHandler, $(test)), \ $(eval $(call SetupRunCustomTest, $(TEST_ID), \ @@ -1157,9 +1157,9 @@ TEST TOTAL PASS FAIL ERROR " " $(foreach test, $(TESTS_TO_RUN), \ $(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \ - $(TR) -cs '[a-z][A-Z][0-9]\n' '[_*1000]')) \ + $(TR) -cs '[a-z][A-Z][0-9]\n' '_')) \ $(ECHO) >> $(TEST_LAST_IDS) $(TEST_ID) $(NEWLINE) \ - $(eval NAME_PATTERN := $(shell $(ECHO) $(test) | $(TR) -c '\n' '[_*1000]')) \ + $(eval NAME_PATTERN := $(shell $(ECHO) $(test) | $(TR) -c '\n' '_')) \ $(if $(filter __________________________________________________%, $(NAME_PATTERN)), \ $(eval TEST_NAME := ) \ $(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s\n" " " "$(test)" $(NEWLINE) \ diff -Nru openjdk-21-21.0.9+10/make/autoconf/basic_tools.m4 openjdk-21-21.0.10+7/make/autoconf/basic_tools.m4 --- openjdk-21-21.0.9+10/make/autoconf/basic_tools.m4 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/autoconf/basic_tools.m4 2026-01-15 15:34:19.000000000 +0000 @@ -378,7 +378,7 @@ # Check if it's a GNU date compatible version AC_MSG_CHECKING([if date is a GNU compatible version]) - check_date=`$DATE --version 2>&1 | $GREP "GNU\|BusyBox"` + check_date=`$DATE --version 2>&1 | $GREP "GNU\|BusyBox\|uutils"` if test "x$check_date" != x; then AC_MSG_RESULT([yes]) IS_GNU_DATE=yes diff -Nru openjdk-21-21.0.9+10/make/autoconf/boot-jdk.m4 openjdk-21-21.0.10+7/make/autoconf/boot-jdk.m4 --- openjdk-21-21.0.9+10/make/autoconf/boot-jdk.m4 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/autoconf/boot-jdk.m4 2026-01-15 15:34:19.000000000 +0000 @@ -444,6 +444,9 @@ # Force en-US environment UTIL_ADD_JVM_ARG_IF_OK([-Duser.language=en -Duser.country=US],boot_jdk_jvmargs,[$JAVA]) + UTIL_ADD_JVM_ARG_IF_OK([-Xlog:all=off:stdout],boot_jdk_jvmargs,[$JAVA]) + UTIL_ADD_JVM_ARG_IF_OK([-Xlog:all=warning:stderr],boot_jdk_jvmargs,[$JAVA]) + if test "x$BOOTJDK_USE_LOCAL_CDS" = xtrue; then # Use our own CDS archive UTIL_ADD_JVM_ARG_IF_OK([$boot_jdk_cds_args -Xshare:auto],boot_jdk_jvmargs,[$JAVA]) diff -Nru openjdk-21-21.0.9+10/make/autoconf/configure.ac openjdk-21-21.0.10+7/make/autoconf/configure.ac --- openjdk-21-21.0.9+10/make/autoconf/configure.ac 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/autoconf/configure.ac 2026-01-15 15:34:19.000000000 +0000 @@ -223,6 +223,9 @@ # LeakSanitizer JDKOPT_SETUP_LEAK_SANITIZER +# Setup static analyzer +JDKOPT_SETUP_STATIC_ANALYZER + # Fallback linker # This needs to go before 'LIB_DETERMINE_DEPENDENCIES' JDKOPT_SETUP_FALLBACK_LINKER diff -Nru openjdk-21-21.0.9+10/make/autoconf/flags-cflags.m4 openjdk-21-21.0.10+7/make/autoconf/flags-cflags.m4 --- openjdk-21-21.0.9+10/make/autoconf/flags-cflags.m4 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/autoconf/flags-cflags.m4 2026-01-15 15:34:19.000000000 +0000 @@ -625,8 +625,8 @@ TOOLCHAIN_CFLAGS_JVM="-qtbtable=full -qtune=balanced -fno-exceptions \ -qalias=noansi -qstrict -qtls=default -qnortti -qnoeh -qignerrno -qstackprotect" elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then - TOOLCHAIN_CFLAGS_JVM="-nologo -MD -Zc:preprocessor -Zc:strictStrings -MP" - TOOLCHAIN_CFLAGS_JDK="-nologo -MD -Zc:preprocessor -Zc:strictStrings -Zc:wchar_t-" + TOOLCHAIN_CFLAGS_JVM="-nologo -MD -Zc:preprocessor -Zc:throwingNew -permissive- -MP" + TOOLCHAIN_CFLAGS_JDK="-nologo -MD -Zc:preprocessor -Zc:throwingNew -permissive- -Zc:wchar_t-" fi # CFLAGS C language level for JDK sources (hotspot only uses C++) diff -Nru openjdk-21-21.0.9+10/make/autoconf/flags.m4 openjdk-21-21.0.10+7/make/autoconf/flags.m4 --- openjdk-21-21.0.9+10/make/autoconf/flags.m4 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/autoconf/flags.m4 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -128,16 +128,12 @@ # The expected format for is either nn.n.n or nn.nn.nn. See # /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityVersions.h - # MACOSX_VERSION_MIN specifies the lowest version of Macosx that the built + # MACOSX_VERSION_MIN specifies the lowest version of macOS that the built # binaries should be compatible with, even if compiled on a newer version # of the OS. It currently has a hard coded value. Setting this also limits # exposure to API changes in header files. Bumping this is likely to # require code changes to build. - if test "x$OPENJDK_TARGET_CPU_ARCH" = xaarch64; then - MACOSX_VERSION_MIN=11.00.00 - else - MACOSX_VERSION_MIN=10.12.0 - fi + MACOSX_VERSION_MIN=11.00.00 MACOSX_VERSION_MIN_NODOTS=${MACOSX_VERSION_MIN//\./} AC_SUBST(MACOSX_VERSION_MIN) diff -Nru openjdk-21-21.0.9+10/make/autoconf/jdk-options.m4 openjdk-21-21.0.10+7/make/autoconf/jdk-options.m4 --- openjdk-21-21.0.9+10/make/autoconf/jdk-options.m4 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/autoconf/jdk-options.m4 2026-01-15 15:34:19.000000000 +0000 @@ -462,6 +462,31 @@ ############################################################################### # +# Static analyzer +# +AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_ANALYZER], +[ + UTIL_ARG_ENABLE(NAME: static-analyzer, DEFAULT: false, RESULT: STATIC_ANALYZER_ENABLED, + DESC: [enable the GCC static analyzer], + CHECK_AVAILABLE: [ + AC_MSG_CHECKING([if static analyzer is available]) + if test "x$TOOLCHAIN_TYPE" = "xgcc"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AVAILABLE=false + fi + ], + IF_ENABLED: [ + STATIC_ANALYZER_CFLAGS="-fanalyzer -Wno-analyzer-fd-leak" + CFLAGS_JDKLIB="$CFLAGS_JDKLIB $STATIC_ANALYZER_CFLAGS" + CFLAGS_JDKEXE="$CFLAGS_JDKEXE $STATIC_ANALYZER_CFLAGS" + ]) + AC_SUBST(STATIC_ANALYZER_ENABLED) +]) + +################################################################################ +# # LeakSanitizer # AC_DEFUN_ONCE([JDKOPT_SETUP_LEAK_SANITIZER], diff -Nru openjdk-21-21.0.9+10/make/conf/jib-profiles.js openjdk-21-21.0.10+7/make/conf/jib-profiles.js --- openjdk-21-21.0.9+10/make/conf/jib-profiles.js 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/conf/jib-profiles.js 2026-01-15 15:34:19.000000000 +0000 @@ -436,7 +436,7 @@ target_cpu: "x64", dependencies: ["devkit", "gtest", "pandoc"], configure_args: concat(common.configure_args_64bit, "--with-zlib=system", - "--with-macosx-version-max=10.12.00", + "--with-macosx-version-max=11.00.00", "--enable-compatible-cds-alignment", // Use system SetFile instead of the one in the devkit as the // devkit one may not work on Catalina. @@ -1080,10 +1080,10 @@ var getJibProfilesDependencies = function (input, common) { var devkit_platform_revisions = { - linux_x64: "gcc11.2.0-OL6.4+1.0", + linux_x64: "gcc13.2.0-OL6.4+1.0", macosx: "Xcode12.4+1.1", windows_x64: "VS2022-17.1.0+1.1", - linux_aarch64: input.build_cpu == "x64" ? "gcc11.2.0-OL7.6+1.1" : "gcc11.2.0-OL7.6+1.0", + linux_aarch64: "gcc13.2.0-OL7.6+1.0", linux_arm: "gcc8.2.0-Fedora27+1.0", linux_ppc64le: "gcc8.2.0-Fedora27+1.0", linux_s390x: "gcc8.2.0-Fedora27+1.0", diff -Nru openjdk-21-21.0.9+10/make/conf/version-numbers.conf openjdk-21-21.0.10+7/make/conf/version-numbers.conf --- openjdk-21-21.0.9+10/make/conf/version-numbers.conf 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/conf/version-numbers.conf 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -28,12 +28,12 @@ DEFAULT_VERSION_FEATURE=21 DEFAULT_VERSION_INTERIM=0 -DEFAULT_VERSION_UPDATE=9 +DEFAULT_VERSION_UPDATE=10 DEFAULT_VERSION_PATCH=0 DEFAULT_VERSION_EXTRA1=0 DEFAULT_VERSION_EXTRA2=0 DEFAULT_VERSION_EXTRA3=0 -DEFAULT_VERSION_DATE=2025-10-21 +DEFAULT_VERSION_DATE=2026-01-20 DEFAULT_VERSION_CLASSFILE_MAJOR=65 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`" DEFAULT_VERSION_CLASSFILE_MINOR=0 DEFAULT_VERSION_DOCS_API_SINCE=11 diff -Nru openjdk-21-21.0.9+10/make/data/asan/asan_default_options.c openjdk-21-21.0.10+7/make/data/asan/asan_default_options.c --- openjdk-21-21.0.9+10/make/data/asan/asan_default_options.c 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/data/asan/asan_default_options.c 2026-01-15 15:34:19.000000000 +0000 @@ -67,6 +67,8 @@ #endif "print_suppressions=0," "handle_segv=0," + // A lot of libjsig related tests fail because of the link order check; so better avoid it + "verify_asan_link_order=0," // See https://github.com/google/sanitizers/issues/1322. Hopefully this is resolved // at some point and we can remove this option. "intercept_tls_get_addr=0"; diff -Nru openjdk-21-21.0.9+10/make/devkit/Tools.gmk openjdk-21-21.0.10+7/make/devkit/Tools.gmk --- openjdk-21-21.0.9+10/make/devkit/Tools.gmk 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/devkit/Tools.gmk 2026-01-15 15:34:19.000000000 +0000 @@ -55,11 +55,11 @@ ifeq ($(BASE_OS), OL) ifeq ($(ARCH), aarch64) - BASE_URL := http://yum.oracle.com/repo/OracleLinux/OL7/6/base/$(ARCH)/ + BASE_URL := https://yum.oracle.com/repo/OracleLinux/OL7/6/base/$(ARCH)/ LINUX_VERSION := OL7.6 KERNEL_HEADERS_RPM := kernel-uek-headers else - BASE_URL := http://yum.oracle.com/repo/OracleLinux/OL6/4/base/$(ARCH)/ + BASE_URL := https://yum.oracle.com/repo/OracleLinux/OL6/4/base/$(ARCH)/ LINUX_VERSION := OL6.4 endif else ifeq ($(BASE_OS), Fedora) @@ -96,8 +96,17 @@ # Define external dependencies # Latest that could be made to work. -GCC_VER := 11.3.0 -ifeq ($(GCC_VER), 11.3.0) +GCC_VER := 13.2.0 +ifeq ($(GCC_VER), 13.2.0) + gcc_ver := gcc-13.2.0 + binutils_ver := binutils-2.41 + ccache_ver := ccache-3.7.12 + mpfr_ver := mpfr-4.2.0 + gmp_ver := gmp-6.3.0 + mpc_ver := mpc-1.3.1 + gdb_ver := gdb-13.2 + REQUIRED_MIN_MAKE_MAJOR_VERSION := 4 +else ifeq ($(GCC_VER), 11.3.0) gcc_ver := gcc-11.3.0 binutils_ver := binutils-2.39 ccache_ver := ccache-3.7.12 @@ -671,7 +680,11 @@ rm -rf $@ cp $< $@ -THESE_MAKEFILES := $(PREFIX)/Makefile $(PREFIX)/Tools.gmk +$(PREFIX)/Tars.gmk: ./Tars.gmk + rm -rf $@ + cp $< $@ + +THESE_MAKEFILES := $(PREFIX)/Makefile $(PREFIX)/Tools.gmk $(PREFIX)/Tars.gmk ########################################################################################## diff -Nru openjdk-21-21.0.9+10/make/ide/netbeans/langtools/build.xml openjdk-21-21.0.10+7/make/ide/netbeans/langtools/build.xml --- openjdk-21-21.0.9+10/make/ide/netbeans/langtools/build.xml 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/make/ide/netbeans/langtools/build.xml 2026-01-15 15:34:19.000000000 +0000 @@ -1,6 +1,6 @@ - - - - High resolution custom cursor test, bug ID 8028212 - - - -

See the dialog box (usually in upper left corner) for instructions

- - diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Cursor/MultiResolutionCursorTest/MultiResolutionCursorTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Cursor/MultiResolutionCursorTest/MultiResolutionCursorTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Cursor/MultiResolutionCursorTest/MultiResolutionCursorTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Cursor/MultiResolutionCursorTest/MultiResolutionCursorTest.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ -/* - * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Cursor; -import java.awt.Dialog; -import java.awt.Frame; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.Label; -import java.awt.Point; -import java.awt.TextArea; -import java.awt.Toolkit; -import java.awt.image.BaseMultiResolutionImage; -import java.awt.image.BufferedImage; -import javax.swing.JApplet; - -import jdk.test.lib.Platform; - -/** - * @test - * @bug 8028212 - * @summary [macosx] Custom Cursor HiDPI support - * @author Alexander Scherbatiy - * @library /test/lib - * @modules java.desktop/sun.awt.image - * @build jdk.test.lib.Platform - * @run applet/manual=yesno MultiResolutionCursorTest.html - */ -public class MultiResolutionCursorTest extends JApplet { - //Declare things used in the test, like buttons and labels here - - static final int sizes[] = {8, 16, 32, 128}; - static final Color colors[] = {Color.WHITE, Color.RED, Color.GREEN, Color.BLUE}; - - public void init() { - //Create instructions for the user here, as well as set up - // the environment -- set the layout manager, add buttons, - // etc. - this.setLayout(new BorderLayout()); - - if (Platform.isOSX()) { - String[] instructions = { - "Verify that high resolution custom cursor is used" - + " on HiDPI displays.", - "1) Run the test on Retina display or enable the Quartz Debug" - + " and select the screen resolution with (HiDPI) label", - "2) Move the cursor to the Test Frame", - "3) Check that cursor has red, green or blue color", - "If so, press PASS, else press FAIL." - }; - Sysout.createDialogWithInstructions(instructions); - - } else { - String[] instructions = { - "This test is not applicable to the current platform. Press PASS." - }; - Sysout.createDialogWithInstructions(instructions); - } - }//End init() - - public void start() { - //Get things going. Request focus, set size, et cetera - setSize(200, 200); - setVisible(true); - validate(); - - final Image image = new BaseMultiResolutionImage( - createResolutionVariant(0), - createResolutionVariant(1), - createResolutionVariant(2), - createResolutionVariant(3) - ); - - int center = sizes[0] / 2; - Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor( - image, new Point(center, center), "multi-resolution cursor"); - - Frame frame = new Frame("Test Frame"); - frame.setSize(300, 300); - frame.setLocation(300, 50); - frame.add(new Label("Move cursor here")); - frame.setCursor(cursor); - frame.setVisible(true); - }// start() - - static BufferedImage createResolutionVariant(int i) { - BufferedImage resolutionVariant = new BufferedImage(sizes[i], sizes[i], - BufferedImage.TYPE_INT_RGB); - Graphics2D g2 = resolutionVariant.createGraphics(); - g2.setColor(colors[i]); - g2.fillRect(0, 0, sizes[i], sizes[i]); - g2.dispose(); - return resolutionVariant; - } -}// class BlockedWindowTest - -/* Place other classes related to the test after this line */ -/** - * ************************************************** - * Standard Test Machinery DO NOT modify anything below -- it's a standard chunk - * of code whose purpose is to make user interaction uniform, and thereby make - * it simpler to read and understand someone else's test. - * ************************************************** - */ -/** - * This is part of the standard test machinery. It creates a dialog (with the - * instructions), and is the interface for sending text messages to the user. To - * print the instructions, send an array of strings to Sysout.createDialog - * WithInstructions method. Put one line of instructions per array entry. To - * display a message for the tester to see, simply call Sysout.println with the - * string to be displayed. This mimics System.out.println but works within the - * test harness as well as standalone. - */ -class Sysout { - - private static TestDialog dialog; - - public static void createDialogWithInstructions(String[] instructions) { - dialog = new TestDialog(new Frame(), "Instructions"); - dialog.printInstructions(instructions); - dialog.setVisible(true); - println("Any messages for the tester will display here."); - } - - public static void createDialog() { - dialog = new TestDialog(new Frame(), "Instructions"); - String[] defInstr = {"Instructions will appear here. ", ""}; - dialog.printInstructions(defInstr); - dialog.setVisible(true); - println("Any messages for the tester will display here."); - } - - public static void printInstructions(String[] instructions) { - dialog.printInstructions(instructions); - } - - public static void println(String messageIn) { - dialog.displayMessage(messageIn); - } -}// Sysout class - -/** - * This is part of the standard test machinery. It provides a place for the test - * instructions to be displayed, and a place for interactive messages to the - * user to be displayed. To have the test instructions displayed, see Sysout. To - * have a message to the user be displayed, see Sysout. Do not call anything in - * this dialog directly. - */ -class TestDialog extends Dialog { - - TextArea instructionsText; - TextArea messageText; - int maxStringLength = 80; - - //DO NOT call this directly, go through Sysout - public TestDialog(Frame frame, String name) { - super(frame, name); - int scrollBoth = TextArea.SCROLLBARS_BOTH; - instructionsText = new TextArea("", 15, maxStringLength, scrollBoth); - add("North", instructionsText); - - messageText = new TextArea("", 5, maxStringLength, scrollBoth); - add("Center", messageText); - - pack(); - - setVisible(true); - }// TestDialog() - - //DO NOT call this directly, go through Sysout - public void printInstructions(String[] instructions) { - //Clear out any current instructions - instructionsText.setText(""); - - //Go down array of instruction strings - - String printStr, remainingStr; - for (int i = 0; i < instructions.length; i++) { - //chop up each into pieces maxSringLength long - remainingStr = instructions[ i]; - while (remainingStr.length() > 0) { - //if longer than max then chop off first max chars to print - if (remainingStr.length() >= maxStringLength) { - //Try to chop on a word boundary - int posOfSpace = remainingStr.lastIndexOf(' ', maxStringLength - 1); - - if (posOfSpace <= 0) { - posOfSpace = maxStringLength - 1; - } - - printStr = remainingStr.substring(0, posOfSpace + 1); - remainingStr = remainingStr.substring(posOfSpace + 1); - } //else just print - else { - printStr = remainingStr; - remainingStr = ""; - } - - instructionsText.append(printStr + "\n"); - - }// while - - }// for - - }//printInstructions() - - //DO NOT call this directly, go through Sysout - public void displayMessage(String messageIn) { - messageText.append(messageIn + "\n"); - System.out.println(messageIn); - } -}// Te diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Cursor/MultiResolutionCursorTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Cursor/MultiResolutionCursorTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Cursor/MultiResolutionCursorTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Cursor/MultiResolutionCursorTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Label; +import java.awt.Point; +import java.awt.Toolkit; +import java.awt.image.BaseMultiResolutionImage; +import java.awt.image.BufferedImage; +import java.lang.reflect.InvocationTargetException; +import javax.swing.JFrame; + +/* + * @test + * @bug 8028212 + * @summary [macosx] Custom Cursor HiDPI support + * @requires (os.family == "mac") + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual MultiResolutionCursorTest + */ +public class MultiResolutionCursorTest { + static final int sizes[] = {8, 16, 32, 128}; + + private static JFrame initialize() { + final Image image = new BaseMultiResolutionImage( + createResolutionVariant(0), + createResolutionVariant(1), + createResolutionVariant(2), + createResolutionVariant(3) + ); + + int center = sizes[0] / 2; + Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor( + image, new Point(center, center), "multi-resolution cursor"); + + JFrame frame = new JFrame("Multi-resolution Cursor Test Frame"); + frame.setSize(300, 300); + frame.add(new Label("Move cursor here")); + frame.setCursor(cursor); + return frame; + } + + private static BufferedImage createResolutionVariant(int i) { + BufferedImage resolutionVariant = new BufferedImage(sizes[i], sizes[i], + BufferedImage.TYPE_INT_RGB); + Graphics2D g2 = resolutionVariant.createGraphics(); + Color colors[] = {Color.WHITE, Color.RED, Color.GREEN, Color.BLUE}; + g2.setColor(colors[i]); + g2.fillRect(0, 0, sizes[i], sizes[i]); + g2.dispose(); + return resolutionVariant; + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + String instructions = """ + Verify that high resolution custom cursor is used + on HiDPI displays. + 1) Run the test on Retina display or enable the Quartz Debug + and select the screen resolution with (HiDPI) label + 2) Move the cursor to the Test Frame + 3) Check that cursor has red, green or blue color + If so, press Pass, else press Fail. + """; + + PassFailJFrame.builder() + .title("Multi-resolution Cursor Test Instructions") + .instructions(instructions) + .rows((int) instructions.lines().count() + 1) + .columns(40) + .testUI(MultiResolutionCursorTest::initialize) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Desktop/BrowseTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Desktop/BrowseTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Desktop/BrowseTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Desktop/BrowseTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -40,10 +40,27 @@ public class BrowseTest extends JPanel { static final String INSTRUCTIONS = """ - This test could launch default file manager to open user's home - directory, and default web browser to show the URL of java vendor. - After test execution close the native file manager and web browser + Set your default browser as per the test platform. + macOS - Safari + windows - MS Edge + linux - Firefox + + This test checks 2 cases: + + 1) Directory URI: + On macOS and windows, verify that a browser window opens and + EITHER the browser OR native file manager shows the user's + home directory. + + On Linux verify that the user's home directory is shown by the + default file manager. + + 2) Web URI: + Verify that the Web URI (URL of java vendor) opens in the browser. + + After test execution close the native file manager and any web browser windows if they were launched by test. + Also check output for any unexpected EXCEPTIONS, if you see any failure messages press Fail otherwise press Pass. """; @@ -53,7 +70,7 @@ URI dirURI = new File(System.getProperty("user.home")).toURI(); URI webURI = URI.create(System.getProperty("java.vendor.url", "http://www.java.com")); - boolean failed = false; + PassFailJFrame.log("Testing 1st case: Directory URI ..."); try { PassFailJFrame.log("Try to browse " + dirURI + " ..."); desktop.browse(dirURI); @@ -62,6 +79,7 @@ PassFailJFrame.log("EXCEPTION: " + e.getMessage()); } + PassFailJFrame.log("Testing 2nd case: Web URI ..."); try { PassFailJFrame.log("Try to browse " + webURI + " ..."); desktop.browse(webURI); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Desktop/EditAndPrintTest/EditAndPrintTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Desktop/EditAndPrintTest/EditAndPrintTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Desktop/EditAndPrintTest/EditAndPrintTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Desktop/EditAndPrintTest/EditAndPrintTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -48,7 +48,7 @@ This test tries to edit and print a directory, which will expectedly raise IOException. Then this test would edit and print a .txt file, which should be successful. After test execution close the editor if it was launched by test. - If you see any EXCEPTION messages in the output press FAIL. + If you see any EXCEPTION messages in case of .txt file in the output press FAIL. """; static Desktop desktop; diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/DesktopProperties/FontSmoothing.java openjdk-21-21.0.10+7/test/jdk/java/awt/DesktopProperties/FontSmoothing.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/DesktopProperties/FontSmoothing.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/DesktopProperties/FontSmoothing.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Frame; +import java.awt.Toolkit; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +/* + * @test + * @bug 4808569 + * @requires (os.family == "windows") + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary add desktop property for the Windows XP or later font smoothing settings + * @run main/manual FontSmoothing + */ + +public class FontSmoothing { + + private static final String PROP_NAME = "win.text.fontSmoothingType"; + + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + This test should be run on Windows XP or later. + + On Windows 11: + 1. Open Run dialog by typing 'run' in search bar. + 2. Type 'cttune' and press Ok. + 3. Uncheck the "Turn On ClearType" checkbox and follow next instructions on screen. + 4. Repeat Step 1-2. + 5. Check the "Turn On ClearType" checkbox and follow next instructions on screen. + 6. Take a look at the output window to determine if the test passed or failed. + """; + + PassFailJFrame.builder() + .title("FontSmoothing Test Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 2) + .columns(40) + .testTimeOut(5) + .testUI(FontSmoothing::createUI) + .logArea(8) + .build() + .awaitAndCheck(); + } + + private static Frame createUI() { + Frame f = new Frame("FontSmoothing Test"); + f.setSize(50, 50); + + Object value = Toolkit.getDefaultToolkit().getDesktopProperty(PROP_NAME); + PassFailJFrame.log("toolkit.getDesktopProperty: " + PROP_NAME + " = " + value + "\n"); + + Toolkit.getDefaultToolkit().addPropertyChangeListener(PROP_NAME, new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + PassFailJFrame.log("PropertyChangeEvent: " + e.getPropertyName() + + "\n old value=" + e.getOldValue() + + "\n new value=" + e.getNewValue()); + + Integer value = (Integer) Toolkit.getDefaultToolkit().getDesktopProperty(PROP_NAME); + PassFailJFrame.log("toolkit.getDesktopProperty:" + PROP_NAME + "=" + value); + + if (value.equals((Integer) e.getNewValue())) { + PassFailJFrame.log("test PASSED"); + } else { + PassFailJFrame.log("test FAILED"); + } + } + }); + return f; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/DesktopProperties/ThreeDBackgroundColor.java openjdk-21-21.0.10+7/test/jdk/java/awt/DesktopProperties/ThreeDBackgroundColor.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/DesktopProperties/ThreeDBackgroundColor.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/DesktopProperties/ThreeDBackgroundColor.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Frame; +import java.awt.Toolkit; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +/* + * @test + * @bug 4368193 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @requires (os.family == "windows") + * @summary Toolkit's getDesktopProperty returns stale values on Microsoft Windows + * @run main/manual ThreeDBackgroundColor + */ + +public class ThreeDBackgroundColor { + + private static final String PROP_NAME = "win.3d.backgroundColor"; + + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + On Windows 10: + 1. Open Windows Settings, in the search bar type + 'high contrast', in the list of suggestions choose option + 'Turn high contrast on or off' + 2. In the High contrast control panel click on the on/off switch + to initialize High contrast mode + 3. Wait for the High contrast mode to finish initialization + 4. Click on the same switch again to turn off High contrast mode + + On Windows 11: + 1. Open Windows settings, in the search bar type + 'Contrast Theme'. + 2. Select any value from 'Contrast themes' dropdown menu and press 'Apply'. + 3. Wait for the High contrast mode to finish initialization + 4. Select 'None' from 'Contrast themes' dropdown menu to revert the changes. + + Take a look at the output window to determine if the test passed or failed."""; + + PassFailJFrame.builder() + .title("ThreeDBackgroundColor Test Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 2) + .columns(40) + .testTimeOut(5) + .testUI(ThreeDBackgroundColor::createUI) + .logArea(8) + .build() + .awaitAndCheck(); + } + + private static Frame createUI() { + Frame f = new Frame("ThreeDBackgroundColor Test"); + f.setSize(50, 50); + + Object value = Toolkit.getDefaultToolkit().getDesktopProperty(PROP_NAME); + PassFailJFrame.log("toolkit.getDesktopProperty:" + PROP_NAME + "=" + value); + + Toolkit.getDefaultToolkit().addPropertyChangeListener(PROP_NAME, new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + PassFailJFrame.log("PropertyChangeEvent: " + e.getPropertyName() + + "\n old value=" + e.getOldValue() + + "\n new value=" + e.getNewValue()); + + Color value = (Color) Toolkit.getDefaultToolkit().getDesktopProperty(PROP_NAME); + PassFailJFrame.log("toolkit.getDesktopProperty:" + PROP_NAME + "=" + value); + if (value.equals((Color) e.getNewValue())) { + PassFailJFrame.log("test PASSED"); + } else { + PassFailJFrame.log("test FAILED"); + } + } + }); + return f; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/FileDialog/DoubleActionESC.java openjdk-21-21.0.10+7/test/jdk/java/awt/FileDialog/DoubleActionESC.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/FileDialog/DoubleActionESC.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/FileDialog/DoubleActionESC.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,12 +34,15 @@ import java.awt.event.KeyEvent; import java.util.concurrent.CountDownLatch; +import static java.util.concurrent.TimeUnit.SECONDS; + /* * @test * @bug 5097243 * @summary Tests that FileDialog can be closed by ESC any time * @key headful * @run main DoubleActionESC + * @run main/othervm -Dsun.awt.disableGtkFileDialogs=true DoubleActionESC */ public class DoubleActionESC { @@ -49,47 +52,48 @@ private static Robot robot; private static volatile Point p; private static volatile Dimension d; - private static volatile CountDownLatch latch; private static final int REPEAT_COUNT = 2; + private static final long LATCH_TIMEOUT = 10; - public static void main(String[] args) throws Exception { - latch = new CountDownLatch(1); + private static final CountDownLatch latch = new CountDownLatch(REPEAT_COUNT); + public static void main(String[] args) throws Exception { robot = new Robot(); - robot.setAutoDelay(100); + robot.setAutoDelay(50); try { EventQueue.invokeAndWait(() -> { createAndShowUI(); }); + robot.waitForIdle(); robot.delay(1000); + EventQueue.invokeAndWait(() -> { p = showBtn.getLocationOnScreen(); d = showBtn.getSize(); }); for (int i = 0; i < REPEAT_COUNT; ++i) { - Thread thread = new Thread(() -> { - robot.mouseMove(p.x + d.width / 2, p.y + d.height / 2); - robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); - robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); - }); - thread.start(); - robot.delay(3000); - - Thread thread1 = new Thread(() -> { - robot.keyPress(KeyEvent.VK_ESCAPE); - robot.keyRelease(KeyEvent.VK_ESCAPE); - robot.waitForIdle(); - }); - thread1.start(); - robot.delay(3000); + robot.mouseMove(p.x + d.width / 2, p.y + d.height / 2); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + robot.delay(1000); + + robot.keyPress(KeyEvent.VK_ESCAPE); + robot.keyRelease(KeyEvent.VK_ESCAPE); + robot.waitForIdle(); + robot.delay(1000); } - latch.await(); - if (fd.isVisible()) { - throw new RuntimeException("File Dialog is not closed"); + if (!latch.await(LATCH_TIMEOUT, SECONDS)) { + throw new RuntimeException("Test failed: Latch timeout reached"); } + EventQueue.invokeAndWait(() -> { + if (fd.isVisible()) { + throw new RuntimeException("File Dialog is not closed"); + } + }); } finally { EventQueue.invokeAndWait(() -> { if (f != null) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Focus/ComponentLostFocusTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/ComponentLostFocusTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Focus/ComponentLostFocusTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/ComponentLostFocusTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,13 +35,20 @@ import java.awt.Frame; import java.awt.KeyboardFocusManager; import java.awt.Point; +import java.awt.Rectangle; import java.awt.Robot; import java.awt.TextField; +import java.awt.Toolkit; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.InputEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.io.File; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import javax.imageio.ImageIO; public class ComponentLostFocusTest { @@ -49,10 +56,10 @@ static TextField tf; static Robot r; static Dialog dialog = null; - static volatile boolean passed; static volatile Point loc; static volatile int width; static volatile int top; + static final CountDownLatch focusGainedLatch = new CountDownLatch(1); private static void createTestUI() { @@ -75,11 +82,7 @@ public static void doTest() { System.out.println("dialog.setVisible.... "); - new Thread(new Runnable() { - public void run() { - dialog.setVisible(true); - } - }).start(); + new Thread(() -> dialog.setVisible(true)).start(); // The bug is that this construction leads to the redundant xRequestFocus // By the way, the requestFocusInWindow() works fine before the fix @@ -98,7 +101,7 @@ tf.addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent e) { System.out.println("TextField gained focus: " + e); - passed = true; + focusGainedLatch.countDown(); } }); @@ -116,6 +119,17 @@ tf.requestFocus(); } + private static void captureScreen() { + try { + final Rectangle screenBounds = new Rectangle( + Toolkit.getDefaultToolkit().getScreenSize()); + ImageIO.write(r.createScreenCapture(screenBounds), + "png", new File("ComponentLostFocusTest.png")); + } catch (Exception e) { + e.printStackTrace(); + } + } + public static final void main(String args[]) throws Exception { r = new Robot(); r.setAutoDelay(100); @@ -138,9 +152,10 @@ System.out.println("Focus owner: " + KeyboardFocusManager.getCurrentKeyboardFocusManager(). getFocusOwner()); - - if (!passed) { - throw new RuntimeException("TextField got no focus! Test failed."); + if (!focusGainedLatch.await(5, TimeUnit.SECONDS)) { + captureScreen(); + throw new RuntimeException("Waited too long, " + + "TextField got no focus! Test failed."); } } finally { EventQueue.invokeAndWait(() -> { @@ -151,4 +166,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Focus/MinimizeNonfocusableWindowTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/MinimizeNonfocusableWindowTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Focus/MinimizeNonfocusableWindowTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/MinimizeNonfocusableWindowTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6399659 + * @summary When minimizing non-focusable window focus shouldn't jump out of the focused window. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual MinimizeNonfocusableWindowTest +*/ + +import java.awt.Frame; +import java.awt.Window; +import java.util.List; + +public class MinimizeNonfocusableWindowTest { + + private static final String INSTRUCTIONS = """ + + You should see three frames: Frame-1, Frame-2 and Unfocusable. + + 1. Click Frame-1 to make it focused window, then click Frame-2. + Minimize Unfocusable frame with the mouse. If Frame-2 is still + the focused window continue testing, otherwise press FAIL. + + 2. Restore Unfocusable frame to normal state. Try to resize by dragging + its edge with left mouse button. It should be resizable. If not press + FAIL. Try the same with right mouse button. It shouldn't resize. + If it does, press FAIL, otherwise press PASS."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("MinimizeNonfocusableWindowTest Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 1) + .columns(40) + .testUI(MinimizeNonfocusableWindowTest::createTestUI) + .build() + .awaitAndCheck(); + } + + private static List createTestUI() { + Frame frame1 = new Frame("Frame-1"); + Frame frame2 = new Frame("Frame-2"); + Frame frame3 = new Frame("Unfocusable"); + frame1.setBounds(100, 0, 200, 100); + frame2.setBounds(100, 150, 200, 100); + frame3.setBounds(100, 300, 200, 100); + + frame3.setFocusableWindowState(false); + + return List.of(frame1, frame2, frame3); + } +} + diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Focus/WindowDisposeFocusTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/WindowDisposeFocusTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Focus/WindowDisposeFocusTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/WindowDisposeFocusTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4257071 4228379 + * @summary Ensures that focus lost is delivered to a lightweight component + in a disposed window + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual WindowDisposeFocusTest +*/ + +import java.awt.Window; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JPanel; + +public class WindowDisposeFocusTest { + + private static final String INSTRUCTIONS = """ + Click on "Second" + Click on close box + When dialog pops up, "Second" should no longer have focus."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("WindowDisposeFocusTest Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 2) + .columns(35) + .testUI(WindowDisposeFocusTest::createTestUI) + .build() + .awaitAndCheck(); + } + + private static Window createTestUI() { + return JFCFocusBug2.test(new String[]{}); + } +} + +class JFCFocusBug2 extends JPanel { + + static public Window test(String[] args) { + final JFrame frame = new JFrame("WindowDisposeFrame"); + frame.setSize(100, 100); + frame.setVisible(true); + + final JFCFocusBug2 bug = new JFCFocusBug2(); + final JDialog dialog = new JDialog(frame, false); + dialog.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + dialog.dispose(); + JDialog dialog2 = new JDialog(frame, false); + dialog2.setContentPane(bug); + dialog2.pack(); + dialog2.setVisible(true); + } + }); + dialog.setContentPane(bug); + dialog.pack(); + dialog.setVisible(true); + return frame; + } + + public JFCFocusBug2() { + _first = new JButton("First"); + _second = new JButton("Second"); + add(_first); + add(_second); + } + + private JButton _first; + private JButton _second; +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Focus/bug6435715.java openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/bug6435715.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Focus/bug6435715.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Focus/bug6435715.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2006, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6435715 + * @summary JButton stops receiving the focusGained event and eventually focus is lost altogether + * @modules java.desktop/sun.awt + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug6435715 + */ + +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; + +public class bug6435715 { + + private static final String INSTRUCTIONS = """ + 1. after test started you will see frame with three buttons. Notice that focus is on Button2. + 2. Click on Button 3. Focus goes to Button3. + 3. Click on Button1 and quickly switch to another window. Via either alt/tab or + clicking another window with the mouse. + 4. After a few seconds, come back to the frame. Notice that focus is around Button2 + 5. Click at Button3. If focus remains at Button2 test failed, if focus is on Button3 - test passed."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug6435715 Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 5) + .columns(35) + .testUI(bug6435715::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + JFrame fr = new JFrame("FocusIssue"); + sun.awt.SunToolkit.setLWRequestStatus(fr, true); + + JPanel panel = new JPanel(); + final JButton b1 = new JButton("Button 1"); + final JButton b2 = new JButton("Button 2"); + final JButton b3 = new JButton("Button 3"); + + panel.add(b1); + panel.add(b2); + panel.add(b3); + + b1.addFocusListener(new FocusAdapter() { + public void focusGained(FocusEvent event) { + synchronized (this) { + try { + wait(1000); + } catch (Exception ex) { + ex.printStackTrace(); + } + b2.requestFocus(); + } + } + }); + fr.getContentPane().add(panel); + fr.pack(); + return fr; + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/FontClass/FontTransformAttributeTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/FontClass/FontTransformAttributeTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/FontClass/FontTransformAttributeTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/FontClass/FontTransformAttributeTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.font.TextAttribute; +import java.awt.font.TransformAttribute; +import java.awt.geom.AffineTransform; +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; + +import javax.swing.JPanel; + +/* + * @test + * @bug 4650042 + * @summary Draw text using a transform to simulate superscript, it should look like a superscript + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual FontTransformAttributeTest + */ + +public class FontTransformAttributeTest extends JPanel { + AttributedCharacterIterator iter; + + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + This test should display a string ending with the superscripted number '11'. + Pass the test if you see the superscript."""; + + PassFailJFrame.builder() + .title("FontTransformAttributeTest Instruction") + .instructions(INSTRUCTIONS) + .columns(35) + .splitUI(FontTransformAttributeTest::new) + .build() + .awaitAndCheck(); + } + + FontTransformAttributeTest() { + AffineTransform superTransform = AffineTransform.getScaleInstance(0.65, 0.65); + superTransform.translate(0, -7); + TransformAttribute superAttribute = new TransformAttribute(superTransform); + String s = "a big number 7 11"; + AttributedString as = new AttributedString(s); + as.addAttribute(TextAttribute.TRANSFORM, superAttribute, 15, 17); + iter = as.getIterator(); + setBackground(Color.WHITE); + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(200, 100); + } + + @Override + public void paint(Graphics g) { + Graphics2D g2 = (Graphics2D) g; + Dimension d = getSize(); + g2.drawString(iter, 20, d.height / 2 + 8); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/FontClass/FontUnderscoreTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/FontClass/FontUnderscoreTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/FontClass/FontUnderscoreTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/FontClass/FontUnderscoreTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; + +import javax.swing.JPanel; + +/* + * @test + * @bug 4248579 + * @summary Make sure the underscore glyph appears in the different strings + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual FontUnderscoreTest + */ + +public class FontUnderscoreTest extends JPanel { + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + Make sure all 8 underscore characters appear in each + of the 3 strings. + + Press PASS if all 8 are there, else FAIL."""; + + PassFailJFrame.builder() + .title("FontUnderscoreTest Instruction") + .instructions(INSTRUCTIONS) + .columns(35) + .splitUI(FontUnderscoreTest::new) + .build() + .awaitAndCheck(); + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(550, 230); + } + + @Override + public void paint(Graphics g) { + Font f = new Font(Font.SANS_SERIF, Font.PLAIN, 24); + g.setFont(f); + g.drawString ("8 underscore characters appear in each string", 5, 200); + + g.drawString("J_A_V_A_2_j_a_v_a", 25, 50); + + f = new Font(Font.SERIF, Font.PLAIN, 24); + g.setFont(f); + g.drawString("J_A_V_A_2_j_a_v_a", 25, 100); + + f = new Font(Font.MONOSPACED, Font.PLAIN, 24); + g.setFont(f); + g.drawString("J_A_V_A_2_j_a_v_a", 25, 150); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.html openjdk-21-21.0.10+7/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.html --- openjdk-21-21.0.9+10/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.html 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ - - - - - - ShownOnPack - - - -

ShownOnPack
Bug ID: 6525850

- -

See the dialog box (usually in upper left corner) for instructions

- - - - diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.java openjdk-21-21.0.10+7/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Frame/ShownOnPack/ShownOnPack.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -21,208 +21,48 @@ * questions. */ +import java.awt.EventQueue; +import java.awt.Frame; + /* - test - @bug 6525850 - @summary Iconified frame gets shown after pack() - @author anthony.petrov@...: area=awt.toplevel - @run applet/manual=yesno ShownOnPack.html + * @test + * @bug 6525850 + * @summary Iconified frame gets shown after pack() + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ShownOnPack */ +public class ShownOnPack { -/** - * ShownOnPack.java - * - * summary: - */ - -import java.applet.Applet; -import java.awt.*; - -public class ShownOnPack extends Applet -{ - //Declare things used in the test, like buttons and labels here - Frame f; - - public void init() - { - //Create instructions for the user here, as well as set up - // the environment -- set the layout manager, add buttons, - // etc. - this.setLayout (new BorderLayout ()); - - String[] instructions = - { - "This test creates an invisible and iconified frame that should not become visible.", - "If you observe the window titled 'Should NOT BE SHOWN' in the taskbar, press FAIL,", - "else press PASS" - }; - Sysout.createDialogWithInstructions( instructions ); - - }//End init() - - public void start () - { - //Get things going. Request focus, set size, et cetera - setSize (200,200); - setVisible(true); - validate(); - - //What would normally go into main() will probably go here. - //Use System.out.println for diagnostic messages that you want - // to read after the test is done. - //Use Sysout.println for messages you want the tester to read. - f = new Frame("Should NOT BE SHOWN"); - f.setExtendedState(Frame.ICONIFIED); - f.pack(); - }// start() - - //The rest of this class is the actions which perform the test... - - //Use Sysout.println to communicate with the user NOT System.out!! - //Sysout.println ("Something Happened!"); - -}// class ShownOnPack - -/* Place other classes related to the test after this line */ - + private static final String INSTRUCTIONS = """ + This test creates an invisible and iconified frame that should not become visible. - - - -/**************************************************** - Standard Test Machinery - DO NOT modify anything below -- it's a standard - chunk of code whose purpose is to make user - interaction uniform, and thereby make it simpler - to read and understand someone else's test. - ****************************************************/ - -/** - This is part of the standard test machinery. - It creates a dialog (with the instructions), and is the interface - for sending text messages to the user. - To print the instructions, send an array of strings to Sysout.createDialog - WithInstructions method. Put one line of instructions per array entry. - To display a message for the tester to see, simply call Sysout.println - with the string to be displayed. - This mimics System.out.println but works within the test harness as well - as standalone. - */ - -class Sysout -{ - private static TestDialog dialog; - - public static void createDialogWithInstructions( String[] instructions ) - { - dialog = new TestDialog( new Frame(), "Instructions" ); - dialog.printInstructions( instructions ); - dialog.setVisible(true); - println( "Any messages for the tester will display here." ); + If you observe the window titled 'Should NOT BE SHOWN' in the taskbar, + press FAIL, otherwise press PASS + """; + + static Frame frame; + + public static void main(String[] args) throws Exception { + PassFailJFrame shownOnPackInstructions = PassFailJFrame + .builder() + .title("ShownOnPack Instructions") + .instructions(INSTRUCTIONS) + .rows(5) + .columns(50) + .build(); + + EventQueue.invokeAndWait(() -> { + frame = new Frame("Should NOT BE SHOWN"); + frame.setExtendedState(Frame.ICONIFIED); + frame.pack(); + }); + + try { + shownOnPackInstructions.awaitAndCheck(); + } finally { + EventQueue.invokeAndWait(() -> frame.dispose()); + } } - - public static void createDialog( ) - { - dialog = new TestDialog( new Frame(), "Instructions" ); - String[] defInstr = { "Instructions will appear here. ", "" } ; - dialog.printInstructions( defInstr ); - dialog.setVisible(true); - println( "Any messages for the tester will display here." ); - } - - - public static void printInstructions( String[] instructions ) - { - dialog.printInstructions( instructions ); - } - - - public static void println( String messageIn ) - { - dialog.displayMessage( messageIn ); - } - -}// Sysout class - -/** - This is part of the standard test machinery. It provides a place for the - test instructions to be displayed, and a place for interactive messages - to the user to be displayed. - To have the test instructions displayed, see Sysout. - To have a message to the user be displayed, see Sysout. - Do not call anything in this dialog directly. - */ -class TestDialog extends Dialog -{ - - TextArea instructionsText; - TextArea messageText; - int maxStringLength = 80; - - //DO NOT call this directly, go through Sysout - public TestDialog( Frame frame, String name ) - { - super( frame, name ); - int scrollBoth = TextArea.SCROLLBARS_BOTH; - instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth ); - add( "North", instructionsText ); - - messageText = new TextArea( "", 5, maxStringLength, scrollBoth ); - add("Center", messageText); - - pack(); - - setVisible(true); - }// TestDialog() - - //DO NOT call this directly, go through Sysout - public void printInstructions( String[] instructions ) - { - //Clear out any current instructions - instructionsText.setText( "" ); - - //Go down array of instruction strings - - String printStr, remainingStr; - for( int i=0; i < instructions.length; i++ ) - { - //chop up each into pieces maxSringLength long - remainingStr = instructions[ i ]; - while( remainingStr.length() > 0 ) - { - //if longer than max then chop off first max chars to print - if( remainingStr.length() >= maxStringLength ) - { - //Try to chop on a word boundary - int posOfSpace = remainingStr. - lastIndexOf( ' ', maxStringLength - 1 ); - - if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1; - - printStr = remainingStr.substring( 0, posOfSpace + 1 ); - remainingStr = remainingStr.substring( posOfSpace + 1 ); - } - //else just print - else - { - printStr = remainingStr; - remainingStr = ""; - } - - instructionsText.append( printStr + "\n" ); - - }// while - - }// for - - }//printInstructions() - - //DO NOT call this directly, go through Sysout - public void displayMessage( String messageIn ) - { - messageText.append( messageIn + "\n" ); - System.out.println(messageIn); - } - -}// TestDialog class +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/FullScreen/NonfocusableFrameFullScreenTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/FullScreen/NonfocusableFrameFullScreenTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/FullScreen/NonfocusableFrameFullScreenTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/FullScreen/NonfocusableFrameFullScreenTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.GraphicsEnvironment; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JPanel; + +/* + * @test + * @bug 6225472 6682536 + * @requires (os.family != "linux") + * @summary Tests that non-focusable Frame in full-screen mode overlaps the task bar. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual NonfocusableFrameFullScreenTest + */ + +public class NonfocusableFrameFullScreenTest extends JPanel { + boolean fullscreen = false; + + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + 1. Press "Show Frame" button to show a Frame with two buttons. + + 2. Press the button "To Full Screen" to bring the frame to + full-screen mode: + + The frame should overlap the taskbar + + 3. Press "To Windowed" button: + The frame should return to its original size. + The frame shouldn't be alwaysOnTop. + + 4. Press "Set Always On Top" button and make sure the frame + is alwaysOnTop, then press "To Full Screen" button + and then "To Windowed" button: + + The frame should return to its original size keeping alwaysOnTop + state on. + + Press Pass if everything is as expected."""; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(45) + .testUI(NonfocusableFrameFullScreenTest::new) + .build() + .awaitAndCheck(); + } + + private NonfocusableFrameFullScreenTest() { + Button b = new Button("Show Frame"); + b.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + showFrame(); + } + }); + setLayout(new BorderLayout()); + add(b, BorderLayout.CENTER); + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(200, 100); + } + + public void showFrame() { + Frame frame = new Frame("Test Frame"); + + Button button = new Button("To Full Screen"); + button.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (fullscreen) { + GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(). + setFullScreenWindow(null); + button.setLabel("To Full Screen"); + fullscreen = false; + } else { + GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(). + setFullScreenWindow(frame); + button.setLabel("To Windowed"); + fullscreen = true; + } + frame.validate(); + } + }); + + Button button2 = new Button("Set Always On Top"); + button2.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (frame.isAlwaysOnTop()) { + button2.setLabel("Set Always On Top"); + frame.setAlwaysOnTop(false); + } else { + button2.setLabel("Set Not Always On Top"); + frame.setAlwaysOnTop(true); + } + frame.validate(); + } + }); + + frame.setLayout(new BorderLayout()); + frame.add(button, BorderLayout.WEST); + frame.add(button2, BorderLayout.EAST); + frame.setBounds(400, 200, 350, 100); + frame.setFocusableWindowState(false); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Graphics/GDIResourceExhaustionTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/GDIResourceExhaustionTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Graphics/GDIResourceExhaustionTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/GDIResourceExhaustionTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,121 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.imageio.ImageIO; +import java.awt.AWTException; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.Label; +import java.awt.Panel; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; + +/* + * @test + * @bug 4191297 + * @summary Tests that unreferenced GDI resources are correctly + * destroyed when no longer needed. + * @key headful + * @run main GDIResourceExhaustionTest + */ + +public class GDIResourceExhaustionTest extends Frame { + public void initUI() { + setSize(200, 200); + setUndecorated(true); + setLocationRelativeTo(null); + Panel labelPanel = new Panel(); + Label label = new Label("Red label"); + label.setBackground(Color.red); + labelPanel.add(label); + labelPanel.setLocation(20, 50); + add(labelPanel); + setVisible(true); + } + + public void paint(Graphics graphics) { + super.paint(graphics); + for (int rgb = 0; rgb <= 0xfff; rgb++) { + graphics.setColor(new Color(rgb)); + graphics.fillRect(0, 0, 5, 5); + } + } + + public void requestCoordinates(Rectangle r) { + Insets insets = getInsets(); + Point location = getLocationOnScreen(); + Dimension size = getSize(); + r.x = location.x + insets.left; + r.y = location.y + insets.top; + r.width = size.width - (insets.left + insets.right); + r.height = size.height - (insets.top + insets.bottom); + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException, IOException { + GDIResourceExhaustionTest test = new GDIResourceExhaustionTest(); + try { + EventQueue.invokeAndWait(test::initUI); + Robot robot = new Robot(); + robot.delay(2000); + Rectangle coords = new Rectangle(); + EventQueue.invokeAndWait(() -> { + test.requestCoordinates(coords); + }); + robot.mouseMove(coords.x - 50, coords.y - 50); + robot.waitForIdle(); + robot.delay(5000); + BufferedImage capture = robot.createScreenCapture(coords); + robot.delay(500); + boolean redFound = false; + int redRGB = Color.red.getRGB(); + for (int y = 0; y < capture.getHeight(); y++) { + for (int x = 0; x < capture.getWidth(); x++) { + if (capture.getRGB(x, y) == redRGB) { + redFound = true; + break; + } + if (redFound) { + break; + } + } + } + if (!redFound) { + File errorImage = new File("screenshot.png"); + ImageIO.write(capture, "png", errorImage); + throw new RuntimeException("Red label is not detected, possibly GDI resources exhausted"); + } + } finally { + EventQueue.invokeAndWait(test::dispose); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Graphics/RepeatedRepaintTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/RepeatedRepaintTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Graphics/RepeatedRepaintTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/RepeatedRepaintTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,137 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.image.BufferedImage; +import java.lang.reflect.InvocationTargetException; + +/* + * @test + * @bug 4081126 4129709 + * @summary Test for proper repainting on multiprocessor systems. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual RepeatedRepaintTest + */ +public class RepeatedRepaintTest extends Frame { + private Font font = null; + private Image background; + + static String INSTRUCTIONS = """ + The frame next to this window called "AWT Draw Test" has + some elements drawn on it. Move this window partially outside of the + screen bounds and then drag it back. Repeat it couple of times. + Drag the instructions window over the frame partially obscuring it. + If after number of attempts the frame content stops repainting + press "Fail", otherwise press "Pass". + """; + + public RepeatedRepaintTest() { + setTitle("AWT Draw Test"); + setSize(300, 300); + background = new BufferedImage(300, 300, BufferedImage.TYPE_INT_ARGB); + Graphics g = background.getGraphics(); + g.setColor(Color.black); + g.fillRect(0, 0, 300, 300); + g.dispose(); + } + + public void paint(Graphics g) { + Dimension dim = this.getSize(); + super.paint(g); + g.drawImage(background, 0, 0, dim.width, dim.height, null); + g.setColor(Color.white); + if (font == null) { + font = new Font("SansSerif", Font.PLAIN, 24); + } + g.setFont(font); + FontMetrics metrics = g.getFontMetrics(); + String message = "Draw Test"; + g.drawString(message, (dim.width / 2) - (metrics.stringWidth(message) / 2), + (dim.height / 2) + (metrics.getHeight() / 2)); + + int counter = 50; + for (int i = 0; i < 50; i++) { + counter += 4; + g.drawOval(counter, 50, i, i); + } + + counter = 20; + for (int i = 0; i < 100; i++) { + counter += 4; + g.drawOval(counter, 150, i, i); + } + g.setColor(Color.black); + g.drawLine(0, dim.height - 25, dim.width, dim.height - 25); + g.setColor(Color.gray); + g.drawLine(0, dim.height - 24, dim.width, dim.height - 24); + g.setColor(Color.lightGray); + g.drawLine(0, dim.height - 23, dim.width, dim.height - 23); + g.fillRect(0, dim.height - 22, dim.width, dim.height); + + + g.setXORMode(Color.blue); + g.fillRect(0, 0, 25, dim.height - 26); + g.setColor(Color.red); + g.fillRect(0, 0, 25, dim.height - 26); + g.setColor(Color.green); + g.fillRect(0, 0, 25, dim.height - 26); + g.setPaintMode(); + + Image img = createImage(50, 50); + Graphics imgGraphics = img.getGraphics(); + imgGraphics.setColor(Color.magenta); + imgGraphics.fillRect(0, 0, 50, 50); + imgGraphics.setColor(Color.yellow); + imgGraphics.drawString("offscreen", 0, 20); + imgGraphics.drawString("image", 0, 30); + + g.drawImage(img, dim.width - 100, dim.height - 100, Color.blue, null); + + g.setXORMode(Color.white); + drawAt(g, 100, 100, 50, 50); + drawAt(g, 105, 105, 50, 50); + drawAt(g, 110, 110, 50, 50); + } + + public void drawAt(Graphics g, int x, int y, int width, int height) { + g.setColor(Color.magenta); + g.fillRect(x, y, width, height); + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .title("Repeated Repaint Test Instructions") + .instructions(INSTRUCTIONS) + .testUI(RepeatedRepaintTest::new) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Graphics/SmallPrimitives.java openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/SmallPrimitives.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Graphics/SmallPrimitives.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/SmallPrimitives.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Panel; +import java.awt.Polygon; +import java.awt.geom.GeneralPath; +import java.awt.geom.Line2D; +import java.lang.reflect.InvocationTargetException; + +/* + * @test + * @bug 4411814 4298688 4205762 4524760 4067534 + * @summary Check that Graphics rendering primitives function + * correctly when fed small and degenerate shapes + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual SmallPrimitives + */ + + +public class SmallPrimitives extends Panel { + + static String INSTRUCTIONS = """ + In the borderless frame next to this window there should be a + set of tiny narrow blue polygons painted next to the green rectangles. + If rectangle is vertical the corresponding polygon is painted to the right of it, + if rectangle is horizontal the polygon is painted below it. + The length of the polygon should be roughly the same as the length of the + green rectangle next to it. If size is significantly different or any of the + polygons is not painted press "Fail" otherwise press "Pass". + Note: one may consider using screen magnifier to compare sizes. + """; + + public void paint(Graphics g) { + Dimension d = getSize(); + Polygon p; + GeneralPath gp; + + g.setColor(Color.white); + g.fillRect(0, 0, d.width, d.height); + + // Reposition for horizontal tests (below) + g.translate(0, 20); + + // Reference shapes + g.setColor(Color.green); + g.fillRect(10, 7, 11, 1); + g.fillRect(10, 17, 11, 2); + g.fillRect(10, 27, 11, 1); + g.fillRect(10, 37, 11, 1); + g.fillRect(10, 47, 11, 2); + g.fillRect(10, 57, 11, 2); + g.fillRect(10, 67, 11, 1); + g.fillRect(10, 77, 11, 2); + g.fillRect(10, 87, 11, 1); + g.fillRect(10, 97, 11, 1); + g.fillRect(10, 107, 11, 1); + g.fillRect(10, 117, 6, 1); g.fillRect(20, 117, 6, 1); + + // Potentially problematic test shapes + g.setColor(Color.blue); + g.drawRect(10, 10, 10, 0); + g.drawRect(10, 20, 10, 1); + g.drawRoundRect(10, 30, 10, 0, 0, 0); + g.drawRoundRect(10, 40, 10, 0, 4, 4); + g.drawRoundRect(10, 50, 10, 1, 0, 0); + g.drawRoundRect(10, 60, 10, 1, 4, 4); + g.drawOval(10, 70, 10, 0); + g.drawOval(10, 80, 10, 1); + p = new Polygon(); + p.addPoint(10, 90); + p.addPoint(20, 90); + g.drawPolyline(p.xpoints, p.ypoints, p.npoints); + p = new Polygon(); + p.addPoint(10, 100); + p.addPoint(20, 100); + g.drawPolygon(p.xpoints, p.ypoints, p.npoints); + ((Graphics2D) g).draw(new Line2D.Double(10, 110, 20, 110)); + gp = new GeneralPath(); + gp.moveTo(10, 120); + gp.lineTo(15, 120); + gp.moveTo(20, 120); + gp.lineTo(25, 120); + ((Graphics2D) g).draw(gp); + + // Polygon limit tests + p = new Polygon(); + trypoly(g, p); + p.addPoint(10, 120); + trypoly(g, p); + + // Reposition for vertical tests (below) + g.translate(20, -20); + + // Reference shapes + g.setColor(Color.green); + g.fillRect(7, 10, 1, 11); + g.fillRect(17, 10, 2, 11); + g.fillRect(27, 10, 1, 11); + g.fillRect(37, 10, 1, 11); + g.fillRect(47, 10, 2, 11); + g.fillRect(57, 10, 2, 11); + g.fillRect(67, 10, 1, 11); + g.fillRect(77, 10, 2, 11); + g.fillRect(87, 10, 1, 11); + g.fillRect(97, 10, 1, 11); + g.fillRect(107, 10, 1, 11); + g.fillRect(117, 10, 1, 6); g.fillRect(117, 20, 1, 6); + + // Potentially problematic test shapes + g.setColor(Color.blue); + g.drawRect(10, 10, 0, 10); + g.drawRect(20, 10, 1, 10); + g.drawRoundRect(30, 10, 0, 10, 0, 0); + g.drawRoundRect(40, 10, 0, 10, 4, 4); + g.drawRoundRect(50, 10, 1, 10, 0, 0); + g.drawRoundRect(60, 10, 1, 10, 4, 4); + g.drawOval(70, 10, 0, 10); + g.drawOval(80, 10, 1, 10); + p = new Polygon(); + p.addPoint(90, 10); + p.addPoint(90, 20); + g.drawPolyline(p.xpoints, p.ypoints, p.npoints); + p = new Polygon(); + p.addPoint(100, 10); + p.addPoint(100, 20); + g.drawPolygon(p.xpoints, p.ypoints, p.npoints); + ((Graphics2D) g).draw(new Line2D.Double(110, 10, 110, 20)); + gp = new GeneralPath(); + gp.moveTo(120, 10); + gp.lineTo(120, 15); + gp.moveTo(120, 20); + gp.lineTo(120, 25); + ((Graphics2D) g).draw(gp); + + // Polygon limit tests + p = new Polygon(); + trypoly(g, p); + p.addPoint(110, 10); + trypoly(g, p); + + // Reposition for oval tests + g.translate(0, 20); + + for (int i = 0, xy = 8; i < 11; i++) { + g.setColor(Color.green); + g.fillRect(xy, 5, i, 1); + g.fillRect(5, xy, 1, i); + g.setColor(Color.blue); + g.fillOval(xy, 8, i, 1); + g.fillOval(8, xy, 1, i); + xy += i + 2; + } + + g.translate(10, 10); + for (int i = 0, xy = 9; i < 6; i++) { + g.setColor(Color.green); + g.fillRect(xy, 5, i, 2); + g.fillRect(5, xy, 2, i); + g.setColor(Color.blue); + g.fillOval(xy, 8, i, 2); + g.fillOval(8, xy, 2, i); + xy += i + 2; + } + } + + public static void trypoly(Graphics g, Polygon p) { + g.drawPolygon(p); + g.drawPolygon(p.xpoints, p.ypoints, p.npoints); + g.drawPolyline(p.xpoints, p.ypoints, p.npoints); + g.fillPolygon(p); + g.fillPolygon(p.xpoints, p.ypoints, p.npoints); + } + + public Dimension getPreferredSize() { + return new Dimension(150, 150); + } + + public static Frame createFrame() { + Frame f = new Frame(); + SmallPrimitives sp = new SmallPrimitives(); + sp.setLocation(0, 0); + f.add(sp); + f.setUndecorated(true); + f.pack(); + return f; + } + + public static void main(String argv[]) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .title("Small Primitives Instructions") + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(SmallPrimitives::createFrame) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Graphics/TextAfterXor.java openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/TextAfterXor.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Graphics/TextAfterXor.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Graphics/TextAfterXor.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Panel; +import java.awt.RenderingHints; +import java.awt.image.VolatileImage; +import java.lang.reflect.InvocationTargetException; + +/* + * @test + * @bug 4505650 + * @summary Check that you can render solid text after doing XOR mode + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual TextAfterXor + */ + +public class TextAfterXor extends Panel { + public static final int TESTW = 300; + public static final int TESTH = 100; + static String INSTRUCTIONS = """ + In the window called "Text After XOR Test" there should be two + composite components, at the bottom of each component the green text + "Test passes if this is green!" should be visible. + + On the top component this text should be green on all platforms. + On the bottom component it is possible that on non-Windows + platforms text can be of other color or not visible at all. + That does not constitute a problem. + + So if platform is Windows and green text appears twice or on any + other platform green text appears at least once press "Pass", + otherwise press "Fail". + """; + + VolatileImage vimg; + + public void paint(Graphics g) { + render(g); + g.drawString("(Drawing to screen)", 10, 60); + if (vimg == null) { + vimg = createVolatileImage(TESTW, TESTH); + } + do { + vimg.validate(null); + Graphics g2 = vimg.getGraphics(); + render(g2); + String not = vimg.getCapabilities().isAccelerated() ? "" : "not "; + g2.drawString("Image was " + not + "accelerated", 10, 55); + g2.drawString("(only matters on Windows)", 10, 65); + g2.dispose(); + g.drawImage(vimg, 0, TESTH, null); + } while (vimg.contentsLost()); + } + + public void render(Graphics g) { + g.setColor(Color.black); + g.fillRect(0, 0, TESTW, TESTH); + g.setColor(Color.white); + g.fillRect(5, 5, TESTW-10, TESTH-10); + + g.setColor(Color.black); + g.drawString("Test only passes if green string appears", 10, 20); + + g.setColor(Color.white); + g.setXORMode(Color.blue); + g.drawRect(30, 30, 10, 10); + g.setPaintMode(); + g.setColor(Color.green); + + ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + g.drawString("Test passes if this is green!", 10, 80); + + g.setColor(Color.black); + } + + public Dimension getPreferredSize() { + return new Dimension(TESTW, TESTH*2); + } + + public static Frame createFrame() { + Frame f = new Frame("Text After XOR Test"); + f.add(new TextAfterXor()); + f.pack(); + return f; + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .title("Text After XOR Instructions") + .instructions(INSTRUCTIONS) + .testUI(TextAfterXor::createFrame) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/GridBagLayout/ComponentShortage.java openjdk-21-21.0.10+7/test/jdk/java/awt/GridBagLayout/ComponentShortage.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/GridBagLayout/ComponentShortage.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/GridBagLayout/ComponentShortage.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2008, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4238932 + * @summary JTextField in gridBagLayout does not properly set MinimumSize + * @key headful + * @run main ComponentShortage + */ + +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Robot; +import javax.swing.JFrame; +import javax.swing.JTextField; + +public class ComponentShortage { + static final int WIDTH_REDUCTION = 50; + static JFrame frame; + static JTextField jtf; + static volatile Dimension size; + static volatile Dimension fSize; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + EventQueue.invokeAndWait(() -> { + frame = new JFrame(); + frame.setLayout(new GridBagLayout()); + GridBagConstraints gBC = new GridBagConstraints(); + + gBC.gridx = 1; + gBC.gridy = 0; + gBC.gridwidth = 1; + gBC.gridheight = 1; + gBC.weightx = 1.0; + gBC.weighty = 0.0; + gBC.fill = GridBagConstraints.NONE; + gBC.anchor = GridBagConstraints.NORTHWEST; + jtf = new JTextField(16); + frame.add(jtf, gBC); + frame.pack(); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + + EventQueue.invokeAndWait(() -> { + size = jtf.getSize(); + }); + System.out.println("TextField size before Frame's width reduction : " + size); + + EventQueue.invokeAndWait(() -> { + frame.setSize(frame.getSize().width - WIDTH_REDUCTION, frame.getSize().height); + }); + frame.repaint(); + + EventQueue.invokeAndWait(() -> { + size = jtf.getSize(); + fSize = frame.getSize(); + }); + System.out.println("TextField size after Frame's width reduction : " + size); + + if (size.width < fSize.width - WIDTH_REDUCTION) { + throw new RuntimeException("Width of JTextField is too small to be visible."); + } + System.out.println("Test passed."); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Icon/ChildFrameIconTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Icon/ChildFrameIconTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Icon/ChildFrameIconTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Icon/ChildFrameIconTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +/* + * @test + * @bug 4284610 + * @summary Tests that a child of the non-resizable dialog acquires valid icon. + * @requires (os.family == "windows") + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ChildFrameIconTest + */ + +public class ChildFrameIconTest { + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + Press "Show Dialog" button to open a dialog with this message: + Do you see a coffee cup icon in the upper left corner ? + + Look at the icon in the upper left corner of the message dialog. + + Press Pass if you see default coffee cup icon else press Fail."""; + + PassFailJFrame.builder() + .title("ChildFrameIconTest Instruction") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ChildFrameIconTest::createUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createUI() { + JFrame f = new JFrame("ChildFrameIconTest UI"); + JButton b = new JButton("Show Dialog"); + b.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + String msg = "Do you see a coffee cup icon in the upper left corner ?"; + JDialog dlg = new JDialog(f, "Non-resizable JDialog", false); + dlg.setResizable(false); + JOptionPane.showMessageDialog(dlg, msg); + } + }); + f.add(b); + f.setSize(250, 100); + return f; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.html openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.html --- openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.html 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ - - - - - DiacriticsTest - - - - -Test run requires the following keyboard layouts to be installed: -Linux OS: English (US, alternative international) -Windows OS: Hungarian -A keyboard layout having compose function or compose-like key. Programmer -Dvorak (http://www.kaufmann.no/roland/dvorak/) is suggested to use. - -To test JDK-8000423 fix (Linux only!): -please switch to US alternative international layout and try to type diacritics -(using the following combinations: `+e; `+u; etc.) - -To test JDK-7197619 fix (Windows only!): -please switch to Hungarian keyboard layout and try to type diacritics -(Ctrl+Alt+2 e; Ctrl+Alt+2 E) - -To test JDK-8139189 fix: -please switch to Programmer Dvorak keyboard layout try to type diacritics -using compose combinations (Compose+z+d, Compose+z+Shift+d). The Compose key -in Programmer Dvorak layout is OEM102 the key which is located between -Left Shift and Z keys on the standard 102-key keyboard. - -If you can do that then the test is passed; otherwise failed. - - diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/DiacriticsTest/DiacriticsTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -21,30 +21,94 @@ * questions. */ - -/* - @test - @bug 8000423 7197619 8025649 - @summary Check if diacritical signs could be typed for TextArea and TextField - @run applet/manual=yesno DiacriticsTest.html -*/ - - -import java.applet.Applet; -import java.awt.*; +import jdk.test.lib.Platform; +import java.awt.GridLayout; +import java.awt.TextArea; +import java.awt.TextField; import javax.swing.JPanel; +/* + * @test + * @bug 8000423 7197619 8025649 + * @summary Check if diacritical signs could be typed for TextArea and TextField + * @requires (os.family == "windows" | os.family == "linux") + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame jdk.test.lib.Platform + * @run main/manual DiacriticsTest + */ -public class DiacriticsTest extends Applet { +public class DiacriticsTest { - public void init() { - this.setLayout(new BorderLayout()); + private static final String INSTRUCTIONS_WIN = """ + Test run requires the following keyboard layouts to be installed: + - Hungarian + - A keyboard layout having compose function or compose-like key. Programmer + Dvorak (http://www.kaufmann.no/roland/dvorak/) is suggested to use. + + To the right are a text area and a text field, you should check the behavior + for both of them. + + To test the JDK-7197619 fix: + Please switch to Hungarian keyboard layout and try to type diacritics + (Ctrl+Alt+2 e; Ctrl+Alt+2 E) + + To test the JDK-8139189 fix: + Please switch to Programmer Dvorak keyboard layout try to type diacritics + using compose combinations (Compose+z+d, Compose+z+Shift+d). + + The Compose key in the Programmer Dvorak layout is OEM102, the key located + between the and Z keys on a standard 102-key keyboard. + If you do not have this key on your keyboard, you can skip this part of the test. + + If you can do that then the test is passed; otherwise failed. + """; + + private static final String INSTRUCTIONS_LIN = """ + Test run requires the following keyboard layouts to be installed: + - English (US, alternative international), aka English (US, alt. intl.) + - A keyboard layout having compose function or compose-like key. Programmer + Dvorak (http://www.kaufmann.no/roland/dvorak/) is suggested to use. + + To the right are a text area and a text field, you should check the behavior + for both of them. + + To test the JDK-8000423 fix: + Please switch to US alternative international layout and try to type diacritics + (using the following combinations: `+e; `+u; etc.) + + To test the JDK-8139189 fix: + Please switch to Programmer Dvorak keyboard layout try to type diacritics + using compose combinations (Compose+z+d, Compose+z+Shift+d).. + + The Compose key in the Programmer Dvorak layout is OEM102, the key located + between the and Z keys on a standard 102-key keyboard. + + If the above key does not work in the Gnome shell, + it can be overridden in the system preferences: + System > Keyboard > Special character entry > Compose key + and set it to another key(e.g. menu key or scroll lock.) + + If you can do that then the test is passed; otherwise failed. + """; + + public static void main(String[] args) throws Exception { + String instructions = Platform.isWindows() + ? INSTRUCTIONS_WIN + : INSTRUCTIONS_LIN; + + PassFailJFrame + .builder() + .title("DiacriticsTest Instructions") + .instructions(instructions) + .splitUIRight(DiacriticsTest::createPanel) + .testTimeOut(10) + .rows((int) instructions.lines().count() + 2) + .columns(50) + .build() + .awaitAndCheck(); } - public void start() { - - setSize(350, 200); - + public static JPanel createPanel() { JPanel panel = new JPanel(); panel.setLayout(new GridLayout(2, 1)); @@ -54,10 +118,6 @@ TextField txtField = new TextField(); panel.add(txtField); - add(panel, BorderLayout.CENTER); - - validate(); - setVisible(true); + return panel; } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.html openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.html --- openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.html 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ - - - - - SpanishDiacriticsTest - - - - -Test run requires the following keyboard layout to be installed: -Windows OS: Spanish (United States) with 'Latin American' keyboard layout - -1. A frame with a text field should be displayed at upper left corner -2. Set focus to the text field and switch to Spanish with 'Latin American' keyboard layout -3. Type the following: ' ' o - i.e. single quote two times (using [ key on US keyboard) then o character. - -If you the text field displays ''o, (i.e. o should be without acute) then the test is passed; otherwise failed. - - diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 8169355 - * @summary Check if Spanish diacritical signs could be typed for TextField - * @author Dmitry Markov - * @run applet/manual=yesno SpanishDiacriticsTest.html -*/ - -import javax.swing.*; -import java.applet.Applet; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.util.concurrent.locks.LockSupport; - -public class SpanishDiacriticsTest extends Applet { - @Override - public void init() { - SwingUtilities.invokeLater(() -> { - JFrame frame = new JFrame(); - JTextField textField = new JTextField(20); - textField.addKeyListener(new KeyAdapter() { - @Override - public void keyTyped(KeyEvent e) { - LockSupport.parkNanos(1_000_000_000L); - } - }); - frame.add(textField); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - frame.pack(); - frame.setVisible(true); - }); - } -} - diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/InputMethods/SpanishDiacriticsTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8169355 + * @summary Check if Spanish diacritical signs could be typed for TextField + * @requires (os.family == "windows") + * @library /java/awt/regtesthelpers + * @run main/manual SpanishDiacriticsTest +*/ + + +import java.util.concurrent.locks.LockSupport; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import javax.swing.JFrame; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; +import javax.swing.WindowConstants; + +public class SpanishDiacriticsTest { + + static final String INSTRUCTIONS = """ + This test requires the following keyboard layout to be installed: + Windows OS: Spanish (United States) with 'Latin American' keyboard layout. + If using a US layout, the results should still be as described but + you have not tested the real bug. + + 1. A frame with a text field should be displayed. + 2. Set focus to the text field and switch to Spanish + with 'Latin American' keyboard layout. + 3. Type the following: ' ' o - i.e. single quote two times, then o. + If your keyboard has a US physical layout the [ key can be used + to type the single quote when in 'Latin American' keyboard mode. + 4. Type these characters at a normal speed but do NOT be concerned + that they take several seconds to display. That is an + expected behaviour for this test. + + If the text field displays the same three characters you typed: ''o + (i.e. two single quotes followed by o without an acute) + then press Pass; otherwise press Fail. + """; + + public static void main(String[] args) throws Exception { + + PassFailJFrame.builder() + .title("Spanish Diacritics") + .instructions(INSTRUCTIONS) + .rows(20) + .columns(50) + .testUI(SpanishDiacriticsTest::createTestUI) + .build() + .awaitAndCheck(); + } + + static JFrame createTestUI() { + JFrame frame = new JFrame("Spanish Diacritics Test Frame"); + JTextField textField = new JTextField(20); + textField.addKeyListener(new KeyAdapter() { + @Override + public void keyTyped(KeyEvent e) { + LockSupport.parkNanos(1_000_000_000L); + } + }); + frame.add(textField); + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + frame.pack(); + return frame; + } +} + diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/List/ListEnterExitTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListEnterExitTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/List/ListEnterExitTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListEnterExitTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,16 +36,24 @@ import java.awt.Point; import java.awt.Robot; -import java.awt.event.InputEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + public class ListEnterExitTest { final List list = new List(); - final MouseEnterExitListener mouseEnterExitListener = new MouseEnterExitListener(); Frame frame; volatile Point p; + private static final int X_OFFSET = 30; + private static final int Y_OFFSET = 40; + private static final int LATCH_TIMEOUT = 3; + + private final CountDownLatch mouseEnterLatch = new CountDownLatch(1); + private final CountDownLatch mouseExitLatch = new CountDownLatch(1); + public static void main(String[] args) throws Exception { ListEnterExitTest test = new ListEnterExitTest(); test.start(); @@ -57,7 +65,11 @@ frame = new Frame("ListEnterExitTest"); list.add("Item 1"); list.add("Item 2"); - list.addMouseListener(mouseEnterExitListener); + list.add("Item 3"); + list.add("Item 4"); + list.add("Item 5"); + list.add("Item 6"); + list.addMouseListener(new MouseEnterExitListener()); frame.add(list); frame.setLayout(new FlowLayout()); frame.setSize(300, 200); @@ -66,25 +78,28 @@ }); final Robot robot = new Robot(); - robot.delay(1000); + robot.setAutoDelay(100); robot.waitForIdle(); + robot.delay(1000); EventQueue.invokeAndWait(() -> { p = list.getLocationOnScreen(); }); - robot.mouseMove(p.x + 10, p.y + 10); - robot.delay(100); + robot.mouseMove(p.x + X_OFFSET, p.y + Y_OFFSET); robot.waitForIdle(); - robot.mouseMove(p.x - 10, p.y - 10); - robot.delay(100); + + robot.mouseMove(p.x - X_OFFSET, p.y + Y_OFFSET); robot.waitForIdle(); - robot.mouseMove(p.x + 10, p.y + 10); - robot.mousePress(InputEvent.BUTTON1_MASK); - robot.mouseRelease(InputEvent.BUTTON1_MASK); + robot.mouseMove(p.x + X_OFFSET, p.y + Y_OFFSET); + robot.waitForIdle(); + + if (!mouseEnterLatch.await(LATCH_TIMEOUT, TimeUnit.SECONDS)) { + throw new RuntimeException("Mouse enter event timeout"); + } - synchronized (mouseEnterExitListener) { - mouseEnterExitListener.wait(2000); + if (!mouseExitLatch.await(LATCH_TIMEOUT, TimeUnit.SECONDS)) { + throw new RuntimeException("Mouse exit event timeout"); } } finally { EventQueue.invokeAndWait(() -> { @@ -93,35 +108,19 @@ } }); } - if (!mouseEnterExitListener.isPassed()) { - throw new RuntimeException("Haven't receive mouse enter/exit events"); - } - } -} - -class MouseEnterExitListener extends MouseAdapter { - - volatile boolean passed_1 = false; - volatile boolean passed_2 = false; - - public void mouseEntered(MouseEvent e) { - passed_1 = true; - } - - public void mouseExited(MouseEvent e) { - passed_2 = true; - } - - public void mousePressed(MouseEvent e) { - synchronized (this) { - System.out.println("mouse pressed"); - this.notifyAll(); + private class MouseEnterExitListener extends MouseAdapter { + @Override + public void mouseEntered(MouseEvent e) { + System.out.println("Mouse Entered Event"); + mouseEnterLatch.countDown(); } - } - public boolean isPassed() { - return passed_1 & passed_2; + @Override + public void mouseExited(MouseEvent e) { + System.out.println("Mouse Exited Event"); + mouseExitLatch.countDown(); + } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/List/ListScrollbarCursorTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListScrollbarCursorTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/List/ListScrollbarCursorTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListScrollbarCursorTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4290684 + * @summary Tests that cursor on the scrollbar of the list is set to default. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ListScrollbarCursorTest + */ + +import java.awt.Cursor; +import java.awt.Frame; +import java.awt.List; +import java.awt.Panel; + +public class ListScrollbarCursorTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. You see the list in the middle of the panel. + This list has two scrollbars. + 2. The cursor should have a shape of hand over the main area + and a shape of arrow over scrollbars. + 3. Move the mouse cursor to either horizontal or vertical scrollbar. + 4. Press PASS if you see the default arrow cursor else press FAIL. + """; + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ListScrollbarCursorTest::initialize) + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + Frame frame = new Frame("List Scrollbar Cursor Test"); + Panel panel = new Panel(); + List list = new List(3); + list.add("List item with a very long name" + + "(just to make the horizontal scrollbar visible)"); + list.add("Item 2"); + list.add("Item 3"); + list.setCursor(new Cursor(Cursor.HAND_CURSOR)); + panel.add(list); + frame.add(panel); + frame.setSize(200, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/List/ListScrollbarTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListScrollbarTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/List/ListScrollbarTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/List/ListScrollbarTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,197 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4096445 + * @summary Test to verify List Scollbar appears/disappears automatically + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ListScrollbarTest + */ + +import java.awt.Button; +import java.awt.Component; +import java.awt.Event; +import java.awt.Frame; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.List; + +public class ListScrollbarTest extends Frame { + static final int ITEMS = 10; + List ltList; + List rtList; + + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. There are two lists added to the Frame separated by + a column of buttons + 2. Double click on any item(s) on the left list, you would see + a '*' added at the end of the item + 3. Keep double clicking on the same item till the length of the + item exceeds the width of the list + 4. Now, if you don't get the horizontal scrollbar on + the left list click FAIL. + 5. If you get horizontal scrollbar, select the item + (that you double clicked) and press the '>' button + to move the item to the right list. + 6. If horizontal scroll bar appears on the right list + as well as disappears from the left list [only if both + happen] proceed with step 8 else click FAIL + 7. Now move the same item to the left list, by pressing + '<' button + 8. If the horizontal scrollbar appears on the left list + and disappears from the right list[only if both happen] + click PASS else click FAIL. + """; + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ListScrollbarTest::new) + .build() + .awaitAndCheck(); + } + + public ListScrollbarTest() { + super("List scroll bar test"); + GridBagLayout gbl = new GridBagLayout(); + ltList = new List(ITEMS, true); + rtList = new List(0, true); + setLayout(gbl); + add(ltList, 0, 0, 1, 5, 1.0, 1.0); + add(rtList, 2, 0, 1, 5, 1.0, 1.0); + add(new Button(">"), 1, 0, 1, 1, 0, 1.0); + add(new Button(">>"), 1, 1, 1, 1, 0, 1.0); + add(new Button("<"), 1, 2, 1, 1, 0, 1.0); + add(new Button("<<"), 1, 3, 1, 1, 0, 1.0); + add(new Button("!"), 1, 4, 1, 1, 0, 1.0); + + for (int i = 0; i < ITEMS; i++) { + ltList.addItem("item " + i); + } + setSize(220, 250); + } + + void add(Component comp, int x, int y, int w, int h, double weightx, double weighty) { + GridBagLayout gbl = (GridBagLayout) getLayout(); + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.BOTH; + c.gridx = x; + c.gridy = y; + c.gridwidth = w; + c.gridheight = h; + c.weightx = weightx; + c.weighty = weighty; + add(comp); + gbl.setConstraints(comp, c); + } + + void reverseSelections(List l) { + for (int i = 0; i < l.countItems(); i++) { + if (l.isSelected(i)) { + l.deselect(i); + } else { + l.select(i); + } + } + } + + void deselectAll(List l) { + for (int i = 0; i < l.countItems(); i++) { + l.deselect(i); + } + } + + void replaceItem(List l, String item) { + for (int i = 0; i < l.countItems(); i++) { + if (l.getItem(i).equals(item)) { + l.replaceItem(item + "*", i); + } + } + } + + void move(List l1, List l2, boolean all) { + + // if all the items are to be moved + if (all) { + for (int i = 0; i < l1.countItems(); i++) { + l2.addItem(l1.getItem(i)); + } + l1.delItems(0, l1.countItems() - 1); + } else { // else move the selected items + String[] items = l1.getSelectedItems(); + int[] itemIndexes = l1.getSelectedIndexes(); + + deselectAll(l2); + for (int i = 0; i < items.length; i++) { + l2.addItem(items[i]); + l2.select(l2.countItems() - 1); + if (i == 0) { + l2.makeVisible(l2.countItems() - 1); + } + } + for (int i = itemIndexes.length - 1; i >= 0; i--) { + l1.delItem(itemIndexes[i]); + } + } + } + + @Override + public boolean action(Event evt, Object arg) { + if (">".equals(arg)) { + move(ltList, rtList, false); + } else if (">>".equals(arg)) { + move(ltList, rtList, true); + } else if ("<".equals(arg)) { + move(rtList, ltList, false); + } else if ("<<".equals(arg)) { + move(rtList, ltList, true); + } else if ("!".equals(arg)) { + if (ltList.getSelectedItems().length > 0) { + reverseSelections(ltList); + } else if (rtList.getSelectedItems().length > 0) { + reverseSelections(rtList); + } + } else if (evt.target == rtList || evt.target == ltList) { + replaceItem((List) evt.target, (String) arg); + } else { + return false; + } + return true; + } + + @Override + public boolean handleEvent(Event evt) { + if (evt.id == Event.LIST_SELECT + || evt.id == Event.LIST_DESELECT) { + if (evt.target == ltList) { + deselectAll(rtList); + } else if (evt.target == rtList) { + deselectAll(ltList); + } + return true; + } + return super.handleEvent(evt); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/List/MouseDraggedOriginatedByScrollBarTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/List/MouseDraggedOriginatedByScrollBarTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/List/MouseDraggedOriginatedByScrollBarTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/List/MouseDraggedOriginatedByScrollBarTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,41 +24,46 @@ /* * @test * @bug 6240151 + * @key headful * @summary XToolkit: Dragging the List scrollbar initiates DnD - * @library /java/awt/regtesthelpers - * @build PassFailJFrame - * @run main/manual MouseDraggedOriginatedByScrollBarTest + * @requires os.family == "linux" + * @run main MouseDraggedOriginatedByScrollBarTest */ +import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.List; -import java.awt.event.MouseMotionAdapter; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.InputEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionAdapter; public class MouseDraggedOriginatedByScrollBarTest { - - private static final String INSTRUCTIONS = """ - 1) Click and drag the scrollbar of the list. - 2) Keep dragging till the mouse pointer goes out the scrollbar. - 3) The test failed if you see messages about events. The test passed if you don't."""; + private static Frame frame; + private static volatile Point loc; + private static List list; + private static final int XOFFSET = 10; + private static final int YOFFSET = 20; public static void main(String[] args) throws Exception { - PassFailJFrame.builder() - .title("MouseDraggedOriginatedByScrollBarTest Instructions") - .instructions(INSTRUCTIONS) - .rows((int) INSTRUCTIONS.lines().count() + 2) - .columns(35) - .testUI(MouseDraggedOriginatedByScrollBarTest::createTestUI) - .logArea() - .build() - .awaitAndCheck(); + try { + EventQueue.invokeAndWait(() -> createUI()); + test(); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } } - private static Frame createTestUI() { - Frame frame = new Frame(); - List list = new List(4, false); + private static void createUI() { + frame = new Frame(); + list = new List(4, false); list.add("000"); list.add("111"); @@ -77,27 +82,52 @@ new MouseMotionAdapter(){ @Override public void mouseDragged(MouseEvent me){ - PassFailJFrame.log(me.toString()); + System.out.println(me); + throw new RuntimeException("Mouse dragged event detected."); } }); list.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent me) { - PassFailJFrame.log(me.toString()); + System.out.println(me); + throw new RuntimeException("Mouse pressed event detected."); } public void mouseReleased(MouseEvent me) { - PassFailJFrame.log(me.toString()); + System.out.println(me); + throw new RuntimeException("Mouse released event detected."); } public void mouseClicked(MouseEvent me){ - PassFailJFrame.log(me.toString()); + System.out.println(me); + throw new RuntimeException("Mouse clicked event detected."); } }); frame.setLayout(new FlowLayout()); frame.pack(); - return frame; + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private static void test() throws Exception { + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(1000); + robot.setAutoWaitForIdle(true); + + EventQueue.invokeAndWait(() -> { + Point p = list.getLocationOnScreen(); + p.translate(list.getWidth() - XOFFSET, YOFFSET); + loc = p; + }); + robot.mouseMove(loc.x, loc.y); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + for (int i = 0; i < 30; i++) { + robot.mouseMove(loc.x, loc.y + i); + } + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.delay(100); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Menu/MenuActionEventTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/MenuActionEventTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Menu/MenuActionEventTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/MenuActionEventTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4094620 + * @summary MenuItem.enableEvents does not work + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual MenuActionEventTest + */ + +import java.awt.AWTEvent; +import java.awt.BorderLayout; +import java.awt.Frame; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.event.ActionEvent; + +public class MenuActionEventTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Click on the Menu and then on Menuitem on the frame. + 2. If you find the following message being printed in + the test log area:, + _MenuItem: action event", + click PASS, else click FAIL" + """; + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(MenuActionEventTest::initialize) + .logArea() + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + Frame f = new Frame("Menu Action Event Test"); + f.setLayout(new BorderLayout()); + f.setMenuBar(new MenuBar()); + Menu m = new _Menu("Menu"); + MenuBar mb = f.getMenuBar(); + mb.add(m); + MenuItem mi = new _MenuItem("Menuitem"); + m.add(mi); + f.setBounds(204, 152, 396, 300); + return f; + } + + static class _Menu extends Menu { + public _Menu(String text) { + super(text); + enableEvents(AWTEvent.ACTION_EVENT_MASK); + } + + @Override + protected void processActionEvent(ActionEvent e) { + PassFailJFrame.log("_Menu: action event"); + super.processActionEvent(e); + } + } + + static class _MenuItem extends MenuItem { + public _MenuItem(String text) { + super(text); + enableEvents(AWTEvent.ACTION_EVENT_MASK); + } + + @Override + protected void processActionEvent(ActionEvent e) { + PassFailJFrame.log("_MenuItem: action event"); + super.processActionEvent(e); + } + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Menu/MenuVisibilityTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/MenuVisibilityTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Menu/MenuVisibilityTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/MenuVisibilityTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 5046491 6423258 + * @summary CheckboxMenuItem: menu text is missing from test frame + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual MenuVisibilityTest +*/ + +import java.awt.Frame; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; + +public class MenuVisibilityTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Press on a MenuBar with a long name. + 2. Select "First item" in an opened menu. + If you see that "First menu item was pressed" in + the test log area, press PASS + Otherwise press FAIL" + """; + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(MenuVisibilityTest::initialize) + .logArea() + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + Frame frame = new Frame("Menu visibility test"); + String menuTitle = "I_have_never_seen_so_long_Menu_Title_" + + "!_ehe-eha-ehu-ehi_ugu-gu!!!_;)_BANG_BANG..."; + MenuBar menubar = new MenuBar(); + Menu menu = new Menu(menuTitle); + MenuItem menuItem = new MenuItem("First item"); + menuItem.addActionListener(e -> + PassFailJFrame.log("First menu item was pressed.")); + menu.add(menuItem); + menubar.add(menu); + frame.setMenuBar(menubar); + frame.setSize(100, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Menu/RmInHideTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/RmInHideTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Menu/RmInHideTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/RmInHideTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,152 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4039387 + * @summary Checks that calling Frame.remove() within hide() doesn't + * cause SEGV + * @key headful + * @run main RmInHideTest + */ + +import java.awt.Button; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; + +public class RmInHideTest { + static volatile Point point; + static RmInHideTestFrame frame; + static volatile Dimension dimension; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + EventQueue.invokeAndWait(() -> { + frame = new RmInHideTestFrame(); + frame.setSize(200, 200); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + EventQueue.invokeAndWait(() -> { + point = frame.getButtonLocation(); + dimension = frame.getButtonDimension(); + }); + robot.mouseMove(point.x + dimension.width / 2, point.y + dimension.height / 2); + robot.mousePress(MouseEvent.BUTTON2_DOWN_MASK); + robot.mouseRelease(MouseEvent.BUTTON2_DOWN_MASK); + robot.waitForIdle(); + robot.delay(100); + System.out.println("Test pass"); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + static class RmInHideTestFrame extends Frame implements ActionListener { + MenuBar menubar = null; + Button b; + + public RmInHideTestFrame() { + super("RmInHideTest"); + b = new Button("Hide"); + b.setActionCommand("hide"); + b.addActionListener(this); + add("Center", b); + + MenuBar bar = new MenuBar(); + + Menu menu = new Menu("Test1", true); + menu.add(new MenuItem("Test1A")); + menu.add(new MenuItem("Test1B")); + menu.add(new MenuItem("Test1C")); + bar.add(menu); + + menu = new Menu("Test2", true); + menu.add(new MenuItem("Test2A")); + menu.add(new MenuItem("Test2B")); + menu.add(new MenuItem("Test2C")); + bar.add(menu); + setMenuBar(bar); + } + + @Override + public Dimension minimumSize() { + return new Dimension(200, 200); + } + + @Override + public void actionPerformed(ActionEvent e) { + String cmd = e.getActionCommand(); + if (cmd.equals("hide")) { + hide(); + try { + Thread.currentThread().sleep(2000); + } catch (InterruptedException ex) { + // do nothing + } + show(); + } + } + + @Override + public void hide() { + menubar = getMenuBar(); + if (menubar != null) { + remove(menubar); + } + super.hide(); + } + + + @Override + public void show() { + if (menubar != null) { + setMenuBar(menubar); + } + super.show(); + } + + public Point getButtonLocation() { + return b.getLocationOnScreen(); + } + + public Dimension getButtonDimension() { + return b.getSize(); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Menu/SetShortCutTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/SetShortCutTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Menu/SetShortCutTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Menu/SetShortCutTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,132 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4203208 + * @summary setShortcut method does not display proper text on Menu component + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual SetShortCutTest + */ + +import java.awt.Frame; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.MenuShortcut; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; + +import static java.awt.event.KeyEvent.VK_META; +import static java.awt.event.KeyEvent.VK_SHIFT; + +public class SetShortCutTest { + public static void main(String[] args) throws Exception { + boolean isMac = System.getProperty("os.name").startsWith("Mac"); + String shortcut = "Ctrl+Shift+"; + if (isMac) { + shortcut = KeyEvent.getKeyText(VK_SHIFT) + "+" + KeyEvent.getKeyText(VK_META); + } + + String INSTRUCTIONS = """ + 1. Select menuitem 'Stuff -> Second' once to remove 'File -> First'. + 2. Select menuitem 'Stuff -> Second' again to add 'File -> First'. + 3. If menuitem 'File -> First' reads First """ + shortcut + """ + 'C', press PASS. Otherwise press FAIL. + """; + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(SetShortCutTest::initialize) + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + return new TestMenuShortCut(); + } + + static class TestMenuShortCut extends Frame implements ActionListener { + Menu menu1; + MenuItem item1; + MenuItem item2; + boolean beenHere; + + public TestMenuShortCut() { + setTitle("Set ShortCut test"); + beenHere = false; + MenuBar mTopMenu = buildMenu(); + setSize(300, 300); + this.setMenuBar(mTopMenu); + } + + public MenuBar buildMenu() { + MenuBar bar; + bar = new MenuBar(); + menu1 = new Menu("File"); + item1 = new MenuItem("First"); + menu1.add(item1); + item1.setShortcut(new MenuShortcut(KeyEvent.VK_C, true)); + bar.add(menu1); + + // Stuff menu + item2 = new MenuItem("Second"); + Menu menu2 = new Menu("Stuff"); + menu2.add(item2); + item2.setShortcut(new MenuShortcut(KeyEvent.VK_C, false)); + bar.add(menu2); + + item1.addActionListener(this); + item2.addActionListener(this); + return bar; + } + + @Override + public void actionPerformed(ActionEvent event) { + if (event.getSource() == item1) { + Frame temp = new Frame("Accelerator key is working for 'First'"); + temp.setSize(300, 50); + temp.setVisible(true); + } + + // Click on the "Stuff" menu to remove the "first" menu item + else if (event.getSource() == item2) { + // If the item has not been removed from the menu, + // then remove "First" from the "File" menu + if (beenHere == false) { + item1.removeActionListener(this); + menu1.remove(item1); + beenHere = true; + } else { + item1 = new MenuItem("First"); + menu1.add(item1); + item1.addActionListener(this); + item1.setShortcut(new MenuShortcut(KeyEvent.VK_C, true)); + beenHere = false; + } + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Modal/AddRemoveTransientForsTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/AddRemoveTransientForsTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Modal/AddRemoveTransientForsTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/AddRemoveTransientForsTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Button; +import java.awt.Dialog; +import java.awt.Frame; + +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; + +/* + * @test + * @bug 6271779 + * @summary This test shows and hides a modal dialog several times without destroying its + * peer. Without the fix this may lead to application (or even WM) hang. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual AddRemoveTransientForsTest + */ + +public class AddRemoveTransientForsTest { + + private static Dialog d1; + private static Dialog d2; + + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + When the test starts, a frame is shown with a button 'Show Dialog D1'. + + 1. Press the button 'Show Dialog D1' to show a modal dialog D1 with a button + 'Show dialog D2'. + + 2. Press the button 'Show dialog D2' to show another modal dialog D2 with a button + 'Close'. + + 3. Press the button 'Close' to close dialog D2. + + 4. Repeat steps 2 and 3 several times (at least 3-4 times). + + If the application is not hung, press Pass. + + NOTE: all the modal dialogs must be closed before pressing Pass button."""; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(45) + .testUI(AddRemoveTransientForsTest::init) + .build() + .awaitAndCheck(); + } + + public static Frame init() { + Frame f = new Frame("AddRemoveTransientForsTest Frame"); + Button b = new Button("Show dialog D1"); + b.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + d1.setVisible(true); + } + }); + f.add(b); + f.setSize(200, 100); + + WindowListener wl = new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) + { + e.getWindow().dispose(); + } + }; + + d1 = new Dialog(f, "D1", true); + d1.setBounds(200, 200, 200, 100); + d1.addWindowListener(wl); + Button b1 = new Button("Show dialog D2"); + b1.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + d2.setVisible(true); + } + }); + d1.add(b1); + + d2 = new Dialog(d1, "D2", true); + d2.setBounds(300, 300, 200, 100); + Button b2 = new Button("Close"); + b2.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + d2.setVisible(false); + } + }); + d2.add(b2); + + return f; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Modal/DialogLosesFocusTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/DialogLosesFocusTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Modal/DialogLosesFocusTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/DialogLosesFocusTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Dialog; +import java.awt.EventQueue; +import java.awt.Frame; + +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; + +/* + * @test + * @bug 6278150 + * @key headful + * @summary Initially modal blocked window causes modal dialog to lose focus + * @run main DialogLosesFocusTest + */ + +public class DialogLosesFocusTest { + private static Frame parent; + private static Dialog dialog; + private static Frame blocked; + private static volatile boolean failed; + + public static void main(String[] args) throws Exception { + try { + createAndShowUI(); + + sleepForMsecs(10000); + + if (failed) { + throw new RuntimeException("Test Failed"); + } + } finally { + EventQueue.invokeAndWait(() -> { + if (parent != null) { + parent.dispose(); + } + if (dialog != null) { + dialog.dispose(); + } + if (blocked != null) { + blocked.dispose(); + } + }); + } + } + + public static void createAndShowUI() throws Exception { + EventQueue.invokeAndWait(() -> { + parent = new Frame("Parent frame"); + parent.setBounds(0, 0, 300, 100); + parent.setVisible(true); + }); + + sleepForMsecs(1000); + + EventQueue.invokeLater(() -> { + dialog = new Dialog(parent, "Modal dialog", Dialog.ModalityType.APPLICATION_MODAL); + dialog.setBounds(100, 120, 300, 100); + dialog.setVisible(true); + }); + + sleepForMsecs(1000); + + EventQueue.invokeAndWait(() -> { + blocked = new Frame("Blocked frame"); + blocked.setBounds(200, 240, 300, 100); + blocked.addWindowListener(new WindowAdapter() { + @Override + public void windowActivated(WindowEvent we) { + if (dialog.isVisible()) { + failed = true; + } + } + }); + blocked.setVisible(true); + }); + } + + private static void sleepForMsecs(int t) { + try { + Thread.sleep(t); + } catch (Exception z) {} + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Modal/NativeDialogToFrontBackTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/NativeDialogToFrontBackTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Modal/NativeDialogToFrontBackTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Modal/NativeDialogToFrontBackTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2006, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Button; +import java.awt.Dialog; +import java.awt.FileDialog; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.util.List; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.print.PageFormat; +import java.awt.print.PrinterJob; + +/* + * @test + * @bug 6393608 + * @summary Tests that toBack/toFront methods works correctly for native dialogs + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual NativeDialogToFrontBackTest + */ + +public class NativeDialogToFrontBackTest { + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + When the test starts two frames appear: 'Control' and 'Blocked' + 1. Click on the 'Show file dialog' button + 2. Drag the file dialog so it partially overlaps the 'Blocked' frame + 3. 'Blocked' frame must be below the file dialog, if not - press Fail + 3. Click on the 'Blocked to front' button + 4. 'Blocked' frame must still be below the file dialog, if not - press Fail + 5. Close the file dialog + 6. Repeat steps 2 to 4 with print and page dialogs using the corresponding button + 7. If 'Blocked' frame is always below File/Print/Page dialog, press Pass"""; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(45) + .testUI(NativeDialogToFrontBackTest::init) + .positionTestUI(WindowLayouts::rightOneColumn) + .build() + .awaitAndCheck(); + } + + public static List init() { + Frame blocked = new Frame("Blocked"); + blocked.setSize(200, 200); + + Frame control = new Frame("Control"); + control.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE); + control.setLayout(new FlowLayout()); + + Button showFileDialog = new Button("Show file dialog"); + showFileDialog.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + new FileDialog(control, "File dialog").setVisible(true); + } + }); + control.add(showFileDialog); + + Button showPrintDialog = new Button("Show print dialog"); + showPrintDialog.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + PrinterJob.getPrinterJob().printDialog(); + } + }); + control.add(showPrintDialog); + + Button showPageDialog = new Button("Show page dialog"); + showPageDialog.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + PrinterJob.getPrinterJob().pageDialog(new PageFormat()); + } + }); + control.add(showPageDialog); + + Button blockedToFront = new Button("Blocked to front"); + blockedToFront.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + blocked.toFront(); + } + }); + control.add(blockedToFront); + + control.setSize(200, 200); + return List.of(control, blocked); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Multiscreen/DialogTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/DialogTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Multiscreen/DialogTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/DialogTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Button; +import java.awt.Color; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.GraphicsConfiguration; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.Point; +import java.awt.ScrollPane; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.WindowConstants; + +import jtreg.SkippedException; + +/* + * @test + * @bug 4368500 + * @key multimon + * @summary Dialog needs a constructor with GraphicsConfiguration + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame + * @run main/manual DialogTest + */ + +public class DialogTest { + static GraphicsDevice[] gds; + + private static Frame f; + private static Frame dummyFrame = new Frame(); + private static Dialog dummyDialog = new Dialog(dummyFrame); + + public static void main(String[] args) throws Exception { + gds = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(); + if (gds.length < 2) { + throw new SkippedException("You have only one monitor in your system" + + " - test skipped"); + } + + String INSTRUCTIONS = """ + This test tests the multiscreen functionality of Dialogs and JDialogs. + You should see the message "X screens detected", where X + is the number of screens on your system. If X is incorrect, press Fail. + + In the test window, there are a list of buttons representing each + type of dialog for each screen. + If there aren't buttons for every screen in your system, press Fail. + + Press each button, and the indicated type of dialog should appear + on the indicated screen. + Modal dialogs should not allow to click on the Instructions or + DialogTest windows. + + The buttons turn yellow once they have been pressed, to keep track + of test progress. + + If all Dialogs appear correctly, press Pass. + If Dialogs appear on the wrong screen or don't behave in + proper modality, press Fail."""; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .logArea(5) + .testUI(DialogTest::init) + .build() + .awaitAndCheck(); + } + + public static Frame init() { + PassFailJFrame.log(gds.length + " screens detected."); + f = new Frame("DialogTest UI"); + f.setSize(400, 400); + MyScrollPane sp = new MyScrollPane(); + + Panel p = new Panel(); + p.setLayout(new GridLayout(0, 1)); + + for (int i = 0; i < gds.length; i++) { + Button btn; + + //screen # , modal, frame-owned, swing + btn = new MyButton(new DialogInfo(i, false, false, false)); + p.add(btn); + + btn = new MyButton(new DialogInfo(i, true, false, false)); + p.add(btn); + + btn = new MyButton(new DialogInfo(i, false, true, false)); + p.add(btn); + + btn = new MyButton(new DialogInfo(i, true, true, false)); + p.add(btn); + + btn = new MyButton(new DialogInfo(i, false, false, true)); + p.add(btn); + + btn = new MyButton(new DialogInfo(i, true, false, true)); + p.add(btn); + + btn = new MyButton(new DialogInfo(i, false, true, true)); + p.add(btn); + + btn = new MyButton(new DialogInfo(i, true, true, true)); + p.add(btn); + + } + sp.add(p); + f.add(sp); + return f; + } + + static class MyScrollPane extends ScrollPane { + @Override + public Dimension getPreferredSize() { + return f.getSize(); + } + } + + static class MyButton extends Button { + public MyButton(DialogInfo info) { + setLabel(info.toString()); + addActionListener(new PutupDialog(info)); + } + } + + static class PutupDialog implements ActionListener { + DialogInfo info; + + public PutupDialog(DialogInfo info) { + this.info = info; + } + + @Override + public void actionPerformed(ActionEvent e) { + ((Button) (e.getSource())).setBackground(Color.yellow); + Dialog d = info.createDialog(); + d.show(); + } + } + + static class DialogInfo { + int num; + boolean modal; + boolean frameOwned; + boolean swing; + + public DialogInfo(int num, boolean modal, boolean frameOwned, boolean swing) { + this.num = num; + this.modal = modal; + this.frameOwned = frameOwned; + this.swing = swing; + } + + public Dialog createDialog() { + GraphicsConfiguration gc = gds[num].getDefaultConfiguration(); + + Dialog d; + + if (swing) { + if (frameOwned) { + d = new JDialog(dummyFrame, toString(), modal, gc); + } else { + d = new JDialog(dummyDialog, toString(), modal, gc); + } + + ((JDialog) d).setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); + if (modal) { + ((JDialog) d).getContentPane().add(new JLabel("Check that I am modal!")); + } + } else { + if (frameOwned) { + d = new Dialog(dummyFrame, toString(), modal, gc); + } else { + d = new Dialog(dummyDialog, toString(), modal, gc); + } + + d.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + e.getComponent().hide(); + } + }); + if (modal) { + d.add(new Label("Check that I am modal!")); + } + } + + d.setLocation(new Point((int) (gc.getBounds().getX() + 20) + , (int) (gc.getBounds().getY() + 20))); + d.setSize(300, 100); + + return d; + } + + public String toString() { + return "Screen " + num + (frameOwned ? " Frame-owned" : " Dialog-owned") + + (modal ? " modal " : " non-modal ") + + (swing ? "JDialog" : "Dialog"); + } + } +} + + diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Multiscreen/FillThisScreen.java openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/FillThisScreen.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Multiscreen/FillThisScreen.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/FillThisScreen.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Button; +import java.awt.Frame; +import java.awt.GraphicsConfiguration; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.GridLayout; +import java.awt.Rectangle; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import jtreg.SkippedException; + +/* + * @test + * @bug 4356756 + * @key multimon + * @summary Return all screen devices for physical and virtual display devices + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame + * @run main/manual FillThisScreen + */ + +public class FillThisScreen { + private static Frame f; + private static Button b; + private static Rectangle oldSize; + private static boolean fillmode = true; + static GraphicsDevice[] gs; + + public static void main(String[] args) throws Exception { + gs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(); + if (gs.length < 2) { + throw new SkippedException("You have only one monitor in your system" + + " - test skipped"); + } + + String INSTRUCTIONS = """ + This test is for testing the bounds of a multimonitor system. + You will see a Frame with several buttons: one marked 'Fill + This Screen' and an additional button for each display on your system. + + First, drag the Frame onto each display and click the + 'Fill This Screen' button. + + The Frame should resize to take up the entire display area + of the screen it is on, and the button text changes to say, + 'Get Smaller'. + + Click the button again to restore the Frame. + + Next, use the 'Move to screen' buttons to move the Frame to + each display and again click the 'Fill This Screen' button. + + If the number of 'Move to Screen' buttons is not equals to + the number of screens on your system, the test fails. + + If the Frame always correctly resizes to take up ONLY the + entire screen it is on (and not a different screen, or all + screens), the test passes else it fails."""; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(FillThisScreen::init) + .build() + .awaitAndCheck(); + } + + public static Frame init() { + Button tempBtn; + + f = new Frame("Drag Me Around"); + f.setLayout(new GridLayout(0, 1)); + + b = new Button("Fill This Screen"); + b.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (fillmode) { + oldSize = f.getBounds(); + Rectangle r = f.getGraphicsConfiguration().getBounds(); + f.setBounds(r); + b.setLabel("Get Smaller"); + } else { + f.setBounds(oldSize); + b.setLabel("Fill This Screen"); + } + fillmode = !fillmode; + } + }); + f.add(b); + + for (int i = 0; i < gs.length; i++) { + tempBtn = new Button("Move to screen:" + i); + tempBtn.addActionListener(new WinMover(i)); + f.add(tempBtn); + } + f.setSize(300, 100); + return f; + } + + private static class WinMover implements ActionListener { + int scrNum; + + public WinMover(int scrNum) { + this.scrNum = scrNum; + } + + public void actionPerformed(ActionEvent e) { + Rectangle newBounds = gs[scrNum].getDefaultConfiguration().getBounds(); + f.setLocation(newBounds.x + newBounds.width / 2, + newBounds.y + newBounds.height / 2); + } + + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Multiscreen/IMCandidateWindowTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/IMCandidateWindowTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Multiscreen/IMCandidateWindowTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/IMCandidateWindowTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.FlowLayout; +import java.awt.GraphicsConfiguration; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.Rectangle; + +import javax.swing.JFrame; +import javax.swing.JTextField; + +import jtreg.SkippedException; + +/* + * @test + * @bug 4805862 + * @key multimon + * @requires (os.family == "windows") + * @summary Tests IM candidate window is positioned correctly for the + * text components inside a window in multiscreen configurations, if + * this window has negative coordinates + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame + * @run main/manual IMCandidateWindowTest + */ + +public class IMCandidateWindowTest { + static GraphicsConfiguration gc; + + public static void main(String[] args) throws Exception { + GraphicsDevice[] gds = GraphicsEnvironment.getLocalGraphicsEnvironment() + .getScreenDevices(); + if (gds.length < 2) { + throw new SkippedException("You have only one monitor in your system" + + " - test skipped"); + } + + GraphicsDevice gd = null; + + for (int i = 0; i < gds.length; i++) { + gc = gds[i].getDefaultConfiguration(); + if ((gc.getBounds().x < 0) || (gc.getBounds().y < 0)) { + gd = gds[i]; + break; + } + } + + if (gd == null) { + // no screens with negative coords + throw new SkippedException("No screens with negative coords - test skipped"); + } + + String INSTRUCTIONS = """ + This test is for windows + Test requirements: installed support for asian languages + Chinese (PRC) w/ Chinese QuanPing input method. + Multiscreen environment where one of the monitors has negative coords + Go to the text field in the opened Frame. Switch to Chinese language and + start typing "ka". + Note, that IM helper window is appeared. + If this window is appeared near the text field, press PASS button. + If this window is appeared at the edge of the screen or on another + screen, press FAIL button"""; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(IMCandidateWindowTest::createUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createUI() { + Rectangle b = gc.getBounds(); + + JFrame f = new JFrame("Frame", gc); + f.setBounds(b.x + b.width / 2 - 150, b.y + b.height / 2 - 100, 300, 200); + f.getContentPane().setLayout(new FlowLayout()); + JTextField tf = new JTextField(10); + f.getContentPane().add(tf); + return f; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Multiscreen/MultiScreenCheckScreenIDTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.AWTException; +import java.awt.Color; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.Window; + +import javax.swing.JWindow; +import javax.swing.SwingUtilities; + +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.List; + +/* + * @test + * @bug 8280482 + * @key headful + * @summary Test to check if window GC doesn't change within same screen. + * @run main MultiScreenCheckScreenIDTest + */ + +public class MultiScreenCheckScreenIDTest extends MouseAdapter { + private static final int COLS = 12; + private static final int ROWS = 8; + private static final Color BACKGROUND = new Color(0, 0, 255, 64); + private static GraphicsDevice[] screens; + static List windowList = new ArrayList<>(); + static Robot robot; + static JWindow window; + + + public static void main(final String[] args) throws Exception { + try { + createGUI(); + } finally { + for (Window win : windowList) { + win.dispose(); + } + if (window != null) { + window.dispose(); + } + } + System.out.println("Test Pass"); + } + + private static void createGUI() throws AWTException { + new MultiScreenCheckScreenIDTest().createWindowGrid(); + } + + private void createWindowGrid() throws AWTException { + screens = GraphicsEnvironment + .getLocalGraphicsEnvironment() + .getScreenDevices(); + + if (screens.length < 2) { + System.out.println("Testing aborted. Required min of 2 screens. " + + "Available : " + screens.length); + return; + } + robot = new Robot(); + + int screenNumber = 1; + for (GraphicsDevice screen : screens) { + Rectangle screenBounds = screen.getDefaultConfiguration().getBounds(); + + for (Rectangle r : gridOfRectangles(screenBounds, COLS, ROWS)) { + try { + SwingUtilities.invokeAndWait(() -> { + try { + window = createWindow(r); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } catch (InterruptedException | InvocationTargetException e) { + e.printStackTrace(); + } + robot.delay(50); + robot.waitForIdle(); + if (window.getBounds().intersects(screenBounds)) { + if (!(window.getGraphicsConfiguration().getBounds(). + intersects(screenBounds))) { + throw new RuntimeException("Graphics configuration " + + "changed for screen :" + screenNumber); + } + } + windowList.add(window); + } + screenNumber++; + } + } + + private JWindow createWindow(Rectangle bounds) { + JWindow window = new JWindow(); + window.setBounds(bounds); + window.setBackground(BACKGROUND); + window.setAlwaysOnTop(true); + window.addMouseListener(this); + window.setVisible(true); + return window; + } + + @Override + public void mouseClicked(MouseEvent e) { + ((Window) e.getSource()).dispose(); + } + + private static List gridOfRectangles(Rectangle r, int cols, int rows) { + List l = new ArrayList<>(); + for (int row = 0; row < rows; row++) { + int y1 = r.y + (int) Math.round(r.height * (double) row / rows); + int y2 = r.y + (int) Math.round(r.height * (double) (row + 1) / rows); + for (int col = 0; col < cols; col++) { + int x1 = r.x + (int) Math.round(r.width * (double) col / cols); + int x2 = r.x + (int) Math.round(r.width * (double) (col + 1) / cols); + l.add(new Rectangle(x1, y1, x2 - x1, y2 - y1)); + } + } + return l; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/PrintJob/PrintCompatibilityTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/PrintCompatibilityTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/PrintJob/PrintCompatibilityTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/PrintCompatibilityTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,446 @@ +/* + * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Button; +import java.awt.Canvas; +import java.awt.Checkbox; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.JobAttributes; +import java.awt.Label; +import java.awt.List; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.PageAttributes; +import java.awt.Panel; +import java.awt.PrintJob; +import java.awt.Scrollbar; +import java.awt.ScrollPane; +import java.awt.TextArea; +import java.awt.TextField; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.JobAttributes.DialogType; +import java.awt.PageAttributes.OriginType; + +import java.util.Enumeration; +import java.util.Properties; + +/* + * @test + * @bug 4247583 + * @key printer + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary Tests that the old Properties API still works + * @run main/manual PrintCompatibilityTest + */ + +public class PrintCompatibilityTest { + + public static void main(String[] args) throws Exception { + + String INSTRUCTIONS = """ + A frame window will appear. + Choose 'Print to Printer...' from the 'Print' menu. Make sure that you print + to a printer, not a file. Examine the output and verify that the frame and all + the components in it get printed properly. + + Known problems: + * The text in the second row of the menubar is not indented correctly. + + You can also use the 'Print to Screen...' command for a quick manual check that + printing works, but this is only for debugging purposes."""; + + PassFailJFrame.builder() + .title("PrintComponentTest Test Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 2) + .columns(60) + .testTimeOut(10) + .testUI(new MainFrame()) + .logArea(8) + .build() + .awaitAndCheck(); + } +} + +class MainFrame extends Frame { + private LWContainer lwc; + + public MainFrame() { + super("PrintCompatibilityTest"); + + setSize(800, 400); + setLayout(new FlowLayout()); + + // peered components + Button button = new Button("Button"); + button.setFont(new Font("Dialog", Font.PLAIN, 12)); + add(button); + add(new TestCanvas()); + Checkbox cbox = new Checkbox("Checkbox", true); + cbox.setFont(new Font("DialogInput", Font.PLAIN, 12)); + add(cbox); + Choice choice = new Choice(); + choice.add("Choice 1"); + choice.add("Choice Two"); + choice.setFont(new Font("Monospaced", Font.PLAIN, 12)); + add(choice); + Label label = new Label("Label"); + label.setFont(new Font("Serif", Font.PLAIN, 12)); + add(label); + List list = new List(); + list.add("List 1"); + list.add("List Two"); + list.setFont(new Font("SansSerif", Font.PLAIN, 12)); + add(list); + add(new Scrollbar(Scrollbar.VERTICAL) ); + add(new Scrollbar(Scrollbar.HORIZONTAL) ); + ScrollPane scrollpane = new ScrollPane(); + Button spButton = new Button("Button in a scrollpane"); + spButton.setFont(new Font("Monospaced", Font.PLAIN, 12)); + scrollpane.add(spButton); + add(scrollpane); + TextArea textarea = new TextArea("TextArea", 3, 30); + textarea.setFont(new Font("Dialog", Font.ITALIC, 10)); + add(textarea); + TextField textfield = new TextField("TextField"); + textfield.setFont(new Font("DialogInput", Font.ITALIC, 10)); + add(textfield); + + // nested components + Panel panel1 = new Panel(); + panel1.setLayout(new FlowLayout()); + panel1.setBackground(Color.red); + this.add(panel1); + + Button p1Button = new Button("level 2"); + p1Button.setFont(new Font("Monospaced", Font.ITALIC, 10)); + panel1.add(p1Button); + + Panel panel2 = new Panel(); + panel2.setLayout(new FlowLayout()); + panel2.setBackground(Color.green); + panel1.add(panel2); + + Button p2Button = new Button("level 3"); + p2Button.setFont(new Font("Serif", Font.ITALIC, 10)); + panel2.add(p2Button); + + + // lightweight components + LWButton lwbutton = new LWButton("LWbutton"); + lwbutton.setFont(new Font("SansSerif", Font.ITALIC, 10)); + add(lwbutton); + + lwc = new LWContainer("LWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainer"); + lwc.setFont(new Font("Monospaced", Font.ITALIC, 10)); + add(lwc); + Button lwcButton1 = new Button("HW Button 1"); + Button lwcButton2 = new Button("HW Button 2"); + LWButton lwcButton3 = new LWButton("LW Button"); + lwcButton1.setFont(new Font("Dialog", Font.BOLD, 14)); + lwcButton2.setFont(new Font("DialogInput", Font.BOLD, 14)); + lwcButton3.setFont(new Font("Monospaced", Font.BOLD, 14)); + lwc.add(lwcButton1); + lwc.add(lwcButton2); + lwc.add(lwcButton3); + + // overlapping components + add(new ZOrderPanel()); + + /////////////////////// + + Menu menu = new Menu("Print"); + Menu menu2 = new Menu("File"); + Menu menu3 = new Menu("Edit"); + Menu menu4 = new Menu("ReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLong"); + menu2.setFont(new Font("SansSerif", Font.BOLD, 20)); + menu2.setEnabled(false); + menu3.setFont(new Font("Monospaced", Font.ITALIC, 18)); + menu3.setEnabled(false); + menu4.setEnabled(false); + MenuItem itemPrinter = new MenuItem("Print to Printer..."); + MenuItem itemScreen = new MenuItem("Print to Screen..."); + menu.add(itemPrinter); + menu.add(itemScreen); + MenuBar menuBar = new MenuBar(); + menuBar.add( menu ); + menuBar.add( menu2 ); + menuBar.add( menu3 ); + menuBar.add( menu4 ); + setMenuBar(menuBar); + + itemPrinter.addActionListener( new ActionPrint() ); + itemScreen.addActionListener( new ActionPrintToScreen() ); + setVisible(true); + } + + static void printProps(Properties props) + { + Enumeration propNames = props.propertyNames(); + while (propNames.hasMoreElements()) { + String propName = (String)propNames.nextElement(); + PassFailJFrame.log( propName + " = " + props.getProperty(propName)); + } + } + + class ActionPrint implements ActionListener { + private final int ITERATIONS = 1; + private Properties props = new Properties(); + + public void actionPerformed(ActionEvent ev) { + PassFailJFrame.log("About to show print dialog..."); + printProps(props); + PrintJob pj = getToolkit().getPrintJob( + MainFrame.this, "Print test!", props); + if (pj == null) { + return; + } + Dimension d = pj.getPageDimension(); + PassFailJFrame.log("About to print..."); + PassFailJFrame.log("Dimensions: " + d); + printProps(props); + + // For xor mode set, there is a printing issue with number of copies to be print. + // So, ITERATIONS are changed to 1 from 3. + // So, for now the XOR related code is commented out. + + //boolean xor = false; + + for (int i = 0; i < ITERATIONS; i++) { + Graphics g = pj.getGraphics(); + g.setColor(Color.red); + //if (xor) { + // g.setXORMode(Color.blue); + //} + g.translate(13, 13); + printAll(g); + g.dispose(); + //xor = (xor) ? false : true; + } + + // For xor mode set, LWC components don't get printed. + // So, for now the code is commented out and separate bug + // (JDK-8340495) is filed to handle it. + + // one more page so that we can test printing a lightweight + // at the top of the hierarchy (BugId 4212564) + //Graphics g = pj.getGraphics(); + //g.setColor(Color.red); + //g.translate(13, 13); + //lwc.printAll(g); + //g.dispose(); + // end 4212564 + + pj.end(); + } + } + + class ActionPrintToScreen implements ActionListener { + public void actionPerformed(ActionEvent ev) { + PrintFrame printFrame = new PrintFrame(MainFrame.this); + printFrame.show(); + Graphics g = printFrame.getGraphics(); + g.setColor(Color.red); + printAll(g); + g.dispose(); + } + } + + // Frame window that displays results of printing + // main window to a screen Graphics-- useful for + // quick testing of printing + class PrintFrame extends Frame + { + private Component printComponent; + public PrintFrame( Component c ) + { + super("Print to Screen"); + printComponent = c ; + addWindowListener( new WindowAdapter() { + public void windowClosing(WindowEvent ev) { + setVisible(false); + dispose(); + } + } + ); + setSize(printComponent.getSize()); + setResizable(false); + } + + public void paint( Graphics g ) { + printComponent.printAll(g); + } + } + + class LWButton extends Component { + String label; + int width = 100; + int height = 30; + + public LWButton(String label) { + super(); + this.label = label; + } + + public void paint(Graphics g) { + Dimension d = getSize(); + g.setColor(Color.orange); + g.setFont(getFont()); + g.fillRect(0, 0, d.width, d.height); + g.setColor(Color.black); + int x = 5; + int y = (d.height - 5); + g.drawString(label, x, y); + } + + public Dimension getPreferredSize() + { + return new Dimension(width, height); + } + } + + class LWContainer extends Container { + String label; + int width = 300; + int height = 100; + + public LWContainer(String label) { + super(); + this.label = label; + setLayout(new FlowLayout()); + } + + public void paint(Graphics g) { + super.paint(g); + Dimension d = getSize(); + g.setColor(Color.green); + g.setFont(getFont()); + g.drawLine(0, 0, d.width - 1, 0); + g.drawLine(d.width - 1, 0, d.width - 1, d.height - 1); + g.drawLine(d.width - 1, d.height - 1, 0, d.height - 1); + g.drawLine(0, d.height - 1, 0, 0); + g.setColor(Color.black); + int x = 5; + int y = (d.height - 5); + g.drawString(label, x, y); + } + + public Dimension getPreferredSize() + { + return new Dimension(width, height); + } + } + + class TestCanvas extends Canvas { + int width = 100; + int height = 100; + + public void paint(Graphics g) { + g.setColor(Color.blue); + g.fillRoundRect(10, 10, 50, 50, 15, 30); + g.setColor(Color.red); + g.fillOval(70, 70, 25, 25); + } + public Dimension getPreferredSize() { + return new Dimension(width, height); + } + } + + class ZOrderPanel extends Panel + { + ZOrderPanel() + { + setLayout(null); + + Component first, second, third, fourth; + + setVisible(true); + // add first component + first = makeBox("Second", Color.blue, + new Font("Serif", Font.BOLD, 14), + -1); + // insert on top + second = makeBox("First", Color.yellow, + new Font("SansSerif", Font.BOLD, 14), + 0); + // put at the back + fourth = makeBox("Fourth", Color.red, + new Font("Monospaced", Font.BOLD, 14), + 2); + // insert in last position + third = makeBox("Third", Color.green, + new Font("Dialog", Font.PLAIN, 12), + 3); + // swap third and fourth to correct positions + remove(third); + add(third, 2); + // re-validate so third and fourth peers change position + validate(); + // now make things really interesting with a lightweight + // component at the top of the z-order, that should print + // _below_ the native guys to match the screen... + add(new LWButton("LWButton"), 0); + } + + public Dimension preferredSize() + { + return new Dimension(260, 80); + } + + public void layout() + { + int i, n; + Insets ins = getInsets(); + n = getComponentCount(); + for (i = n-1; i >= 0; i--) { + Component p = getComponent(i); + p.setBounds(ins.left + 40 * i, ins.top + 5 * i, 60, 60); + } + } + + public Component makeBox(String s, Color c, Font f, int index) + { + Label l = new Label(s); + l.setBackground(c); + l.setAlignment(Label.RIGHT); + l.setFont(f); + add(l, index); + validate(); + return l; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/PrintJob/PrintComponentTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/PrintComponentTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/PrintJob/PrintComponentTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/PrintComponentTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,486 @@ +/* + * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Button; +import java.awt.Canvas; +import java.awt.Checkbox; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.JobAttributes; +import java.awt.Label; +import java.awt.List; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.PageAttributes; +import java.awt.Panel; +import java.awt.PrintJob; +import java.awt.Scrollbar; +import java.awt.ScrollPane; +import java.awt.TextArea; +import java.awt.TextField; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.JobAttributes.DialogType; +import java.awt.PageAttributes.OriginType; + + +/* + * @test + * @bug 4111262 4035285 4038900 4046147 4049680 4084038 4100004 4105875 + * @bug 4117502 4037486 4068433 4128031 4151161 4151707 4155884 4212564 + * @bug 4025626 4029565 4034365 4036068 4040622 4061890 4067405 4086256 + * @bug 4113827 4116722 4121984 4145350 4146510 4172659 4179886 4218471 + * @bug 4219657 4227128 4242308 4245917 4265746 + * @key printer + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary Test printing of lightweight (and heavyweight) components + * @run main/manual PrintComponentTest + */ + +public class PrintComponentTest { + public static void main(String[] args) throws Exception { + + String INSTRUCTIONS = """ + A frame window will appear. + Choose 'Print to Printer...' from the 'Print' menu. Examine the output + and verify that the frame and all the components in it get printed properly. + + Print using both 'Portrait' and 'Landscape' orientation. + Verify that the paper dimensions printed to standard error + are exactly inverted. + (That is, if the output for 'Portrait' is + "Dimensions: java.awt.Dimension[width=612,height=792]" then the output + for 'Landscape' should be "Dimensions: java.awt.Dimension[width=792, height=612].) + + Now, attempt to print a second time. When the print dialog box appears, + however, cancel the print request. + Verify that _no_ output is sent to standard error. + + You should attempt to print with both the native and common print dialogs, + as well as with no dialog. + Note that on Linux the native and common print dialogs are identical. + + On Windows, the common print dialog communicates with the printer to + determine supported paper sizes and duplex capability. + Verify that these constraints are properly enforced in the common dialog + for the target printer. + + Known problems: + * The text in the second row of the menubar is not indented + correctly. + + You can also use the 'Print to Screen...' command for a quick manual + check that printing works, but this is only for debugging purposes."""; + + PassFailJFrame.builder() + .title("PrintComponentTest Test Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 2) + .columns(60) + .testTimeOut(10) + .testUI(new MainFrame()) + .logArea(8) + .build() + .awaitAndCheck(); + } +} + +class MainFrame extends Frame { + private LWContainer lwc; + + public MainFrame() { + super("PrintComponentTest"); + + setSize(800, 400); + setLayout(new FlowLayout()); + + // peered components + Button button = new Button("Button"); + button.setFont(new Font("Dialog", Font.PLAIN, 12)); + add(button); + add(new TestCanvas()); + Checkbox cbox = new Checkbox("Checkbox", true); + cbox.setFont(new Font("DialogInput", Font.PLAIN, 12)); + add(cbox); + Choice choice = new Choice(); + choice.add("Choice 1"); + choice.add("Choice Two"); + choice.setFont(new Font("Monospaced", Font.PLAIN, 12)); + add(choice); + Label label = new Label("Label"); + label.setFont(new Font("Serif", Font.PLAIN, 12)); + add(label); + List list = new List(); + list.add("List 1"); + list.add("List Two"); + list.setFont(new Font("SansSerif", Font.PLAIN, 12)); + add(list); + add(new Scrollbar(Scrollbar.VERTICAL) ); + add(new Scrollbar(Scrollbar.HORIZONTAL) ); + ScrollPane scrollpane = new ScrollPane(); + Button spButton = new Button("Button in a scrollpane"); + spButton.setFont(new Font("Monospaced", Font.PLAIN, 12)); + scrollpane.add(spButton); + add(scrollpane); + TextArea textarea = new TextArea("TextArea", 3, 30); + textarea.setFont(new Font("Dialog", Font.ITALIC, 10)); + add(textarea); + TextField textfield = new TextField("TextField"); + textfield.setFont(new Font("DialogInput", Font.ITALIC, 10)); + add(textfield); + + // nested components + Panel panel1 = new Panel(); + panel1.setLayout(new FlowLayout()); + panel1.setBackground(Color.red); + this.add(panel1); + + Button p1Button = new Button("level 2"); + p1Button.setFont(new Font("Monospaced", Font.ITALIC, 10)); + panel1.add(p1Button); + + Panel panel2 = new Panel(); + panel2.setLayout(new FlowLayout()); + panel2.setBackground(Color.green); + panel1.add(panel2); + + Button p2Button = new Button("level 3"); + p2Button.setFont(new Font("Serif", Font.ITALIC, 10)); + panel2.add(p2Button); + + + // lightweight components + LWButton lwbutton = new LWButton("LWbutton"); + lwbutton.setFont(new Font("SansSerif", Font.ITALIC, 10)); + add(lwbutton); + + lwc = new LWContainer("LWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainerLWContainer"); + lwc.setFont(new Font("Monospaced", Font.ITALIC, 10)); + add(lwc); + Button lwcButton1 = new Button("HW Button 1"); + Button lwcButton2 = new Button("HW Button 2"); + LWButton lwcButton3 = new LWButton("LW Button"); + lwcButton1.setFont(new Font("Dialog", Font.BOLD, 14)); + lwcButton2.setFont(new Font("DialogInput", Font.BOLD, 14)); + lwcButton3.setFont(new Font("Monospaced", Font.BOLD, 14)); + lwc.add(lwcButton1); + lwc.add(lwcButton2); + lwc.add(lwcButton3); + + // overlapping components + add(new ZOrderPanel()); + + /////////////////////// + + Menu menu = new Menu("Print"); + Menu menu2 = new Menu("File"); + Menu menu3 = new Menu("Edit"); + Menu menu4 = new Menu("ReallyReallyReallyReallyReallyReallyReallyReally" + + "ReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReally" + + "ReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLong"); + menu2.setFont(new Font("SansSerif", Font.BOLD, 20)); + menu2.setEnabled(false); + menu3.setFont(new Font("Monospaced", Font.ITALIC, 18)); + menu3.setEnabled(false); + menu4.setEnabled(false); + MenuItem itemJFC = + new MenuItem("Print to Printer with Cross-Platform Dialog..."); + itemJFC.setActionCommand("common"); + MenuItem itemNative = + new MenuItem("Print to Printer with Native Dialog..."); + itemNative.setActionCommand("native"); + MenuItem itemBackground = + new MenuItem("Print to Printer in Background"); + itemBackground.setActionCommand("none"); + MenuItem itemScreen = new MenuItem("Print to Screen..."); + menu.add(itemJFC); + menu.add(itemNative); + menu.add(itemBackground); + menu.add(itemScreen); + MenuBar menuBar = new MenuBar(); + menuBar.add( menu ); + menuBar.add( menu2 ); + menuBar.add( menu3 ); + menuBar.add( menu4 ); + setMenuBar(menuBar); + + ActionPrint actionPrint = new ActionPrint(); + + itemJFC.addActionListener( actionPrint ); + itemNative.addActionListener( actionPrint ); + itemBackground.addActionListener( actionPrint ); + itemScreen.addActionListener( new ActionPrintToScreen() ); + } + + class ActionPrint implements ActionListener { + private final int ITERATIONS = 1; + private PageAttributes pageAttributes = new PageAttributes(); + private JobAttributes jobAttributes = new JobAttributes(); + + public void actionPerformed(ActionEvent ev) { + DialogType dialog; + if (ev.getActionCommand().equals("common")) { + dialog = DialogType.COMMON; + } else if (ev.getActionCommand().equals("native")) { + dialog = DialogType.NATIVE; + } else { + dialog = DialogType.NONE; + } + jobAttributes.setDialog(dialog); + pageAttributes.setOrigin(OriginType.PRINTABLE); + System.err.println(jobAttributes); + System.err.println(pageAttributes); + + PassFailJFrame.log("About to show print dialog..."); + + PrintJob pj = getToolkit().getPrintJob( + MainFrame.this, "Print test!", jobAttributes, pageAttributes); + if (pj == null) { + return; + } + Dimension d = pj.getPageDimension(); + PassFailJFrame.log("About to print..."); + PassFailJFrame.log("Dimensions: " + d); + System.err.println(jobAttributes); + System.err.println(pageAttributes); + + // For xor mode set, there is a printing issue with number of copies to be print. + // So, ITERATIONS are changed to 1 from 3. + // So, for now the XOR related code is commented out. + + //boolean xor = false; + + for (int i = 0; i < ITERATIONS; i++) { + Graphics g = pj.getGraphics(); + g.setColor(Color.red); + //if (xor) { + // g.setXORMode(Color.blue); + //} + printAll(g); + g.dispose(); + //xor = (xor) ? false : true; + } + + // For xor mode set, LWC components don't get printed. + // So, for now the code is commented out and separate bug + // (JDK-8340495) is filed to handle it. + + // one more page so that we can test printing a lightweight + // at the top of the hierarchy (BugId 4212564) + //Graphics g = pj.getGraphics(); + //g.setColor(Color.red); + //lwc.printAll(g); + //g.dispose(); + // end 4212564 + + pj.end(); + } + } + + class ActionPrintToScreen implements ActionListener { + public void actionPerformed(ActionEvent ev) { + PrintFrame printFrame = new PrintFrame(MainFrame.this); + printFrame.show(); + Graphics g = printFrame.getGraphics(); + g.setColor(Color.red); + printAll(g); + g.dispose(); + } + } + + // Frame window that displays results of printing + // main window to a screen Graphics-- useful for + // quick testing of printing + class PrintFrame extends Frame + { + private Component printComponent; + public PrintFrame( Component c ) + { + super("Print to Screen"); + printComponent = c ; + addWindowListener( new WindowAdapter() { + public void windowClosing(WindowEvent ev) { + setVisible(false); + dispose(); + } + } + ); + setSize(printComponent.getSize()); + setResizable(false); + } + + public void paint( Graphics g ) { + printComponent.printAll(g); + } + } + + class LWButton extends Component { + String label; + int width = 100; + int height = 30; + + public LWButton(String label) { + super(); + this.label = label; + } + + public void paint(Graphics g) { + Dimension d = getSize(); + g.setColor(Color.orange); + g.setFont(getFont()); + g.fillRect(0, 0, d.width, d.height); + g.setColor(Color.black); + int x = 5; + int y = (d.height - 5); + g.drawString(label, x, y); + } + + public Dimension getPreferredSize() + { + return new Dimension(width, height); + } + } + + class LWContainer extends Container { + String label; + int width = 300; + int height = 100; + + public LWContainer(String label) { + super(); + this.label = label; + setLayout(new FlowLayout()); + } + + public void paint(Graphics g) { + super.paint(g); + Dimension d = getSize(); + g.setColor(Color.green); + g.setFont(getFont()); + g.drawLine(0, 0, d.width - 1, 0); + g.drawLine(d.width - 1, 0, d.width - 1, d.height - 1); + g.drawLine(d.width - 1, d.height - 1, 0, d.height - 1); + g.drawLine(0, d.height - 1, 0, 0); + g.setColor(Color.black); + int x = 5; + int y = (d.height - 5); + g.drawString(label, x, y); + } + + public Dimension getPreferredSize() + { + return new Dimension(width, height); + } + } + + class TestCanvas extends Canvas { + int width = 100; + int height = 100; + + public void paint(Graphics g) { + g.setColor(Color.blue); + g.fillRoundRect(10, 10, 50, 50, 15, 30); + g.setColor(Color.red); + g.fillOval(70, 70, 25, 25); + } + public Dimension getPreferredSize() { + return new Dimension(width, height); + } + } + + class ZOrderPanel extends Panel + { + ZOrderPanel() + { + setLayout(null); + + Component first, second, third, fourth; + + setVisible(true); + // add first component + first = makeBox("Second", Color.blue, + new Font("Serif", Font.BOLD, 14), + -1); + // insert on top + second = makeBox("First", Color.yellow, + new Font("SansSerif", Font.BOLD, 14), + 0); + // put at the back + fourth = makeBox("Fourth", Color.red, + new Font("Monospaced", Font.BOLD, 14), + 2); + // insert in last position + third = makeBox("Third", Color.green, + new Font("Dialog", Font.PLAIN, 12), + 3); + // swap third and fourth to correct positions + remove(third); + add(third, 2); + // re-validate so third and fourth peers change position + validate(); + // now make things really interesting with a lightweight + // component at the top of the z-order, that should print + // _below_ the native guys to match the screen... + add(new LWButton("LWButton"), 0); + } + + public Dimension preferredSize() + { + return new Dimension(260, 80); + } + + public void layout() + { + int i, n; + Insets ins = getInsets(); + n = getComponentCount(); + for (i = n-1; i >= 0; i--) { + Component p = getComponent(i); + p.setBounds(ins.left + 40 * i, ins.top + 5 * i, 60, 60); + } + } + + public Component makeBox(String s, Color c, Font f, int index) + { + Label l = new Label(s); + l.setBackground(c); + l.setAlignment(Label.RIGHT); + l.setFont(f); + add(l, index); + validate(); + return l; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/PrintJob/ScaledImagePrintingTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/ScaledImagePrintingTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/PrintJob/ScaledImagePrintingTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/PrintJob/ScaledImagePrintingTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Button; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.PrintJob; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/* + * @test + * @bug 4257962 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary tests that scaled images are printed at resolution greater than 72dpi + * @run main/manual ScaledImagePrintingTest + */ + +public class ScaledImagePrintingTest { + + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + Press 'Print' button from the test UI. + + The test will bring up a print dialog. Select a printer and proceed. + Verify that the output is a series of a horizontal lines in a + rectangular box in the center of the page. + + If output is as mentioned above, press Pass else Fail."""; + + PassFailJFrame.builder() + .title("ScaledImagePrintingTest Test Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 2) + .columns(40) + .testTimeOut(5) + .testUI(ScaledImagePrintingTest::createUI) + .logArea(8) + .build() + .awaitAndCheck(); + } + + private static Frame createUI() { + Frame frame = new Frame("ResolutionTest"); + Button b = new Button("Print"); + b.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + PrintJob pj = frame.getToolkit().getPrintJob(frame, "ResolutionTest", null); + PassFailJFrame.log("Printing code started."); + if (pj != null) { + Graphics g = pj.getGraphics(); + g.setColor(Color.black); + int w = 200; + int h = 200; + Image image = frame.createImage(w, h); + Graphics imageGraphics = image.getGraphics(); + Dimension d = pj.getPageDimension(); + imageGraphics.setColor(Color.black); + for (int i = 0; i < h; i += 20) { + imageGraphics.drawLine(0, i, w, i); + } + g.translate(d.width / 2, d.height / 2); + g.drawImage(image, -w / 8, -h / 8, w / 4, h / 4, frame); + g.setColor(Color.black); + g.drawRect(-w / 4, -h / 4, w / 2, h / 2); + imageGraphics.dispose(); + g.dispose(); + pj.end(); + } + PassFailJFrame.log("Printing code finished."); + } + }); + frame.add(b); + frame.setSize(50, 50); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneAsNeededTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneAsNeededTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneAsNeededTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneAsNeededTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4152524 + * @summary ScrollPane AS_NEEDED always places scrollbars first time component + * is laid out + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollPaneAsNeededTest + */ + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Frame; +import java.awt.ScrollPane; + +public class ScrollPaneAsNeededTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. You will see a frame titled 'ScrollPane as needed' + of minimum possible size in the middle of the screen. + 2. If for the first resize of frame(using mouse) to + a very big size(may be, to half the area of the screen) + the scrollbars(any - horizontal, vertical or both) + appear, click FAIL else, click PASS. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ScrollPaneAsNeededTest::initialize) + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + Frame f = new Frame("ScrollPane as needed"); + f.setLayout(new BorderLayout()); + ScrollPane sp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); + sp.add(new Button("TEST")); + f.add("Center", sp); + f.setSize(200, 200); + return f; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneComponentTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneComponentTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneComponentTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneComponentTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4100671 + * @summary removing and adding back ScrollPane component does not work + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollPaneComponentTest + */ + +import java.awt.Adjustable; +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Panel; +import java.awt.ScrollPane; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class ScrollPaneComponentTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Notice the scrollbars (horizontal and vertical) + in the Frame titled 'ScrollPane Component Test' + 2. Click the button labeled 'Remove and add back + ScrollPane Contents' + 3. If the Scrollbars (horizontal or vertical or both) + disappears in the Frame, then press FAIL, else press PASS. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ScrollPaneComponentTest::initialize) + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + Frame fr = new Frame("ScrollPane Component Test"); + fr.setLayout(new BorderLayout()); + ScrollTester test = new ScrollTester(); + + fr.add(test); + fr.pack(); + fr.setSize(200, 200); + + Adjustable vadj = test.pane.getVAdjustable(); + Adjustable hadj = test.pane.getHAdjustable(); + vadj.setUnitIncrement(5); + hadj.setUnitIncrement(5); + return fr; + } +} + +class Box extends Component { + public Dimension getPreferredSize() { + System.out.println("asked for size"); + return new Dimension(300, 300); + } + + public void paint(Graphics gr) { + super.paint(gr); + gr.setColor(Color.red); + gr.drawLine(5, 5, 295, 5); + gr.drawLine(295, 5, 295, 295); + gr.drawLine(295, 295, 5, 295); + gr.drawLine(5, 295, 5, 5); + System.out.println("Painted!!"); + } +} + +class ScrollTester extends Panel { + public ScrollPane pane; + private final Box child; + + class Handler implements ActionListener { + public void actionPerformed(ActionEvent e) { + System.out.println("Removing scrollable component"); + pane.remove(child); + System.out.println("Adding back scrollable component"); + pane.add(child); + System.out.println("Done Adding back scrollable component"); + } + } + + public ScrollTester() { + pane = new ScrollPane(); + pane.setSize(200, 200); + child = new Box(); + pane.add(child); + setLayout(new BorderLayout()); + Button changeScrollContents = new Button("Remove and add back ScrollPane Contents"); + changeScrollContents.setBackground(Color.red); + changeScrollContents.addActionListener(new Handler()); + add("North", changeScrollContents); + add("Center", pane); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneEventType.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneEventType.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneEventType.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneEventType.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4075484 + * @summary Tests that events of different types are generated for the + * corresponding scroll actions. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollPaneEventType + */ + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.ScrollPane; +import java.awt.event.AdjustmentListener; + +public class ScrollPaneEventType { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. This test verifies that when user performs some scrolling operation on + ScrollPane the correct AdjustmentEvent is being generated. + 2. To test this, press on: + - scrollbar's arrows and verify that UNIT event is generated, + - scrollbar's grey area(non-thumb) and verify that BLOCK event is + generated, + - drag scrollbar's thumb and verify that TRACK event is generated + If you see correct events for both scroll bars then test is PASSED. + Otherwise it is FAILED. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ScrollPaneEventType::initialize) + .logArea() + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + Frame frame = new Frame("ScrollPane event type test"); + frame.setLayout(new BorderLayout()); + ScrollPane pane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS); + pane.add(new Button("press") { + public Dimension getPreferredSize() { + return new Dimension(1000, 1000); + } + }); + + AdjustmentListener listener = e -> PassFailJFrame.log(e.toString()); + pane.getHAdjustable().addAdjustmentListener(listener); + pane.getVAdjustable().addAdjustmentListener(listener); + frame.add(pane); + frame.setSize(200, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneFlicker.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneFlicker.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneFlicker.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneFlicker.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,215 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4073822 + * @summary ScrollPane repaints entire window when scrolling fast + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollPaneFlicker + */ + +import java.awt.Button; +import java.awt.Canvas; +import java.awt.Checkbox; +import java.awt.Choice; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Label; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.Panel; +import java.awt.Rectangle; +import java.awt.ScrollPane; +import java.awt.Scrollbar; +import java.awt.TextArea; +import java.awt.TextField; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollBar; +import javax.swing.JTextArea; +import javax.swing.JTextField; + +public class ScrollPaneFlicker { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + When scrolling a ScrollPane fast(i.e. holding the down/up arrow + down for a while), the ScrollPane would inexplicably refresh + the entire window. + + 1. Select a type of ScrollPane content from the content menu. + 2. Scroll the content using the up/down/left/right arrows on + the scroll bar. Try scrolling the entire content area using + the scroll arrows-- from top to bottom and left to right. + 3. Verify that the entire pane does not refresh when scrolling + - only the newly exposed areas should be repainting. + 4. Repeat for all content types. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ScrollPaneFlicker::initialize) + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + return new FlickerFrame(); + } +} + +class FlickerFrame extends Frame { + ScrollPane pane; + + public FlickerFrame() { + super("ScrollPane Flicker Test"); + TextPanel textPanel = new TextPanel(); + GradientPanel gradientPanel = new GradientPanel(); + ComponentPanel componentPanel = new ComponentPanel(); + SwingPanel swingPanel = new SwingPanel(); + MenuBar menubar = new MenuBar(); + Menu testMenu = new Menu("Test Options"); + + pane = new ScrollPane(); + pane.getHAdjustable().setUnitIncrement(8); + pane.getVAdjustable().setUnitIncrement(16); + pane.add(textPanel); + add(pane); + + testMenu.add(makeContentItem("Text Lines", textPanel)); + testMenu.add(makeContentItem("Gradient Fill", gradientPanel)); + testMenu.add(makeContentItem("AWT Components", componentPanel)); + testMenu.add(makeContentItem("Swing Components", swingPanel)); + menubar.add(testMenu); + + setMenuBar(menubar); + setSize(400, 300); + } + + public MenuItem makeContentItem(String title, final Component content) { + MenuItem menuItem = new MenuItem(title); + menuItem.addActionListener( + ev -> { + pane.add(content); + pane.validate(); + } + ); + return menuItem; + } +} + +class GradientPanel extends Canvas { + public void paint(Graphics g) { + // just paint something that'll take a while + int x, y; + int width = getSize().width; + int height = getSize().height; + int step = 8; + + for (x = 0; x < width; x += step) { + for (y = 0; y < height; y += step) { + int red = (255 * y) / height; + int green = (255 * x * y) / (width * height); + int blue = (255 * x) / width; + Rectangle bounds = g.getClipBounds(); + Rectangle fbounds = new Rectangle(x, y, x + step, y + step); + if (bounds.intersects(fbounds)) { + Color color = new Color(red, green, blue); + g.setColor(color); + g.fillRect(x, y, x + step, y + step); + } + } + } + } + + public Dimension getPreferredSize() { + return new Dimension(200, 1000); + } +} + +class TextPanel extends Canvas { + public void paint(Graphics g) { + Font font = new Font("SanSerif", Font.ITALIC, 12); + + g.setFont(font); + // just paint something that'll take a while + int x, y; + int width = getWidth(); + int height = getHeight(); + int step = 16; + + for (x = y = 0; y < height; y += step) { + Rectangle bounds = g.getClipBounds(); + Rectangle tbounds = new Rectangle(x, y - 16, x + width, y); + if (bounds.intersects(tbounds)) { + g.drawString(y + " : The quick brown fox jumps over the lazy dog. " + + "The rain in Spain falls mainly on the plain.", x, y); + } + } + } + + public Dimension getPreferredSize() { + return new Dimension(640, 1000); + } +} + +class ComponentPanel extends Panel { + ComponentPanel() { + add(new Label("Label")); + add(new Button("Button")); + add(new Checkbox("Checkbox")); + Choice c = new Choice(); + c.add("choice"); + java.awt.List l = new java.awt.List(); + l.add("list"); + add(new Scrollbar()); + add(new TextField("TextField")); + add(new TextArea("TextArea")); + add(new Panel()); + add(new Canvas()); + } +} + +class SwingPanel extends JPanel { + SwingPanel() { + add(new JLabel("JLabel")); + add(new JButton("JButton")); + add(new JCheckBox("JCheckBox")); + JComboBox c = new JComboBox(); + JList l = new JList(); + add(new JScrollBar()); + add(new JTextField("This is a JTextField with some text in it to make it longer.")); + add(new JTextArea("This is a JTextArea with some text in it to make it longer.")); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPanePaint.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPanePaint.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPanePaint.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPanePaint.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,132 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Licensed Materials - Property of IBM + * + * (C) Copyright IBM Corporation 1998 All Rights Reserved. + * + * US Government Users Restricted Rights - Use, duplication or disclosure + * restricted by GSA ADP Schedule Contract with IBM Corp. + */ + +/* + * @test + * @bug 4160721 + * @summary AWT ScrollPane painting problem + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollPanePaint + */ + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Panel; +import java.awt.ScrollPane; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.List; + +public class ScrollPanePaint { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Press the button marked "Toggle" a few times. + 2. The contents of the frame should alternate between + a red panel and a scroll pane containing a green panel. + If this does not happen (specifically, if the scroll + pane does not consistently contain a green panel), + then the test has FAILED. + """; + ScrollPaintTest scrollPaintTest = new ScrollPaintTest(); + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(scrollPaintTest::initialize) + .positionTestUI(WindowLayouts::rightOneColumn) + .build() + .awaitAndCheck(); + } + + private static class ScrollPaintTest implements ActionListener { + static Frame f; + static boolean showScroll; + + public List initialize() { + Frame frame = new Frame("Scrollpane paint test"); + frame.setLayout(new BorderLayout()); + f = new Frame("Scrollpane paint test"); + f.setLayout(new GridLayout(0, 1)); + + Button b = new Button("Toggle"); + b.addActionListener(this); + + frame.add(b, BorderLayout.CENTER); + frame.pack(); + + showScroll = false; + actionPerformed(null); + return List.of(frame, f); + } + + public void actionPerformed(ActionEvent e) { + Container c; + if (!showScroll) { + c = (Container) new TestPanel(new Dimension(100, 100)); + c.setBackground(Color.red); + } else { + c = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS); + Panel p = new TestPanel(new Dimension(20, 20)); + p.setBackground(Color.green); + c.add(p); + } + + f.removeAll(); + f.add("Center", c); + f.pack(); + showScroll = !showScroll; + } + } + + private static class TestPanel extends Panel { + Dimension dim; + + TestPanel(Dimension d) { + dim = d; + } + + public Dimension getMinimumSize() { + return getPreferredSize(); + } + + public Dimension getPreferredSize() { + return dim; + } + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneSize.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneSize.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPaneSize.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPaneSize.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4117404 + * @summary Tests that child component is always at least large as scrollpane + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollPaneSize + */ + +import java.awt.Button; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Insets; +import java.awt.Panel; +import java.awt.ScrollPane; +import java.util.List; + +public class ScrollPaneSize { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Three frames representing the three different ScrollPane scrollbar + policies will appear. + 2. Verify that when you resize the windows, the child component in the + scrollpane always expands to fill the scrollpane. The scrollpane + background is colored red to show any improper bleed through. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(ScrollPaneSize::initialize) + .positionTestUIRightColumn() + .build() + .awaitAndCheck(); + } + + static List initialize() { + return List.of(new ScrollFrame("SCROLLBARS_AS_NEEDED", ScrollPane.SCROLLBARS_AS_NEEDED), + new ScrollFrame("SCROLLBARS_ALWAYS", ScrollPane.SCROLLBARS_ALWAYS), + new ScrollFrame("SCROLLBARS_NEVER", ScrollPane.SCROLLBARS_NEVER)); + } +} + +class ScrollFrame extends Frame { + ScrollFrame(String title, int policy) { + super(title); + setLayout(new GridLayout(1, 1)); + ScrollPane c = new ScrollPane(policy); + c.setBackground(Color.red); + Panel panel = new TestPanel(); + c.add(panel); + add(c); + pack(); + Dimension size = panel.getPreferredSize(); + Insets insets = getInsets(); + setSize(size.width + 45 + insets.right + insets.left, + size.height + 20 + insets.top + insets.bottom); + } +} + +class TestPanel extends Panel { + TestPanel() { + setLayout(new FlowLayout()); + setBackground(Color.white); + + Button b1, b2, b3; + add(b1 = new Button("Button1")); + add(b2 = new Button("Button2")); + add(b3 = new Button("Button3")); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPanechildViewportTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPanechildViewportTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPanechildViewportTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPanechildViewportTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,146 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4094581 + * @summary ScrollPane does not refresh properly when child is just smaller than viewport + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollPanechildViewportTest + */ + +import java.awt.Button; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Panel; +import java.awt.ScrollPane; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class ScrollPanechildViewportTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Click "Slightly Large" and ensure scrollbars are VISIBLE + 2. Click "Slightly Small" and ensure there are NO scrollbars + 3. Click "Smaller" and ensure there are NO scrollbars + 4. If everything is ok, click PASS, else click FAIL. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ScrollPanechildViewportTest::initialize) + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + return new Test(); + } +} + +class Test extends Frame implements ActionListener { + Button b1, b2, b3; + MyPanel p; + int state; // 0 = slightly large, 1 = slightly smaller, 2 = smaller + + public Test() { + ScrollPane sp = new ScrollPane(); + p = new MyPanel(); + p.setBackground(Color.yellow); + state = 1; + sp.add(p); + add(sp, "Center"); + + Panel p1 = new Panel(); + b1 = new Button("Slightly Large"); + b1.addActionListener(this); + p1.add(b1); + b2 = new Button("Slightly Small"); + b2.addActionListener(this); + p1.add(b2); + b3 = new Button("Smaller"); + b3.addActionListener(this); + p1.add(b3); + + add(p1, "South"); + + setSize(400, 200); + //added to test to move test frame away from instructions + setLocation(0, 350); + } + + public void actionPerformed(ActionEvent e) { + Object source = e.getSource(); + + // set size to small and re-validate the panel to get correct size of + // scrollpane viewport without scrollbars + + state = 2; + p.invalidate(); + validate(); + + Dimension pd = ((ScrollPane) p.getParent()).getViewportSize(); + + if (source.equals(b1)) { + p.setBackground(Color.green); + state = 0; + } else if (source.equals(b2)) { + p.setBackground(Color.yellow); + state = 1; + } else if (source.equals(b3)) { + p.setBackground(Color.red); + state = 2; + } + + p.invalidate(); + validate(); + System.out.println("Panel Size = " + p.getSize()); + System.out.println("ScrollPane Viewport Size = " + pd); + System.out.println(" "); + } + + class MyPanel extends Panel { + public Dimension getPreferredSize() { + Dimension d = null; + Dimension pd = ((ScrollPane) getParent()).getViewportSize(); + switch (state) { + case 0 -> { + d = new Dimension(pd.width + 2, pd.height + 2); + System.out.println("Preferred size: " + d); + } + case 1 -> { + d = new Dimension(pd.width - 2, pd.height - 2); + System.out.println("Preferred size: " + d); + } + case 2 -> { + d = new Dimension(50, 50); + System.out.println("Preferred size: " + d); + } + } + return d; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPositionTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPositionTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollPositionTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollPositionTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4008152 + * @summary ScrollPane position does not return correct values + * @key headful + * @run main ScrollPositionTest + */ + +import java.awt.Adjustable; +import java.awt.BorderLayout; +import java.awt.Canvas; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Robot; +import java.awt.ScrollPane; +import java.awt.event.AdjustmentEvent; +import java.awt.event.AdjustmentListener; + +public class ScrollPositionTest { + static Frame frame; + static int i = 0; + static Point p; + static ScrollPane sp; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + EventQueue.invokeAndWait(() -> { + frame = new Frame("Scroll Position Test"); + frame.setLayout(new BorderLayout()); + frame.setSize(200, 200); + sp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); + Canvas canvas = new Canvas(); + canvas.setSize(300, 300); + sp.add(canvas); + frame.add("Center", sp); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + EventQueue.invokeAndWait(() -> { + Adjustable saH = sp.getHAdjustable(); + saH.addAdjustmentListener(new TestAdjustmentListener()); + }); + for (i = 0; i < 1000; i++) { + EventQueue.invokeAndWait(() -> { + p = new Point(i % 100, i % 100); + sp.setScrollPosition(p); + }); + + robot.waitForIdle(); + robot.delay(10); + EventQueue.invokeAndWait(() -> { + if (!sp.getScrollPosition().equals(p)) { + throw new RuntimeException("Test failed. " + i + " : " + + "Expected " + p + ", but Returned: " + sp.getScrollPosition()); + } + }); + } + System.out.println("Test Passed."); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + private static class TestAdjustmentListener implements AdjustmentListener { + public void adjustmentValueChanged(AdjustmentEvent e) { + System.out.println("AdjEvent caught:" + e); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollbarsAsNeededTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollbarsAsNeededTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/ScrollPane/ScrollbarsAsNeededTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/ScrollPane/ScrollbarsAsNeededTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4094248 + * @summary Test initial appearance of SCROLLBARS_AS_NEEDED policy + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollbarsAsNeededTest + */ + +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.ScrollPane; + +public class ScrollbarsAsNeededTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. A Frame window with a ScrollPane that is + initially created with the SCROLLBARS_AS_NEEDED policy. + 2. If there are no scrollbars around the ScrollPane then + the test PASS. Otherwise the test FAILS. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ScrollbarsAsNeededTest::initialize) + .build() + .awaitAndCheck(); + } + + static Frame initialize() { + Frame frame = new Frame("Scrollbar as needed test"); + ScrollPane scrollPane = new ScrollPane() { + @Override + public void paint(Graphics g) { + super.paint(g); + g.drawString("ScrollPane", 10, 50); + } + }; + scrollPane.setBackground(Color.WHITE); + frame.setBackground(Color.GRAY); + frame.setSize(200, 200); + frame.setLayout(new FlowLayout()); + frame.add(scrollPane); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Scrollbar/ListScrollbarTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/ListScrollbarTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Scrollbar/ListScrollbarTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/ListScrollbarTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,139 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4029465 + * @summary Win95 Multiselect List doesn't display scrollbar + * @key headful + * @run main ListScrollbarTest + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.List; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Robot; + +public class ListScrollbarTest { + + private static final Color BG_COLOR = Color.RED; + private static Robot robot; + private static Frame frame; + private static List list; + private static int counter = 0; + private static volatile Rectangle listBounds; + + public static void main(String[] args) throws Exception { + try { + EventQueue.invokeAndWait(ListScrollbarTest::createAndShowUI); + test(); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + private static void test() throws Exception { + robot = new Robot(); + robot.waitForIdle(); + robot.delay(500); + + EventQueue.invokeAndWait(() -> { + Point locationOnScreen = list.getLocationOnScreen(); + Dimension size = list.getSize(); + listBounds = new Rectangle(locationOnScreen, size); + }); + + Point point = new Point(listBounds.x + listBounds.width - 5, + listBounds.y + listBounds.height / 2); + + + for (int i = 0; i < 4; i++) { + scrollbarCheck(point, false); + addListItem(); + } + scrollbarCheck(point, true); + } + + public static boolean areColorsSimilar(Color c1, Color c2, int tolerance) { + return Math.abs(c1.getRed() - c2.getRed()) <= tolerance + && Math.abs(c1.getGreen() - c2.getGreen()) <= tolerance + && Math.abs(c1.getBlue() - c2.getBlue()) <= tolerance; + } + + private static void scrollbarCheck(Point point, boolean isScrollbarExpected) { + Color pixelColor = robot.getPixelColor(point.x, point.y); + boolean areColorsSimilar = areColorsSimilar(BG_COLOR, pixelColor, 5); + + if (isScrollbarExpected && areColorsSimilar) { + throw new RuntimeException((""" + Scrollbar is expected, but pixel color \ + is similar to the background color + %s pixel color + %s bg color""") + .formatted(pixelColor, BG_COLOR)); + } + + if (!isScrollbarExpected && !areColorsSimilar) { + throw new RuntimeException((""" + Scrollbar is not expected, but pixel color \ + is not similar to the background color + %s pixel color + %s bg color""") + .formatted(pixelColor, BG_COLOR)); + } + } + + private static void addListItem() throws Exception { + EventQueue.invokeAndWait(() -> { + counter++; + System.out.println("Adding list item " + counter); + list.add("List Item " + counter); + frame.validate(); + }); + robot.waitForIdle(); + robot.delay(150); + } + + private static void createAndShowUI() { + frame = new Frame("ListScrollbarTest"); + list = new List(3, true); + list.setBackground(BG_COLOR); + + // do not draw border around items, it can affect screen capture + list.setFocusable(false); + + frame.add(list); + + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Scrollbar/ScrollbarCtrlClickTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/ScrollbarCtrlClickTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Scrollbar/ScrollbarCtrlClickTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/ScrollbarCtrlClickTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4075950 + * @summary Test for functionality of Control Click on Scrollbar + * @key headful + * @run main ScrollbarCtrlClickTest + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.Scrollbar; +import java.awt.TextArea; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +public class ScrollbarCtrlClickTest { + private static Frame frame; + private static TextArea ta; + private static Scrollbar scrollbar; + private static final CountDownLatch latch = new CountDownLatch(1); + private static volatile Rectangle sbBounds; + + public static void main(String[] args) throws Exception { + try { + EventQueue.invokeAndWait(ScrollbarCtrlClickTest::initAndShowGUI); + test(); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + private static void initAndShowGUI() { + frame = new Frame("ScrollbarDimensionTest"); + ta = new TextArea("", 30, 100); + + + scrollbar = new Scrollbar(Scrollbar.VERTICAL, + 0, 10, 0, 20); + + // Just setting layout so scrollbar thumb will be big enough to use + frame.setLayout(new BorderLayout()); + frame.add("East", scrollbar); + frame.add("West", ta); + + scrollbar.addAdjustmentListener(e -> { + System.out.println(e.paramString()); + ta.append(e.paramString() + "\n"); + latch.countDown(); + }); + + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private static void test() throws Exception { + Robot robot = new Robot(); + robot.waitForIdle(); + robot.setAutoDelay(25); + robot.delay(500); + + EventQueue.invokeAndWait(() -> { + Point locationOnScreen = scrollbar.getLocationOnScreen(); + Dimension size = scrollbar.getSize(); + sbBounds = new Rectangle(locationOnScreen, size); + }); + + robot.mouseMove(sbBounds.x + sbBounds.width / 2, + sbBounds.y + sbBounds.height - 50); + + robot.keyPress(KeyEvent.VK_CONTROL); + robot.mousePress(MouseEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK); + robot.keyRelease(KeyEvent.VK_CONTROL); + + if (!latch.await(1, TimeUnit.SECONDS)) { + throw new RuntimeException("Timed out waiting for latch"); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Scrollbar/UnitIncrementTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/UnitIncrementTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Scrollbar/UnitIncrementTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Scrollbar/UnitIncrementTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,129 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4169461 + * @summary Test for Motif Scrollbar unit increment + * @key headful + * @run main UnitIncrementTest + */ + +import javax.swing.UIManager; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.Scrollbar; +import java.awt.event.AdjustmentEvent; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + +public class UnitIncrementTest { + private static Frame frame; + private static Scrollbar scrollbar; + private static final java.util.List eventsList = new ArrayList<>(); + private static final int UNIT_INCREMENT_VALUE = 5; + private static final int INCREMENTS_COUNT = 10; + private static volatile Rectangle scrollbarBounds; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + + try { + EventQueue.invokeAndWait(UnitIncrementTest::createAndShowUI); + test(); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + private static void createAndShowUI() { + frame = new Frame("UnitIncrementTest"); + + scrollbar = new Scrollbar(Scrollbar.HORIZONTAL); + + scrollbar.setUnitIncrement(UNIT_INCREMENT_VALUE); + scrollbar.setBlockIncrement(20); + + scrollbar.addAdjustmentListener(e -> { + eventsList.add(e); + System.out.println(e); + }); + + frame.add(scrollbar); + + frame.setSize(300, 100); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private static void test() throws Exception { + Robot robot = new Robot(); + robot.waitForIdle(); + robot.setAutoDelay(25); + robot.delay(500); + + EventQueue.invokeAndWait(() -> { + Point locationOnScreen = scrollbar.getLocationOnScreen(); + Dimension size = scrollbar.getSize(); + scrollbarBounds = new Rectangle(locationOnScreen, size); + }); + + robot.mouseMove(scrollbarBounds.x + scrollbarBounds.width - 10, + scrollbarBounds.y + scrollbarBounds.height / 2); + + for (int i = 0; i < INCREMENTS_COUNT; i++) { + robot.mousePress(MouseEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK); + robot.delay(150); + } + + robot.waitForIdle(); + robot.delay(250); + + if (eventsList.size() != INCREMENTS_COUNT) { + throw new RuntimeException("Wrong number of events: " + eventsList.size()); + } + + int oldValue = 0; + for (AdjustmentEvent event : eventsList) { + System.out.println("\nChecking event " + event); + + int diff = event.getValue() - oldValue; + System.out.printf("diff: %d - %d = %d\n", event.getValue(), oldValue, diff); + + if (diff != UNIT_INCREMENT_VALUE) { + throw new RuntimeException("Unexpected adjustment value: %d".formatted(diff)); + } + + oldValue = event.getValue(); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Selection/TestClipboard.java openjdk-21-21.0.10+7/test/jdk/java/awt/Selection/TestClipboard.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Selection/TestClipboard.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Selection/TestClipboard.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import java.io.Serializable; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +/* + * @test + * @bug 4139552 + * @summary Checks to see if 'isDataFlavorSupported' throws exception. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual TestClipboard + */ + +public class TestClipboard { + + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + This test has two steps: + + 1. you need to place some text onto the system clipboard, + for example, + on Windows, you could highlight some text in notepad, and do a Ctrl-C + or select menu Edit->Copy; + + on Linux or Mac, you can do the same with any Terminal or Console or + Text application. + + 2. After you copy to system clipboard, press "Click Me" button. + + Test will fail if any exception is thrown. + + Press Pass if you see "Test Passed" in log area."""; + + PassFailJFrame.builder() + .title("TestClipboard Instruction") + .instructions(INSTRUCTIONS) + .columns(45) + .testUI(TestClipboard::createUI) + .logArea(4) + .build() + .awaitAndCheck(); + } + + private static JFrame createUI() { + JFrame f = new JFrame("ChildFrameIconTest UI"); + JButton b = new JButton("Click Me"); + b.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + try { + new MyTest(); + } catch (Exception ex) { + throw new RuntimeException("Exception Thrown : " + ex); + } + } + }); + f.add(b); + f.setSize(200, 100); + return f; + } + + static class MyFlavor extends Object implements Serializable { + // Stub class needed in order to define the data flavor type + } + + static class MyTest { + public MyTest() throws Exception { + // Create an arbitrary dataflavor + DataFlavor myFlavor = new DataFlavor(MyFlavor.class, "TestClipboard"); + // Get the system clipboard + Clipboard theClipboard = + Toolkit.getDefaultToolkit().getSystemClipboard(); + // Get the current contents of the clipboard + Transferable theTransfer = theClipboard.getContents(this); + + // See if the flavor is supported. This may result in a null + // pointer exception. + theTransfer.isDataFlavorSupported(myFlavor); + PassFailJFrame.log("Test Passed"); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/AltPlusNumberKeyCombinationsTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/AltPlusNumberKeyCombinationsTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/AltPlusNumberKeyCombinationsTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/AltPlusNumberKeyCombinationsTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4737679 4623376 4501485 4740906 4708221 + * @requires (os.family == "windows") + * @summary Alt+Left/right/up/down generate characters in JTextArea + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual AltPlusNumberKeyCombinationsTest + */ + +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.TextArea; +import java.awt.TextField; + +public class AltPlusNumberKeyCombinationsTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + [WINDOWS PLATFORM ONLY] + Please do the following steps for both TextField and TextArea: + 1. Hold down ALT and press a NON-NUMPAD right arrow, then release + ALT key. If any symbol is typed the test failed. + 2. Hold down ALT and press one after another the following + NUMPAD keys: 0, 1, 2, 8. Release ALT key. If the Euro symbol + is not typed the test failed + 3. Hold down ALT and press one after another the following + NUMPAD keys: 0, 2, 2, 7. Release ALT key. If nothing or + the blank symbol is typed the test failed + If all the steps are done successfully the test PASSed, + else test FAILS. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(initialize()) + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + Frame f = new Frame("key combination test"); + f.setLayout(new FlowLayout()); + TextField tf = new TextField("TextField"); + f.add(tf); + TextArea ta = new TextArea("TextArea"); + f.add(ta); + f.setSize(200, 200); + return f; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/BackgroundTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/BackgroundTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/BackgroundTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/BackgroundTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,127 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4258667 4405602 + * @summary Make sure TextComponents are grayed out when non-editable + * if the background color has not been set by client code. + * Make sure TextComponents are not grayed out when non-editable + * if the background color has been set by client code. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual BackgroundTest + */ + +import java.awt.Button; +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.TextArea; +import java.awt.TextField; + +public class BackgroundTest { + private static final String enableString = "EnableText"; + private static final String disableString = "DisableText"; + + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. When the frame appears, it should have a blue background. + 2. The first TextField and TextArea will be the default color. + The second TextField and TextArea will be green. + 3. Press the "DisableText" button. + The first TextField and TextArea should change colors to the + default disabled color. On Windows, this is usually gray. + On linux and macos it will match the environment settings. + If the TextField or the TextArea do not change colors as described, + the test FAILS. + 4. The second TextField and TextArea should still be green. + If either of them are not green, the test FAILS. + Press the "EnableText" button (same button as before). + The first TextField and TextArea should return to their + original colors as described in the first paragraph. If they + do not, the test FAILS. + 5. The second TextField and TextArea should still be green. + If either of them are not green, the test FAILS. + Otherwise, the test PASSES. + """; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(BackgroundTest::initialize) + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + Frame frame = new Frame("Background Test"); + frame.setLayout(new FlowLayout()); + TextField tf = new TextField(30); + TextArea ta = new TextArea(4, 30); + TextField setTf = new TextField(30); + TextArea setTa = new TextArea(4, 30); + Button enableButton = new Button(disableString); + + enableButton.setBackground(Color.red); + frame.setSize(500, 250); + + frame.setBackground(Color.blue); + + tf.setText("Background not set - should be default"); + tf.setEditable(true); + frame.add(tf); + ta.setText("Background not set - should be default"); + ta.setEditable(true); + frame.add(ta); + + setTf.setText("Background is set - should be Green"); + setTf.setBackground(Color.green); + setTf.setEditable(true); + frame.add(setTf); + setTa.setText("Background is set - should be Green"); + setTa.setBackground(Color.green); + setTa.setEditable(true); + frame.add(setTa); + + enableButton.addActionListener(e -> { + boolean currentlyEditable = tf.isEditable(); + + if (currentlyEditable) { + tf.setEditable(false); + ta.setEditable(false); + setTf.setEditable(false); + setTa.setEditable(false); + enableButton.setLabel(enableString); + } else { + tf.setEditable(true); + ta.setEditable(true); + setTf.setEditable(true); + setTa.setEditable(true); + enableButton.setLabel(disableString); + } + }); + frame.add(enableButton); + return frame; + } +} \ No newline at end of file diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/CorrectTextComponentSelectionTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/CorrectTextComponentSelectionTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/CorrectTextComponentSelectionTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/CorrectTextComponentSelectionTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 5100806 + * @summary TextArea.select(0,0) does not de-select the selected text properly + * @key headful + * @run main CorrectTextComponentSelectionTest + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Robot; +import java.awt.TextArea; +import java.awt.TextComponent; +import java.awt.TextField; +import java.lang.reflect.InvocationTargetException; + +public class CorrectTextComponentSelectionTest { + static TextField tf = new TextField("TextField"); + static TextArea ta = new TextArea("TextArea"); + static Robot r; + static Frame frame; + static volatile Color color_center; + static volatile Point loc; + + public static void main(String[] args) throws Exception { + try { + r = new Robot(); + EventQueue.invokeAndWait(() -> { + initialize(); + }); + r.waitForIdle(); + r.delay(1000); + + test(tf); + test(ta); + System.out.println("Test Passed!"); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void initialize() { + frame = new Frame("TextComponent Selection Test"); + frame.setLayout(new BorderLayout()); + + // We should place to the text components the long strings in order to + // cover the components by the selection completely + String sf = ""; + for (int i = 0; i < 50; i++) { + sf = sf + " "; + } + tf.setText(sf); + // We check the color of the text component in order to find out the + // bug reproducible situation + tf.setForeground(Color.WHITE); + tf.setBackground(Color.WHITE); + + String sa = ""; + for (int i = 0; i < 50; i++) { + for (int j = 0; j < 50; j++) { + sa = sa + " "; + } + sa = sa + "\n"; + } + ta.setText(sa); + ta.setForeground(Color.WHITE); + ta.setBackground(Color.WHITE); + + frame.add(tf, "North"); + frame.add(ta, "South"); + frame.setSize(200, 200); + frame.setVisible(true); + } + + private static void test(TextComponent tc) throws Exception { + if (tc instanceof TextField) { + System.out.println("TextField testing ..."); + } else if (tc instanceof TextArea) { + System.out.println("TextArea testing ..."); + } + + r.waitForIdle(); + r.delay(100); + EventQueue.invokeAndWait(() -> { + tc.requestFocus(); + tc.selectAll(); + tc.select(0, 0); + }); + + r.waitForIdle(); + r.delay(100); + EventQueue.invokeAndWait(() -> { + loc = tc.getLocationOnScreen(); + }); + r.waitForIdle(); + r.delay(100); + + EventQueue.invokeAndWait(() -> { + color_center = r.getPixelColor(loc.x + tc.getWidth() / 2, loc.y + tc.getHeight() / 2); + }); + + System.out.println("Color of the text component (CENTER) =" + color_center); + System.out.println("White color=" + Color.WHITE); + + if (color_center.getRGB() != Color.WHITE.getRGB()) { + throw new RuntimeException("Test Failed"); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/DisableTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/DisableTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/DisableTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/DisableTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 5042122 + * @summary Verifies the TextComponent is grayed out when disabled + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual DisableTest + */ + +import javax.swing.BoxLayout; +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Component; +import java.awt.Frame; +import java.awt.Panel; +import java.awt.TextArea; +import java.awt.TextField; +import java.awt.event.ActionListener; +import java.util.Vector; +import java.util.Iterator; + +public class DisableTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Click "Enable" and "Disable" buttons and verify the text + components are disabled and enabled correctly. + 2. Verify that the disabled text components are grayed + out and are uneditable. + 3. Click PASS or FAIL accordingly. + """; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(DisableTest::initialize) + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + Frame frame = new Frame("TextComponent Disabled test"); + frame.setLayout(new BorderLayout()); + frame.setSize(200, 200); + final Vector comps = new Vector(); + comps.add(new TextField("TextField")); + TextArea ta = new TextArea("TextArea", 2, 100, TextArea.SCROLLBARS_NONE); + comps.add(ta); + Panel pc = new Panel(); + pc.setLayout(new BoxLayout(pc, BoxLayout.Y_AXIS)); + Iterator iter = comps.iterator(); + while (iter.hasNext()) { + Component c = (Component) iter.next(); + c.setEnabled(false); + pc.add(c); + } + frame.add(pc, BorderLayout.CENTER); + Panel p = new Panel(); + final Button be = new Button("Enable"); + final Button bd = new Button("Disable"); + p.add(be); + p.add(bd); + ActionListener al = ev -> { + boolean enable = (ev.getSource() == be); + Iterator iterator = comps.iterator(); + while (iterator.hasNext()) { + Component c = (Component) iterator.next(); + c.setEnabled(enable); + } + }; + be.addActionListener(al); + bd.addActionListener(al); + frame.add(p, BorderLayout.SOUTH); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/ModifiersTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/ModifiersTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/ModifiersTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/ModifiersTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,85 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4035364 + * @summary Checks that Caps Lock key works + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ModifiersTest + */ + +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.TextArea; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +public class ModifiersTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Type some text in the TextArea in upper and lowercase, + using the Caps Lock ON/OFF. + 2. If Caps Lock toggles correctly and you are able to type in + both cases, the test PASS. Else Test FAILS. + """; + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(ModifiersTest::initialize) + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + Frame frame = new Frame("Modifiers Test"); + frame.setLayout(new GridLayout(1, 1)); + frame.addKeyListener(new KeyChecker()); + frame.setLayout(new GridLayout(2, 1)); + Label label = new Label("See if you can type in upper and lowercase using Caps Lock:"); + frame.add(label); + TextArea ta = new TextArea(); + frame.add(ta); + ta.addKeyListener(new KeyChecker()); + ta.requestFocus(); + frame.setSize(400, 300); + return frame; + } +} + +// a KeyListener for debugging purposes +class KeyChecker extends KeyAdapter { + public void keyPressed(KeyEvent ev) { + System.out.println(ev); + } + + public void keyReleased(KeyEvent ev) { + System.out.println(ev); + } + + public void keyTyped(KeyEvent ev) { + System.out.println(ev); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/SelectionAndCaretColor.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/SelectionAndCaretColor.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/SelectionAndCaretColor.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/SelectionAndCaretColor.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2006, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6287895 + * @requires (os.family == "linux") + * @summary Test cursor and selected text incorrectly colored in TextField + * @key headful + * @run main SelectionAndCaretColor + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.EventQueue; +import java.awt.Font; +import java.awt.Frame; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.TextArea; +import java.awt.TextComponent; +import java.awt.TextField; +import java.awt.image.BufferedImage; + +public class SelectionAndCaretColor { + static TextField tf = new TextField(20); + static TextArea ta = new TextArea("", 1, 20, TextArea.SCROLLBARS_NONE); + static Robot r; + static Frame frame; + static volatile int flips; + + public static void main(String[] args) throws Exception { + try { + frame = new Frame("Selection and Caret color test"); + r = new Robot(); + + EventQueue.invokeAndWait(() -> { + frame.setLayout(new BorderLayout()); + tf.setFont(new Font("Monospaced", Font.PLAIN, 15)); + ta.setFont(new Font("Monospaced", Font.PLAIN, 15)); + + frame.add(tf, BorderLayout.NORTH); + frame.add(ta, BorderLayout.SOUTH); + frame.setSize(200, 200); + frame.setVisible(true); + }); + r.waitForIdle(); + r.delay(1000); + test(tf); + test(ta); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + private static int countFlips(TextComponent tc) { + int y = tc.getLocationOnScreen().y + tc.getHeight() / 2; + int x1 = tc.getLocationOnScreen().x + 5; + int x2 = tc.getLocationOnScreen().x + tc.getWidth() - 5; + + int[] fb = {tc.getBackground().getRGB(), tc.getForeground().getRGB()}; + int i = 0; + int flips = 0; + + BufferedImage img = r.createScreenCapture(new Rectangle(x1, y, x2 - x1, 1)); + for (int x = 0; x < x2 - x1; x++) { + int c = img.getRGB(x, 0); + if (c == fb[i]) { + ; + } else if (c == fb[1 - i]) { + flips++; + i = 1 - i; + } else { + throw new RuntimeException("Invalid color detected: " + + Integer.toString(c, 16) + " instead of " + + Integer.toString(fb[i], 16)); + } + } + return flips; + } + + private static void test(TextComponent tc) throws Exception { + if (tc instanceof TextField) { + System.out.println("TextField testing ..."); + } else if (tc instanceof TextArea) { + System.out.println("TextArea testing ..."); + } + + // now passing along the component's vertical center, + // skipping 5px from both sides, + // we should see bg - textcolor - bg - selcolor - + // seltextcolor - selcolor - bg + // that is bg-fg-bg-fg-bg-fg-bg, 6 flips + + EventQueue.invokeAndWait(() -> { + tc.setForeground(Color.green); + tc.setBackground(Color.magenta); + + tc.setText(" I I "); + tc.select(5, 10); + tc.requestFocus(); + }); + r.waitForIdle(); + r.delay(200); + EventQueue.invokeAndWait(() -> { + flips = countFlips(tc); + }); + if (flips != 6) { + throw new RuntimeException("Invalid number of flips: " + + flips + " instead of 6"); + } + EventQueue.invokeAndWait(() -> { + // same for caret: spaces in the tc, caret in the middle + // bg-fg-bg - 2 flips + + tc.select(0, 0); + tc.setText(" "); + tc.setCaretPosition(5); + }); + r.waitForIdle(); + r.delay(200); + + for (int i = 0; i < 10; i++) { + EventQueue.invokeAndWait(() -> { + flips = countFlips(tc); + }); + + if (flips == 2) { + break; + } + if (flips == 0) { + continue; + } + throw new RuntimeException("Invalid number of flips: " + + flips + " instead of 2"); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/SelectionTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/SelectionTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/SelectionTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/SelectionTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4056231 + * @summary Checks that TextComponents don't grab the global CDE selection + * upon construction if their own selection is null. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual SelectionTest + */ + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Frame; +import java.awt.TextArea; +import java.awt.TextField; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class SelectionTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. "Select some text in another window, then click the button.", + 2. "If the text in the other window is de-selected, the test FAILS.", + "If the text remains selected, the test PASSES." + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(initialize()) + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + Frame frame = new Frame("Selection Test"); + frame.setLayout(new BorderLayout()); + Button b = new Button("Select some text in another window, then" + + " click me"); + b.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + frame.add(new TextField("text field test")); + frame.add(new TextArea("text area test")); + } + }); + frame.add(b); + frame.setSize(400, 400); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/TextFieldMargin.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/TextFieldMargin.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextComponent/TextFieldMargin.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextComponent/TextFieldMargin.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4129511 + * @summary Tests that TextField margins are not exceedingly wide + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual TextFieldMargin + */ + +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.TextArea; +import java.awt.TextField; + +public class TextFieldMargin { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. Examine the TextField, Label, and TextArea to see + that the text is vertically aligned along the left + 2. If all are aligned along the left, then test PASS, + else test FAILS. + """; + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(TextFieldMargin::initialize) + .build() + .awaitAndCheck(); + } + + public static Frame initialize() { + Frame frame = new Frame("Frame with a text field & a label"); + frame.setLayout(new GridLayout(5, 1)); + TextField text_field = new TextField("Left Textfield"); + frame.add(text_field); + Label label = new Label("Left Label"); + frame.add(label); + TextArea text_area = new TextArea("Left Textfield"); + frame.add(text_area); + frame.setBounds(50, 50, 300, 300); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextField/SetEchoCharTest4/SetEchoCharTest4.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextField/SetEchoCharTest4/SetEchoCharTest4.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextField/SetEchoCharTest4/SetEchoCharTest4.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextField/SetEchoCharTest4/SetEchoCharTest4.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,7 +27,6 @@ import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.lang.reflect.InvocationTargetException; /* * @test @@ -54,16 +53,17 @@ Make sure the actual text matches what you typed in for each field. Press Pass if everything's ok, otherwise Fail - """; + """; public SetEchoCharTest4() { + super("SetEchoCharTest4"); setLayout(new FlowLayout()); tf1.setEchoChar('*'); tf2.setEchoChar('$'); tf3.setEchoChar('#'); addStuff(); b.addActionListener(this); - setSize (200,200); + setSize (300, 150); } private void addStuff() { @@ -78,7 +78,6 @@ PassFailJFrame.log("TextField2 = " + tf2.getText()); PassFailJFrame.log("TextField3 = " + tf3.getText()); PassFailJFrame.log("--------------"); - setVisible(false); remove(tf1); remove(tf2); remove(tf3); @@ -86,16 +85,14 @@ addStuff(); } - public static void main(String[] args) throws InterruptedException, - InvocationTargetException { + public static void main(String[] args) throws Exception { PassFailJFrame.builder() - .title("Set Echo Character Test") - .testUI(SetEchoCharTest4::new) - .instructions(INSTRUCTIONS) - .rows((int) INSTRUCTIONS.lines().count() + 1) - .columns(40) - .logArea() - .build() - .awaitAndCheck(); + .title("Set Echo Character Test") + .testUI(SetEchoCharTest4::new) + .instructions(INSTRUCTIONS) + .columns(40) + .logArea() + .build() + .awaitAndCheck(); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/TextField/SetEchoCharWordOpsTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/TextField/SetEchoCharWordOpsTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/TextField/SetEchoCharWordOpsTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/TextField/SetEchoCharWordOpsTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,7 +30,7 @@ /* * @test - * @bug 6191897 + * @bug 6191897 8354646 * @summary Verifies that ctrl+left/right does not move word-by-word in a TextField * with echo character set * @library /java/awt/regtesthelpers /test/lib diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Toolkit/DesktopProperties/DesktopPropertyTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/DesktopProperties/DesktopPropertyTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Toolkit/DesktopProperties/DesktopPropertyTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/DesktopProperties/DesktopPropertyTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,272 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4287882 + * @summary Tests internal use Windows properties + * @requires os.family == "windows" + * @key headful + * @run main DesktopPropertyTest + */ + +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; +import java.awt.Rectangle; +import java.awt.RenderingHints; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableModel; +import java.awt.Robot; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.Arrays; +import java.util.Vector; + +/* + * This is a test of new Windows-specific desktop + * properties added in Kestrel. + * + * The new properties are meant for the use of the + * Windows PLAF only and are not public at this time. + */ +public class DesktopPropertyTest { + private static JFrame frame; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + SwingUtilities.invokeAndWait(DesktopPropertyTest::runTest); + robot.waitForIdle(); + robot.delay(1000); + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void runTest() { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception e) { + throw new RuntimeException(e); + } + frame = new DesktopPropertyFrame(); + frame.setVisible(true); + } + + static class DesktopPropertyFrame extends JFrame { + JTable table; + + DesktopPropertyFrame() { + super("Toolkit.getDesktopProperty API Test"); + setBackground(Color.white); + add(new JScrollPane(createTable())); + setLocationRelativeTo(null); + setSize(500, 400); + } + + public JTable createTable() { + TableModel dataModel = new AbstractTableModel() { + final PropertyVector pv = new PropertyVector(); + + public int getColumnCount() { + return 3; + } + + public int getRowCount() { + return pv.size(); + } + + public String getColumnName(int column) { + String[] colnames = {"Property", "Type", "Value"}; + return colnames[column]; + } + + public Object getValueAt(int row, int col) { + Object[] prow = pv.get(row); + return prow[col]; + } + }; + + table = new JTable(dataModel); + table.setDefaultRenderer(Object.class, new DesktopPropertyRenderer()); + table.addMouseListener(new ClickListener()); + return table; + } + + class ClickListener extends MouseAdapter { + ClickListener() { + } + + public void mouseClicked(MouseEvent e) { + for (int row = 0; row <= table.getModel().getRowCount(); row++) { + Rectangle r = table.getCellRect(row, 2, false); + if (r.contains(e.getX(), e.getY())) { + Object value = table.getModel().getValueAt(row, 2); + if (value instanceof Runnable) { + ((Runnable) value).run(); + } + } + } + } + } + + class PropertyVector { + private static final int NAME = 0; + private static final int TYPE = 1; + private static final int VALUE = 2; + + private final Vector vector = new Vector<>(); + + PropertyVector() { + Object[] props = (Object[]) getToolkit() + .getDesktopProperty("win.propNames"); + if (props == null) { + throw new RuntimeException( + "'win.propNames' property not available. " + + "This test is valid only on Windows."); + } + for (Object prop : props) { + String propertyName = prop.toString(); + vector.addElement(createEntry(propertyName)); + } + } + + Object[] createEntry(String name) { + Object[] row = new Object[3]; + Object value = getToolkit().getDesktopProperty(name); + row[NAME] = name; + row[TYPE] = value.getClass().getName(); + row[VALUE] = value; + + System.out.println(Arrays.toString(row)); + // update this vector when property changes + getToolkit().addPropertyChangeListener(name, new DesktopPropertyChangeListener(row)); + return row; + } + + Object[] get(int row) { + return (Object[]) vector.elementAt(row); + } + + int size() { + return vector.size(); + } + + static class DesktopPropertyChangeListener implements PropertyChangeListener { + Object[] row; + + DesktopPropertyChangeListener(Object[] row) { + this.row = row; + } + + public void propertyChange(PropertyChangeEvent evt) { + this.row[VALUE] = evt.getNewValue(); + } + } + } + + static class DesktopPropertyRenderer implements TableCellRenderer { + ValueProp vprop = new ValueProp(); + FontProp fprop = new FontProp(); + ColorProp cprop = new ColorProp(); + RunnableProp rprop = new RunnableProp(); + RenderingHintsProp rhprop = new RenderingHintsProp(); + + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, + int row, int column) { + + ValueProp propComponent; + if (value instanceof Boolean + || value instanceof Integer + || value instanceof String) { + propComponent = vprop; + } else if (value instanceof Font) { + propComponent = fprop; + } else if (value instanceof Color) { + propComponent = cprop; + } else if (value instanceof Runnable) { + propComponent = rprop; + } else if (value instanceof RenderingHints) { + propComponent = rhprop; + } else { + throw new RuntimeException("ASSERT unexpected value %s / %s\n" + .formatted(value != null ? value.getClass() : "", value)); + } + + propComponent.setValue(value); + + return propComponent; + } + } + + static class ValueProp extends JLabel { + public void setValue(Object value) { + setText(value.toString()); + } + } + + static class FontProp extends ValueProp { + public void setValue(Object value) { + Font font = (Font) value; + String style; + if (font.getStyle() == Font.BOLD) { + style = "Bold"; + } else if (font.getStyle() > Font.BOLD) { + style = "BoldItalic"; + } else { + style = "Plain"; + } + setText(font.getName() + ", " + style + ", " + font.getSize()); + setFont(font); + } + } + + static class ColorProp extends ValueProp { + public void setValue(Object value) { + Color color = (Color) value; + setText("%d, %d, %d" + .formatted(color.getRed(), color.getGreen(), color.getBlue())); + setBackground(color); + setOpaque(true); + } + } + + static class RunnableProp extends ValueProp {} + static class RenderingHintsProp extends ValueProp {} + } +} \ No newline at end of file diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/TestWrapped.java openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/TestWrapped.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/TestWrapped.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/TestWrapped.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,55 +22,52 @@ */ /* - * test + * @test * @bug 6282388 - * @summary Tests that AWT use correct toolkit to be wrapped into HeadlessToolkit - * @author artem.ananiev@sun.com: area=awt.headless - * @run shell WrappedToolkitTest.sh + * @summary Tests that AWT uses correct toolkit wrapped into HeadlessToolkit + * @modules java.desktop/sun.awt:open + * @library /test/lib + * @run main/othervm -Djava.awt.headless=true TestWrapped */ -import java.awt.*; - -import java.lang.reflect.*; - -import sun.awt.*; - -public class TestWrapped -{ - public static void main(String[] args) - { - try - { - if (args.length != 1) { - System.err.println("No correct toolkit class name is specified, test is not run"); - System.exit(0); +import java.awt.Toolkit; +import java.lang.Class; +import java.lang.reflect.Field; + +import jdk.test.lib.Platform; + +public final class TestWrapped { + + private static final String HEADLESS_TOOLKIT = "sun.awt.HeadlessToolkit"; + private static final String MACOSX_TOOLKIT = "sun.lwawt.macosx.LWCToolkit"; + private static final String UNIX_TOOLKIT = "sun.awt.X11.XToolkit"; + private static final String WINDOWS_TOOLKIT = "sun.awt.windows.WToolkit"; + + public static void main(String[] args) throws Exception { + String expectedToolkitClassName; + if (Platform.isWindows()) { + expectedToolkitClassName = WINDOWS_TOOLKIT; + } else if (Platform.isOSX()) { + expectedToolkitClassName = MACOSX_TOOLKIT; + } else { + expectedToolkitClassName = UNIX_TOOLKIT; } - String correctToolkitClassName = args[0]; Toolkit tk = Toolkit.getDefaultToolkit(); - Class tkClass = tk.getClass(); - if (!tkClass.getName().equals("sun.awt.HeadlessToolkit")) - { - System.err.println(tkClass.getName()); - System.err.println("Error: default toolkit is not an instance of HeadlessToolkit"); - System.exit(-1); + Class tkClass = tk.getClass(); + if (!tkClass.getName().equals(HEADLESS_TOOLKIT)) { + System.err.println("Expected: " + HEADLESS_TOOLKIT); + System.err.println("Actual: " + tkClass.getName()); + throw new RuntimeException("Wrong default toolkit"); } Field f = tkClass.getDeclaredField("tk"); f.setAccessible(true); - Class wrappedClass = f.get(tk).getClass(); - if (!wrappedClass.getName().equals(correctToolkitClassName)) { - System.err.println(wrappedClass.getName()); - System.err.println("Error: wrapped toolkit is not an instance of " + correctToolkitClassName); - System.exit(-1); + Class wrappedClass = f.get(tk).getClass(); + if (!wrappedClass.getName().equals(expectedToolkitClassName)) { + System.err.println("Expected: " + expectedToolkitClassName); + System.err.println("Actual: " + wrappedClass.getName()); + throw new RuntimeException("Wrong wrapped toolkit"); } - } - catch (Exception z) - { - z.printStackTrace(System.err); - System.exit(-1); - } - - System.exit(0); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh --- openjdk-21-21.0.9+10/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/Headless/WrappedToolkitTest/WrappedToolkitTest.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,221 +0,0 @@ -#!/bin/ksh -p - -# -# Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. -# -# This code 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 -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# -# @test -# @bug 6282388 8030640 -# @summary Tests that AWT use correct toolkit to be wrapped into HeadlessToolkit -# @author artem.ananiev@sun.com: area=awt.headless -# compile TestWrapped.java -# @run shell WrappedToolkitTest.sh - -# Beginning of subroutines: -status=1 - -#Call this from anywhere to fail the test with an error message -# usage: fail "reason why the test failed" -fail() - { echo "The test failed :-(" - echo "$*" 1>&2 - echo "exit status was $status" - exit $status - } #end of fail() - -#Call this from anywhere to pass the test with a message -# usage: pass "reason why the test passed if applicable" -pass() - { echo "The test passed!!!" - echo "$*" 1>&2 - exit 0 - } #end of pass() - -# end of subroutines - - -# The beginning of the script proper - -# Checking for proper OS -OS=`uname -s` -case "$OS" in - AIX | CYGWIN* | Darwin | Linux ) - FILESEP="/" - ;; - - Windows* ) - FILESEP="\\" - ;; - - # catch all other OSs - * ) - echo "Unrecognized system! $OS" - fail "Unrecognized system! $OS" - ;; -esac - -# check that some executable or other file you need is available, abort if not -# note that the name of the executable is in the fail string as well. -# this is how to check for presence of the compiler, etc. -#RESOURCE=`whence SomeProgramOrFileNeeded` -#if [ "${RESOURCE}" = "" ] ; -# then fail "Need SomeProgramOrFileNeeded to perform the test" ; -#fi - -# Want this test to run standalone as well as in the harness, so do the -# following to copy the test's directory into the harness's scratch directory -# and set all appropriate variables: - -if [ -z "${TESTJAVA}" ] ; then - # TESTJAVA is not set, so the test is running stand-alone. - # TESTJAVA holds the path to the root directory of the build of the JDK - # to be tested. That is, any java files run explicitly in this shell - # should use TESTJAVA in the path to the java interpreter. - # So, we'll set this to the JDK spec'd on the command line. If none - # is given on the command line, tell the user that and use a cheesy - # default. - # THIS IS THE JDK BEING TESTED. - if [ -n "$1" ] ; - then TESTJAVA=$1 - else fail "no JDK specified on command line!" - fi - TESTSRC=. - TESTCLASSES=. - STANDALONE=1; -fi -echo "JDK under test is: $TESTJAVA" - -#if in test harness, then copy the entire directory that the test is in over -# to the scratch directory. This catches any support files needed by the test. -if [ -z "${STANDALONE}" ] ; - then cp ${TESTSRC}/* . -fi -case "$OS" in - Windows* | CYGWIN* ) - ${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} \ - --add-exports java.desktop/sun.awt=ALL-UNNAMED \ - --add-exports java.desktop/sun.awt.windows=ALL-UNNAMED ${CP} \ - *.java - status=$? - if [ ! $status -eq "0" ]; then - fail "Compilation failed"; - fi - ;; - - AIX | Linux ) - ${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} \ - --add-exports java.desktop/sun.awt=ALL-UNNAMED \ - --add-exports java.desktop/sun.awt.X11=ALL-UNNAMED ${CP} \ - *.java - status=$? - if [ ! $status -eq "0" ]; then - fail "Compilation failed"; - fi - ;; - - Darwin) - ${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} \ - --add-exports java.desktop/sun.awt=ALL-UNNAMED \ - --add-exports java.desktop/sun.lwawt.macosx=ALL-UNNAMED ${CP} \ - *.java - status=$? - if [ ! $status -eq "0" ]; then - fail "Compilation failed"; - fi - ;; - -esac - -#Just before executing anything, make sure it has executable permission! -chmod 777 ./* - -############### YOUR TEST CODE HERE!!!!!!! ############# - -case "$OS" in - Windows* | CYGWIN* ) - ${TESTJAVA}/bin/java ${TESTVMOPTS} -Djava.awt.headless=true \ - --add-opens java.desktop/sun.awt=ALL-UNNAMED \ - --add-opens java.desktop/sun.awt.windows=ALL-UNNAMED ${CP} \ - TestWrapped sun.awt.windows.WToolkit - status=$? - if [ ! $status -eq "0" ]; then - fail "Test FAILED: toolkit wrapped into HeadlessToolkit is not an instance of sun.awt.windows.WToolkit"; - fi - ${TESTJAVA}/bin/java ${TESTVMOPTS} -Djava.awt.headless=true \ - --add-opens java.desktop/sun.awt=ALL-UNNAMED \ - --add-opens java.desktop/sun.awt.windows=ALL-UNNAMED ${CP} \ - -Dawt.toolkit=sun.awt.windows.WToolkit \ - TestWrapped sun.awt.windows.WToolkit - status=$? - if [ ! $status -eq "0" ]; then - fail "Test FAILED: toolkit wrapped into HeadlessToolkit is not an instance of sun.awt.windows.WToolkit"; - fi - ;; - - AIX | Linux ) - ${TESTJAVA}/bin/java ${TESTVMOPTS} -Djava.awt.headless=true \ - --add-opens java.desktop/sun.awt=ALL-UNNAMED \ - --add-opens java.desktop/sun.awt.X11=ALL-UNNAMED ${CP} \ - -Dawt.toolkit=sun.awt.X11.XToolkit \ - TestWrapped sun.awt.X11.XToolkit - status=$? - if [ ! $status -eq "0" ]; then - fail "Test FAILED: toolkit wrapped into HeadlessToolkit is not an instance of sun.awt.xawt.XToolkit"; - fi - AWT_TOOLKIT=XToolkit ${TESTJAVA}/bin/java ${TESTVMOPTS} \ - --add-opens java.desktop/sun.awt=ALL-UNNAMED \ - --add-opens java.desktop/sun.awt.X11=ALL-UNNAMED ${CP} \ - -Djava.awt.headless=true \ - TestWrapped sun.awt.X11.XToolkit - status=$? - if [ ! $status -eq "0" ]; then - fail "Test FAILED: toolkit wrapped into HeadlessToolkit is not an instance of sun.awt.xawt.XToolkit"; - fi - ;; - - Darwin) - ${TESTJAVA}/bin/java ${TESTVMOPTS} -Djava.awt.headless=true \ - --add-opens java.desktop/sun.awt=ALL-UNNAMED \ - --add-opens java.desktop/sun.lwawt.macosx=ALL-UNNAMED ${CP} \ - TestWrapped sun.lwawt.macosx.LWCToolkit - status=$? - if [ ! $status -eq "0" ]; then - fail "Test FAILED: toolkit wrapped into HeadlessToolkit is not an instance of sun.lwawt.macosx.LWCToolkit"; - fi - ${TESTJAVA}/bin/java ${TESTVMOPTS} -Djava.awt.headless=true \ - --add-opens java.desktop/sun.awt=ALL-UNNAMED \ - --add-opens java.desktop/sun.lwawt.macosx=ALL-UNNAMED ${CP} \ - -Dawt.toolkit=sun.lwawt.macosx.LWCToolkit \ - TestWrapped sun.lwawt.macosx.LWCToolkit - status=$? - if [ ! $status -eq "0" ]; then - fail "Test FAILED: toolkit wrapped into HeadlessToolkit is not an instance of sun.lwawt.macosx.LWCToolkit"; - fi - ;; - -esac - -pass "All the tests are PASSED"; - -#For additional examples of how to write platform independent KSH scripts, -# see the jtreg file itself. It is a KSH script for both Solaris and Win32 diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/Toolkit/TimeUnsignedConversionTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/TimeUnsignedConversionTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/Toolkit/TimeUnsignedConversionTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/Toolkit/TimeUnsignedConversionTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,128 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 5097241 + * @summary Tests the problem of time type conversion on XToolkit. The conversion should be unsigned. + * @requires os.family == "linux" + * @key headful + * @library /java/awt/regtesthelpers /test/lib + * @build Util jtreg.SkippedException + * @run main/othervm -Dsun.awt.disableGtkFileDialogs=true TimeUnsignedConversionTest + */ + +import java.awt.Button; +import java.awt.EventQueue; +import java.awt.FileDialog; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.Robot; +import java.awt.Toolkit; +import java.awt.event.KeyEvent; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import jtreg.SkippedException; +import test.java.awt.regtesthelpers.Util; + +public class TimeUnsignedConversionTest { + static Robot robot; + static Frame frame; + static volatile Button button; + static volatile FileDialog dialog; + static volatile boolean dialogShown = false; + + static final CountDownLatch passedLatch = new CountDownLatch(1); + + public static void main(String[] args) throws Exception { + if (!Toolkit.getDefaultToolkit().getClass().getName().equals("sun.awt.X11.XToolkit")) { + throw new SkippedException("XAWT test only! Skipped."); + } + + try { + EventQueue.invokeAndWait(TimeUnsignedConversionTest::createAndShowGUI); + test(); + } finally { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + private static void createAndShowGUI() { + frame = new Frame("TimeUnsignedConversionTest frame"); + button = new Button("Show Dialog"); + dialog = new FileDialog(frame, "TimeUnsignedConversionTest Dialog", FileDialog.LOAD); + + Toolkit.getDefaultToolkit().addAWTEventListener(e -> { + System.out.println(e); + if (dialogShown && ((KeyEvent)e).getKeyCode() == KeyEvent.VK_K) { + passedLatch.countDown(); + } + }, KeyEvent.KEY_EVENT_MASK); + + frame.setLayout(new FlowLayout()); + frame.add(button); + + button.addActionListener(ae -> { + if (ae.getActionCommand().equals("Show Dialog")) { + dialog.setSize(200, 200); + dialog.setLocationRelativeTo(frame); + dialog.setVisible(true); + } + }); + + frame.setSize(100, 100); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private static void test() throws Exception { + robot = new Robot(); + robot.waitForIdle(); + + Util.waitTillShown(button); + + robot.waitForIdle(); + robot.keyPress(KeyEvent.VK_SPACE); + robot.delay(50); + robot.keyRelease(KeyEvent.VK_SPACE); + + Util.waitTillShown(dialog); + dialogShown = true; + + robot.waitForIdle(); + robot.keyPress(KeyEvent.VK_K); + robot.delay(50); + robot.keyRelease(KeyEvent.VK_K); + + if (!passedLatch.await(2, TimeUnit.SECONDS)) { + throw new RuntimeException("Test failed!"); + } + + System.out.println("Test passed."); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/SerializationSpecTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/SerializationSpecTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/SerializationSpecTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/SerializationSpecTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; +import java.io.OptionalDataException; + +/** + * @test + * @bug 8367384 + * @summary Verify ICC_Profile serialization per spec, all name/data cases + */ +public final class SerializationSpecTest { + + public static void main(String[] args) throws Exception { + // Serialization form for ICC_Profile includes version, profile name, + // and profile data. If the name is invalid or does not match a standard + // profile, the data is used. An exception is thrown only if both the + // name and the data are invalid, or if one of them is missing or is of + // the wrong type. + + // Naming conventions used in test file names: + // null : null reference + // valid : valid standard profile name or valid profile data (byte[]) + // invalid : unrecognized name or data with incorrect ICC header + // wrongType: incorrect type, e.g., int[] instead of String or byte[] + + // No name or data + test("empty", OptionalDataException.class); + + // Cases where only the profile name is present (no profile data) + test("null", OptionalDataException.class); + test("valid", OptionalDataException.class); + test("invalid", OptionalDataException.class); + test("wrongType", InvalidObjectException.class); + + // The test files are named as _.ser + test("null_null", InvalidObjectException.class); + test("null_valid", null); // valid data is enough if name is null + test("null_invalid", InvalidObjectException.class); + test("null_wrongType", InvalidObjectException.class); + + test("invalid_null", InvalidObjectException.class); + test("invalid_valid", null); // valid data is enough if name is invalid + test("invalid_invalid", InvalidObjectException.class); + test("invalid_wrongType", InvalidObjectException.class); + + test("wrongType_null", InvalidObjectException.class); + test("wrongType_valid", InvalidObjectException.class); + test("wrongType_invalid", InvalidObjectException.class); + test("wrongType_wrongType", InvalidObjectException.class); + + test("valid_null", null); // the valid name is enough + test("valid_valid", null); // the valid name is enough + test("valid_invalid", null); // the valid name is enough + test("valid_wrongType", InvalidObjectException.class); + } + + private static void test(String test, Class expected) { + String fileName = test + ".ser"; + File file = new File(System.getProperty("test.src", "."), fileName); + Class actual = null; + try (var fis = new FileInputStream(file); + var ois = new ObjectInputStream(fis)) + { + ois.readObject(); + } catch (Exception e) { + actual = e.getClass(); + } + if (actual != expected) { + System.err.println("Test: " + test); + System.err.println("Expected: " + expected); + System.err.println("Actual: " + actual); + throw new RuntimeException("Test failed"); + } + } +} Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/empty.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/empty.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_invalid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_invalid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_null.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_null.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_valid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_valid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_wrongType.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/invalid_wrongType.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_invalid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_invalid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_null.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_null.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_valid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_valid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_wrongType.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/null_wrongType.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_invalid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_invalid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_null.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_null.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_valid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_valid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_wrongType.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/valid_wrongType.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_invalid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_invalid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_null.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_null.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_valid.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_valid.ser differ Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_wrongType.ser and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/SerializationSpecTest/wrongType_wrongType.ser differ diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/StandardProfilesRoundTrip.java openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/StandardProfilesRoundTrip.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/Serialization/StandardProfilesRoundTrip.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/Serialization/StandardProfilesRoundTrip.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.color.ColorSpace; +import java.awt.color.ICC_Profile; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + +/** + * @test + * @bug 8367384 + * @summary Checks ICC_Profile serialization for standard profiles + */ +public final class StandardProfilesRoundTrip { + + private static final ICC_Profile[] PROFILES = { + ICC_Profile.getInstance(ColorSpace.CS_sRGB), + ICC_Profile.getInstance(ColorSpace.CS_LINEAR_RGB), + ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ), + ICC_Profile.getInstance(ColorSpace.CS_PYCC), + ICC_Profile.getInstance(ColorSpace.CS_GRAY) + }; + + public static void main(String[] args) throws Exception { + // Test profiles one by one + for (ICC_Profile profile : PROFILES) { + test(profile); + } + // Test all profiles at once + test(PROFILES); + } + + private static void test(ICC_Profile... profiles) throws Exception { + byte[] data; + try (var bos = new ByteArrayOutputStream(); + var oos = new ObjectOutputStream(bos)) + { + for (ICC_Profile p : profiles) { + oos.writeObject(p); + } + data = bos.toByteArray(); + } + try (var ois = new ObjectInputStream(new ByteArrayInputStream(data))) { + for (ICC_Profile p : profiles) { + if (p != ois.readObject()) { + throw new RuntimeException("Wrong deserialized object"); + } + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/SerializedFormSize.java openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/SerializedFormSize.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/SerializedFormSize.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/SerializedFormSize.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.color.ColorSpace; +import java.awt.color.ICC_Profile; +import java.io.ByteArrayOutputStream; +import java.io.ObjectOutputStream; + +/** + * @test + * @bug 8369032 + * @summary Checks the size of the serialized ICC_Profile for standard and + * non-standard profiles. + */ +public final class SerializedFormSize { + + private static final ICC_Profile[] PROFILES = { + ICC_Profile.getInstance(ColorSpace.CS_sRGB), + ICC_Profile.getInstance(ColorSpace.CS_LINEAR_RGB), + ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ), + ICC_Profile.getInstance(ColorSpace.CS_PYCC), + ICC_Profile.getInstance(ColorSpace.CS_GRAY) + }; + + public static void main(String[] args) throws Exception { + for (ICC_Profile profile : PROFILES) { + byte[] data = profile.getData(); + int dataSize = data.length; + int min = 3; // At least version, name and data fields + int max = 200; // Small enough to confirm no data saved + + // Standard profile: should serialize to a small size, no data + test(profile, min, max); + // Non-standard profile: includes full data, but only once + test(ICC_Profile.getInstance(data), dataSize, dataSize + max); + } + } + + private static void test(ICC_Profile p, int min, int max) throws Exception { + try (var bos = new ByteArrayOutputStream(); + var oos = new ObjectOutputStream(bos)) + { + oos.writeObject(p); + int size = bos.size(); + if (size < min || size > max) { + System.err.println("Expected: >= " + min + " and <= " + max); + System.err.println("Actual: " + size); + throw new RuntimeException("Wrong size"); + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/ValidateICCHeaderData/ValidateICCHeaderData.java openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/ValidateICCHeaderData/ValidateICCHeaderData.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/ValidateICCHeaderData/ValidateICCHeaderData.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/ValidateICCHeaderData/ValidateICCHeaderData.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,261 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8337703 + * @summary To verify if ICC_Profile's setData() and getInstance() methods + * validate header data and throw IAE for invalid values. + * @run main ValidateICCHeaderData + */ + +import java.awt.color.ColorSpace; +import java.awt.color.ICC_Profile; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.math.BigInteger; +import java.nio.ByteBuffer; + +public class ValidateICCHeaderData { + private static ICC_Profile profile; + + private static final boolean DEBUG = false; + private static final int VALID_HEADER_SIZE = 128; + private static final int HEADER_TAG = ICC_Profile.icSigHead; + private static final int PROFILE_CLASS_START_INDEX = ICC_Profile.icHdrDeviceClass; + private static final int COLOR_SPACE_START_INDEX = ICC_Profile.icHdrColorSpace; + private static final int RENDER_INTENT_START_INDEX = ICC_Profile.icHdrRenderingIntent; + private static final int PCS_START_INDEX = ICC_Profile.icHdrPcs; + + private static final int[] VALID_PROFILE_CLASS = new int[] { + ICC_Profile.icSigInputClass, ICC_Profile.icSigDisplayClass, + ICC_Profile.icSigOutputClass, ICC_Profile.icSigLinkClass, + ICC_Profile.icSigAbstractClass, ICC_Profile.icSigColorSpaceClass, + ICC_Profile.icSigNamedColorClass + }; + + private static final int[] VALID_COLOR_SPACE = new int[] { + ICC_Profile.icSigXYZData, ICC_Profile.icSigLabData, + ICC_Profile.icSigLuvData, ICC_Profile.icSigYCbCrData, + ICC_Profile.icSigYxyData, ICC_Profile.icSigRgbData, + ICC_Profile.icSigGrayData, ICC_Profile.icSigHsvData, + ICC_Profile.icSigHlsData, ICC_Profile.icSigCmykData, + ICC_Profile.icSigSpace2CLR, ICC_Profile.icSigSpace3CLR, + ICC_Profile.icSigSpace4CLR, ICC_Profile.icSigSpace5CLR, + ICC_Profile.icSigSpace6CLR, ICC_Profile.icSigSpace7CLR, + ICC_Profile.icSigSpace8CLR, ICC_Profile.icSigSpace9CLR, + ICC_Profile.icSigSpaceACLR, ICC_Profile.icSigSpaceBCLR, + ICC_Profile.icSigSpaceCCLR, ICC_Profile.icSigSpaceDCLR, + ICC_Profile.icSigSpaceECLR, ICC_Profile.icSigSpaceFCLR, + ICC_Profile.icSigCmyData + }; + + private static final int[] VALID_RENDER_INTENT = new int[] { + ICC_Profile.icPerceptual, ICC_Profile.icMediaRelativeColorimetric, + ICC_Profile.icSaturation, ICC_Profile.icAbsoluteColorimetric + }; + + private static void createCopyOfBuiltInProfile() { + ICC_Profile builtInProfile = ICC_Profile.getInstance(ColorSpace.CS_sRGB); + //copy of SRGB BuiltIn Profile that can be modified + //using ICC_Profile.setData() + profile = ICC_Profile.getInstance(builtInProfile.getData()); + } + + public static void main(String[] args) throws Exception { + createCopyOfBuiltInProfile(); + + System.out.println("CASE 1: Testing VALID Profile Classes ..."); + testValidHeaderData(VALID_PROFILE_CLASS, PROFILE_CLASS_START_INDEX, 4); + System.out.println("CASE 1: Passed \n"); + + // PCS field validation for Profile class != DEVICE_LINK + System.out.println("CASE 2: Testing VALID PCS Type" + + " for Profile class != DEVICE_LINK ..."); + testValidHeaderData(new int[] {ICC_Profile.icSigXYZData, ICC_Profile.icSigLabData}, + PCS_START_INDEX, 4); + System.out.println("CASE 2: Passed \n"); + + System.out.println("CASE 3: Testing INVALID PCS Type" + + " for Profile class != DEVICE_LINK ..."); + testInvalidHeaderData(ICC_Profile.icSigCmykData, PCS_START_INDEX, 4); + System.out.println("CASE 3: Passed \n"); + + System.out.println("CASE 4: Testing DEVICE LINK PROFILE CLASS ..."); + testValidHeaderData(new int[] {ICC_Profile.icSigLinkClass}, + PROFILE_CLASS_START_INDEX, 4); + //to check if instantiating BufferedImage with + //ICC_Profile device class = CLASS_DEVICELINK does not throw IAE. + BufferedImage img = new BufferedImage(100, 100, + BufferedImage.TYPE_3BYTE_BGR); + System.out.println("CASE 4: Passed \n"); + + // PCS field validation for Profile class == DEVICE_LINK + System.out.println("CASE 5: Testing VALID PCS Type" + + " for Profile class == DEVICE_LINK ..."); + testValidHeaderData(VALID_COLOR_SPACE, PCS_START_INDEX, 4); + System.out.println("CASE 5: Passed \n"); + + System.out.println("CASE 6: Testing INVALID PCS Type" + + " for Profile class == DEVICE_LINK ..."); + //original icSigLabData = 0x4C616220 + int invalidSigLabData = 0x4C616221; + testInvalidHeaderData(invalidSigLabData, PCS_START_INDEX, 4); + System.out.println("CASE 6: Passed \n"); + + System.out.println("CASE 7: Testing VALID Color Spaces ..."); + testValidHeaderData(VALID_COLOR_SPACE, COLOR_SPACE_START_INDEX, 4); + System.out.println("CASE 7: Passed \n"); + + System.out.println("CASE 8: Testing VALID Rendering Intent ..."); + testValidHeaderData(VALID_RENDER_INTENT, RENDER_INTENT_START_INDEX, 4); + System.out.println("CASE 8: Passed \n"); + + System.out.println("CASE 9: Testing INVALID Profile Class ..."); + //original icSigInputClass = 0x73636E72 + int invalidSigInputClass = 0x73636E70; + testInvalidHeaderData(invalidSigInputClass, PROFILE_CLASS_START_INDEX, 4); + System.out.println("CASE 9: Passed \n"); + + System.out.println("CASE 10: Testing INVALID Color Space ..."); + //original icSigXYZData = 0x58595A20 + int invalidSigXYZData = 0x58595A21; + testInvalidHeaderData(invalidSigXYZData, COLOR_SPACE_START_INDEX, 4); + System.out.println("CASE 10: Passed \n"); + + System.out.println("CASE 11: Testing INVALID Rendering Intent ..."); + //valid rendering intent values are 0-3 + int invalidRenderIntent = 5; + testInvalidHeaderData(invalidRenderIntent, RENDER_INTENT_START_INDEX, 4); + System.out.println("CASE 11: Passed \n"); + + System.out.println("CASE 12: Testing INVALID Header Size ..."); + testInvalidHeaderSize(); + System.out.println("CASE 12: Passed \n"); + + System.out.println("CASE 13: Testing ICC_Profile.getInstance(..)" + + " with VALID profile data ..."); + testProfileCreation(true); + System.out.println("CASE 13: Passed \n"); + + System.out.println("CASE 14: Testing ICC_Profile.getInstance(..)" + + " with INVALID profile data ..."); + testProfileCreation(false); + System.out.println("CASE 14: Passed \n"); + + System.out.println("CASE 15: Testing loading of ICC_Profile from file ..."); + testLoading(); + System.out.println("CASE 15: Passed \n"); + + System.out.println("Successfully completed testing all 15 cases. Test Passed !!"); + } + + private static void testValidHeaderData(int[] validData, int startIndex, + int fieldLength) { + for (int value : validData) { + setTag(value, startIndex, fieldLength); + } + } + + private static void testInvalidHeaderData(int invalidData, int startIndex, + int fieldLength) { + try { + setTag(invalidData, startIndex, fieldLength); + throw new RuntimeException("Test Failed ! Expected IAE NOT thrown"); + } catch (IllegalArgumentException iae) { + System.out.println("Expected IAE thrown: " + iae.getMessage()); + } + } + + private static void setTag(int value, int startIndex, int fieldLength) { + byte[] byteArray; + if (startIndex == RENDER_INTENT_START_INDEX) { + byteArray = ByteBuffer.allocate(4).putInt(value).array(); + } else { + BigInteger big = BigInteger.valueOf(value); + byteArray = (big.toByteArray()); + } + + if (DEBUG) { + System.out.print("Byte Array : "); + for (int i = 0; i < byteArray.length; i++) { + System.out.print(byteArray[i] + " "); + } + System.out.println("\n"); + } + + byte[] iccProfileHeaderData = profile.getData(HEADER_TAG); + System.arraycopy(byteArray, 0, iccProfileHeaderData, startIndex, fieldLength); + profile.setData(HEADER_TAG, iccProfileHeaderData); + } + + private static void testProfileCreation(boolean validCase) { + ICC_Profile builtInProfile = ICC_Profile.getInstance(ColorSpace.CS_GRAY); + byte[] profileData = builtInProfile.getData(); + + int validDeviceClass = ICC_Profile.icSigInputClass; + BigInteger big = BigInteger.valueOf(validDeviceClass); + //valid case set device class to 0x73636E72 (icSigInputClass) + //invalid case set device class to 0x00000000 + byte[] field = validCase ? big.toByteArray() + : ByteBuffer.allocate(4).putInt(0).array(); + System.arraycopy(field, 0, profileData, PROFILE_CLASS_START_INDEX, 4); + + try { + ICC_Profile.getInstance(profileData); + if (!validCase) { + throw new RuntimeException("Test Failed ! Expected IAE NOT thrown"); + } + } catch (IllegalArgumentException iae) { + if (!validCase) { + System.out.println("Expected IAE thrown: " + iae.getMessage()); + } else { + throw new RuntimeException("Unexpected IAE thrown"); + } + } + } + + private static void testInvalidHeaderSize() { + byte[] iccProfileHeaderData = profile.getData(HEADER_TAG); + byte[] invalidHeaderSize = new byte[VALID_HEADER_SIZE - 1]; + System.arraycopy(iccProfileHeaderData, 0, + invalidHeaderSize, 0, invalidHeaderSize.length); + try { + profile.setData(HEADER_TAG, invalidHeaderSize); + throw new RuntimeException("Test Failed ! Expected IAE NOT thrown"); + } catch (IllegalArgumentException iae) { + System.out.println("Expected IAE thrown: " + iae.getMessage()); + } + } + + private static void testLoading() throws IOException { + // invalidSRGB.icc is a profile file that was produced by an older JDK + // When attempting to load it, the current JDK is expected to throw IAE + try { + ICC_Profile.getInstance("./invalidSRGB.icc"); + throw new RuntimeException("Test Failed ! Expected IAE NOT thrown"); + } catch (IllegalArgumentException iae) { + System.out.println("Expected IAE thrown: " + iae.getMessage()); + } + } +} Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/java/awt/color/ICC_Profile/ValidateICCHeaderData/invalidSRGB.icc and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/java/awt/color/ICC_Profile/ValidateICCHeaderData/invalidSRGB.icc differ diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/datatransfer/ClipboardPerformanceTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/ClipboardPerformanceTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/datatransfer/ClipboardPerformanceTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/ClipboardPerformanceTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4463560 + * @requires (os.family == "windows") + * @summary Tests that datatransfer doesn't take too much time to complete + * @key headful + * @library /test/lib + * @run main/timeout=300 ClipboardPerformanceTest + */ + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import jdk.test.lib.process.OutputAnalyzer; +import jdk.test.lib.process.ProcessTools; + +public class ClipboardPerformanceTest { + public static final int CODE_FAILURE = 1; + public static final int CODE_OTHER_FAILURE = 2; + static String eoln; + static char[] text; + public static final int ARRAY_SIZE = 100000; + public static final int RATIO_THRESHOLD = 10; + + public static void main(String[] args) throws Exception { + if (args.length == 0) { + ClipboardPerformanceTest clipboardPerformanceTest = new ClipboardPerformanceTest(); + clipboardPerformanceTest.initialize(); + return; + } + + long before, after, oldTime, newTime; + float ratio; + + try { + Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); + before = System.currentTimeMillis(); + String ss = (String) t.getTransferData(new DataFlavor("text/plain; class=java.lang.String")); + after = System.currentTimeMillis(); + + System.err.println("Size: " + ss.length()); + newTime = after - before; + System.err.println("Time consumed: " + newTime); + + initArray(); + + StringBuffer buf = new StringBuffer(new String(text)); + int eoln_len = eoln.length(); + before = System.currentTimeMillis(); + + for (int i = 0; i + eoln_len <= buf.length(); i++) { + if (eoln.equals(buf.substring(i, i + eoln_len))) { + buf.replace(i, i + eoln_len, "\n"); + } + } + + after = System.currentTimeMillis(); + oldTime = after - before; + System.err.println("Old algorithm: " + oldTime); + ratio = oldTime / newTime; + System.err.println("Ratio: " + ratio); + + if (ratio < RATIO_THRESHOLD) { + System.out.println("Time ratio failure!!"); + System.exit(CODE_FAILURE); + } + } catch (Throwable e) { + e.printStackTrace(); + System.exit(CODE_OTHER_FAILURE); + } + System.out.println("Test Pass!"); + } + + public static void initArray() { + text = new char[ARRAY_SIZE + 2]; + + for (int i = 0; i < ARRAY_SIZE; i += 3) { + text[i] = '\r'; + text[i + 1] = '\n'; + text[i + 2] = 'a'; + } + eoln = "\r\n"; + } + + public void initialize() throws Exception { + initArray(); + Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); + cb.setContents(new StringSelection(new String(text)), null); + + ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder( + ClipboardPerformanceTest.class.getName(), + "child" + ); + + Process process = ProcessTools.startProcess("Child", pb); + OutputAnalyzer outputAnalyzer = new OutputAnalyzer(process); + + if (!process.waitFor(15, TimeUnit.SECONDS)) { + process.destroyForcibly(); + throw new TimeoutException("Timed out waiting for Child"); + } + + outputAnalyzer.shouldHaveExitValue(0); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -79,7 +79,7 @@ ProcessResults processResults = - // ProcessCommunicator.executeChildProcess(this.getClass()," -cp \"C:\\Documents and Settings\\df153228\\IdeaProjects\\UnicodeTestDebug\\out\\production\\UnicodeTestDebug\" -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 ", args); + // ProcessCommunicator.executeChildProcess(this.getClass()," -cp \"C:\\Documents and Settings\\df153228\\IdeaProjects\\UnicodeTestDebug\\out\\production\\UnicodeTestDebug\" -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 ", args); ProcessCommunicator.executeChildProcess(this.getClass(), args); verifyTestResults(processResults); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/datatransfer/HTMLTransferConsoleOutputTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/HTMLTransferConsoleOutputTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/datatransfer/HTMLTransferConsoleOutputTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/HTMLTransferConsoleOutputTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4638351 + * @summary tests that HTML transfer doesn't cause console output + * @key headful + * @library /test/lib + * @run main HTMLTransferConsoleOutputTest + */ + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.ClipboardOwner; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; +import java.io.UnsupportedEncodingException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import jdk.test.lib.process.OutputAnalyzer; +import jdk.test.lib.process.ProcessTools; + +public class HTMLTransferConsoleOutputTest implements ClipboardOwner { + static final Clipboard clipboard = + Toolkit.getDefaultToolkit().getSystemClipboard(); + static final DataFlavor dataFlavor = + new DataFlavor("text/html; class=java.lang.String", null); + static final String magic = "TESTMAGICSTRING"; + static final Transferable transferable = new Transferable() { + final DataFlavor[] flavors = new DataFlavor[]{dataFlavor}; + final String data = "" + magic + ""; + + public DataFlavor[] getTransferDataFlavors() { + return flavors; + } + + public boolean isDataFlavorSupported(DataFlavor df) { + return dataFlavor.equals(df); + } + + public Object getTransferData(DataFlavor df) + throws UnsupportedFlavorException { + if (!isDataFlavorSupported(df)) { + throw new UnsupportedFlavorException(df); + } + return data; + } + }; + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + public static final int CLIPBOARD_DELAY = 1000; + + public static void main(String[] args) throws Exception { + if (args.length == 0) { + HTMLTransferConsoleOutputTest htmlTransferConsoleOutputTest = new HTMLTransferConsoleOutputTest(); + htmlTransferConsoleOutputTest.initialize(); + return; + } + final ClipboardOwner clipboardOwner = new ClipboardOwner() { + public void lostOwnership(Clipboard clip, + Transferable contents) { + System.exit(0); + } + }; + clipboard.setContents(transferable, clipboardOwner); + final Object o = new Object(); + synchronized (o) { + try { + o.wait(); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } + } + System.out.println("Test Pass!"); + } + + public void initialize() throws Exception { + clipboard.setContents(transferable, this); + ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder( + HTMLTransferConsoleOutputTest.class.getName(), + "child" + ); + + Process process = ProcessTools.startProcess("Child", pb); + OutputAnalyzer outputAnalyzer = new OutputAnalyzer(process); + + if (!process.waitFor(15, TimeUnit.SECONDS)) { + process.destroyForcibly(); + throw new TimeoutException("Timed out waiting for Child"); + } + + byte[] bytes = baos.toByteArray(); + String string = null; + try { + string = new String(bytes, "ASCII"); + } catch (UnsupportedEncodingException uee) { + uee.printStackTrace(); + } + if (string.lastIndexOf(magic) != -1) { + throw new RuntimeException("Test failed. Output contains:" + + string); + } + + outputAnalyzer.shouldHaveExitValue(0); + } + + + static class ForkOutputStream extends OutputStream { + final OutputStream outputStream1; + final OutputStream outputStream2; + + public ForkOutputStream(OutputStream os1, OutputStream os2) { + outputStream1 = os1; + outputStream2 = os2; + } + + public void write(int b) throws IOException { + outputStream1.write(b); + outputStream2.write(b); + } + + public void flush() throws IOException { + outputStream1.flush(); + outputStream2.flush(); + } + + public void close() throws IOException { + outputStream1.close(); + outputStream2.close(); + } + } + + public void lostOwnership(Clipboard clip, Transferable contents) { + final Runnable r = () -> { + try { + Thread.sleep(CLIPBOARD_DELAY); + } catch (InterruptedException e) { + e.printStackTrace(); + } + final PrintStream oldOut = System.out; + final PrintStream newOut = + new PrintStream(new ForkOutputStream(oldOut, baos)); + Transferable t = clipboard.getContents(null); + try { + System.setOut(newOut); + t.getTransferData(dataFlavor); + System.setOut(oldOut); + } catch (IOException | UnsupportedFlavorException ioe) { + ioe.printStackTrace(); + } + clipboard.setContents(transferable, null); + }; + final Thread t = new Thread(r); + t.start(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/datatransfer/ImageTransferCrashTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/ImageTransferCrashTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/datatransfer/ImageTransferCrashTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/datatransfer/ImageTransferCrashTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4513976 + * @summary tests that inter-JVM image transfer doesn't cause crash + * @key headful + * @library /test/lib + * @run main ImageTransferCrashTest + */ + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.ClipboardOwner; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.awt.image.BufferedImage; +import java.awt.image.WritableRaster; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import jdk.test.lib.process.OutputAnalyzer; +import jdk.test.lib.process.ProcessTools; + +public class ImageTransferCrashTest implements ClipboardOwner { + static final Clipboard clipboard = + Toolkit.getDefaultToolkit().getSystemClipboard(); + final Transferable textTransferable = new StringSelection("TEXT"); + public static final int CLIPBOARD_DELAY = 10; + + public static void main(String[] args) throws Exception { + if (args.length == 0) { + ImageTransferCrashTest imageTransferCrashTest = new ImageTransferCrashTest(); + imageTransferCrashTest.initialize(); + return; + } + final ClipboardOwner clipboardOwner = (clip, contents) -> System.exit(0); + final int width = 100; + final int height = 100; + final BufferedImage bufferedImage = + new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + final WritableRaster writableRaster = + bufferedImage.getWritableTile(0, 0); + final int[] color = new int[]{0x80, 0x80, 0x80}; + for (int i = 0; i < width; i++) { + for (int j = 0; j < height; j++) { + writableRaster.setPixel(i, j, color); + } + } + bufferedImage.releaseWritableTile(0, 0); + + final Transferable imageTransferable = new Transferable() { + final DataFlavor[] flavors = new DataFlavor[]{ + DataFlavor.imageFlavor}; + + public DataFlavor[] getTransferDataFlavors() { + return flavors; + } + + public boolean isDataFlavorSupported(DataFlavor df) { + return DataFlavor.imageFlavor.equals(df); + } + + public Object getTransferData(DataFlavor df) + throws UnsupportedFlavorException { + if (!isDataFlavorSupported(df)) { + throw new UnsupportedFlavorException(df); + } + return bufferedImage; + } + }; + clipboard.setContents(imageTransferable, clipboardOwner); + final Object o = new Object(); + synchronized (o) { + try { + o.wait(); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } + } + System.out.println("Test Pass!"); + } + + public void initialize() throws Exception { + clipboard.setContents(textTransferable, this); + ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder( + ImageTransferCrashTest.class.getName(), + "child" + ); + + Process process = ProcessTools.startProcess("Child", pb); + OutputAnalyzer outputAnalyzer = new OutputAnalyzer(process); + + if (!process.waitFor(15, TimeUnit.SECONDS)) { + process.destroyForcibly(); + throw new TimeoutException("Timed out waiting for Child"); + } + + outputAnalyzer.shouldHaveExitValue(0); + } + + public void lostOwnership(Clipboard clip, Transferable contents) { + final Runnable r = () -> { + while (true) { + try { + Thread.sleep(CLIPBOARD_DELAY); + Transferable t = clipboard.getContents(null); + t.getTransferData(DataFlavor.imageFlavor); + } catch (IllegalStateException e) { + e.printStackTrace(); + System.err.println("clipboard is not prepared yet"); + continue; + } catch (Exception e) { + e.printStackTrace(); + } + break; + } + clipboard.setContents(textTransferable, null); + }; + final Thread t = new Thread(r); + t.start(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.html openjdk-21-21.0.10+7/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.html --- openjdk-21-21.0.9+10/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.html 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ - - - - - - DnDToWordpadTest - - - -

DnDFileGroupDescriptor
Bug ID: 6242241

- -

See the dialog box (usually in upper left corner) for instructions

- - - - diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.java openjdk-21-21.0.10+7/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,188 +1,80 @@ - /* - * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - /* - test - @bug 6242241 - @summary Tests basic DnD functionality in an applet - @requires (os.family == "windows") - @author Your Name: Alexey Utkin area=dnd - @run applet/manual=yesno DnDFileGroupDescriptor.html -*/ - -import java.applet.Applet; -import java.awt.*; - -public class DnDFileGroupDescriptor extends Applet { - public void init() { - setLayout(new BorderLayout()); - - String[] instructions = { - "The applet window contains a red field.", - "1. Start MS Outlook program. Find and open ", - " the mail form with attachments.", - "2. Select attachments from the mail and drag into a red field of applet.", - " When the mouse enters the field during the drag, the application ", - " should change the cursor form to OLE-copy and field color to yellow.", - "3. Release the mouse button (drop attachments) over the field.", - "", - "File paths in temporary folder should appear.", - "", - "You should be able to repeat this operation multiple times.", - "Please, select \"Pass\" just in case of success or \"Fail\" for another." - }; - Sysout.createDialogWithInstructions( instructions ); - } - - public void start() { - Panel mainPanel; - Component dropTarget; + * Copyright (c) 2009, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Frame; +import java.awt.Panel; - mainPanel = new Panel(); +/* + * @test + * @bug 6242241 + * @summary Tests TransferFlavor that supports DnD of MS Outlook attachments. + * @requires (os.family == "windows") + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual DnDFileGroupDescriptor + */ + +public class DnDFileGroupDescriptor { + private static final String INSTRUCTIONS = """ + When the test starts, a RED panel appears. + 1. Start MS Outlook program. Find and open the mail form with attachments. + + 2. Select attachments from the mail and drag into a red field of applet. + When the mouse enters the field during the process of drag, the application + should change the cursor form to OLE-copy and field color to yellow. + + 3. Release the mouse button (drop attachments) over the field. + File paths in temporary folder should appear. + You should be able to repeat this operation multiple times. + + If the above is the case then press PASS, else FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .rows((int) INSTRUCTIONS.lines().count() + 2) + .columns(40) + .testUI(DnDFileGroupDescriptor::createUI) + .build() + .awaitAndCheck(); + } + + private static Frame createUI() { + Frame frame = new Frame("Test MS Outlook Mail Attachments DnD"); + Panel mainPanel = new Panel(); mainPanel.setLayout(new BorderLayout()); - mainPanel.setBackground(Color.blue); - dropTarget = new DnDTarget(Color.red, Color.yellow); - + Component dropTarget = new DnDTarget(Color.RED, Color.YELLOW); mainPanel.add(dropTarget, "Center"); - add(mainPanel); - setSize(200,200); + frame.add(mainPanel); + frame.setSize(400, 200); + frame.setAlwaysOnTop(true); + return frame; } } - -/**************************************************** - Standard Test Machinery - DO NOT modify anything below -- it's a standard - chunk of code whose purpose is to make user - interaction uniform, and thereby make it simpler - to read and understand someone else's test. - ****************************************************/ - -class Sysout - { - private static TestDialog dialog; - - public static void createDialogWithInstructions( String[] instructions ) - { - dialog = new TestDialog( new Frame(), "Instructions" ); - dialog.printInstructions( instructions ); - dialog.show(); - println( "Any messages for the tester will display here." ); - } - - public static void createDialog( ) - { - dialog = new TestDialog( new Frame(), "Instructions" ); - String[] defInstr = { "Instructions will appear here. ", "" } ; - dialog.printInstructions( defInstr ); - dialog.show(); - println( "Any messages for the tester will display here." ); - } - - - public static void printInstructions( String[] instructions ) - { - dialog.printInstructions( instructions ); - } - - - public static void println( String messageIn ) - { - dialog.displayMessage( messageIn ); - } - - }// Sysout class - -class TestDialog extends Dialog - { - - TextArea instructionsText; - TextArea messageText; - int maxStringLength = 80; - - //DO NOT call this directly, go through Sysout - public TestDialog( Frame frame, String name ) - { - super( frame, name ); - int scrollBoth = TextArea.SCROLLBARS_BOTH; - instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth ); - add( "North", instructionsText ); - - messageText = new TextArea( "", 5, maxStringLength, scrollBoth ); - add("South", messageText); - - pack(); - - show(); - }// TestDialog() - - //DO NOT call this directly, go through Sysout - public void printInstructions( String[] instructions ) - { - //Clear out any current instructions - instructionsText.setText( "" ); - - //Go down array of instruction strings - - String printStr, remainingStr; - for( int i=0; i < instructions.length; i++ ) - { - //chop up each into pieces maxSringLength long - remainingStr = instructions[ i ]; - while( remainingStr.length() > 0 ) - { - //if longer than max then chop off first max chars to print - if( remainingStr.length() >= maxStringLength ) - { - //Try to chop on a word boundary - int posOfSpace = remainingStr. - lastIndexOf( ' ', maxStringLength - 1 ); - - if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1; - - printStr = remainingStr.substring( 0, posOfSpace + 1 ); - remainingStr = remainingStr.substring( posOfSpace + 1 ); - } - //else just print - else - { - printStr = remainingStr; - remainingStr = ""; - } - - instructionsText.append( printStr + "\n" ); - - }// while - - }// for - - }//printInstructions() - - //DO NOT call this directly, go through Sysout - public void displayMessage( String messageIn ) - { - messageText.append( messageIn + "\n" ); - } - - }// TestDialog class diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/InputEvent/InputEventTimeTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/InputEvent/InputEventTimeTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/InputEvent/InputEventTimeTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/InputEvent/InputEventTimeTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,115 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4176525 + * @summary InputEvent.getWhen() returns the wrong event time. + * @key headful + * @run main InputEventTimeTest + */ + +import java.awt.AWTEvent; +import java.awt.AWTException; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; +import java.lang.reflect.InvocationTargetException; +import java.util.Date; + +public class InputEventTimeTest extends Frame { + public void initUI() { + setTitle("Input Event Time Test"); + enableEvents(AWTEvent.MOUSE_EVENT_MASK); + enableEvents(AWTEvent.KEY_EVENT_MASK); + setSize(200, 200); + setLocationRelativeTo(null); + setVisible(true); + } + + public void center(Point point) { + Point loc = getLocationOnScreen(); + Dimension size = getSize(); + point.setLocation(loc.x + (size.width / 2), loc.y + (size.height / 2)); + } + + public void processEvent(AWTEvent e) { + long currentTime; + long eventTime; + long difference; + + if (!(e instanceof InputEvent)) { + return; + } + + currentTime = (new Date()).getTime(); + eventTime = ((InputEvent) e).getWhen(); + difference = currentTime - eventTime; + + if ((difference > 5000) || (difference < -5000)) { + throw new RuntimeException("The difference between current time" + + " and event creation time is " + difference + "ms"); + } + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + InputEventTimeTest test = new InputEventTimeTest(); + try { + EventQueue.invokeAndWait(test::initUI); + Robot robot = new Robot(); + robot.setAutoDelay(50); + robot.waitForIdle(); + robot.delay(1000); + Point center = new Point(); + EventQueue.invokeAndWait(() -> test.center(center)); + robot.mouseMove(center.x, center.y); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); + robot.waitForIdle(); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + for (int i = 0; i < 6; i++) { + robot.keyPress(KeyEvent.VK_A + i); + robot.keyRelease(KeyEvent.VK_A + i); + robot.waitForIdle(); + } + for (int i = 0; i < 150; i += 5) { + robot.mouseMove(center.x - i, center.y - i); + } + for (int i = 150; i > 0; i -= 5) { + robot.mouseMove(center.x - i, center.y - i); + } + } finally { + EventQueue.invokeAndWait(test::dispose); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/AltGrTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/AltGrTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/AltGrTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/AltGrTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4122687 4209844 + * @summary Characters typed with AltGr have Alt bit set on + * KEY_TYPED events + * @requires (os.family == "windows") + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual AltGrTest + */ + +import java.awt.BorderLayout; +import java.awt.Frame; +import java.awt.TextField; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.lang.reflect.InvocationTargetException; + +public class AltGrTest extends Frame implements KeyListener { + static String INSTRUCTIONS = """ + Switch to German (Germany) keyboard layout and type + few characters using key. + Note: on windows keyboards without an AltGr key, + you should use Ctrl-Alt to synthesize AltGr. + For example, on German keyboards, `@' is AltGr-Q + `{' is AltGr-7 and '[' is AltGr-8 + If you see the corresponding symbols appear in the text field + and there are no entries in log area starting with word "FAIL:" + press "Pass", otherwise press "Fail". + """; + + public AltGrTest() { + setLayout(new BorderLayout()); + TextField entry = new TextField(); + entry.addKeyListener(this); + add(entry, BorderLayout.CENTER); + pack(); + } + + public void keyTyped(KeyEvent e) { + PassFailJFrame.log("----"); + PassFailJFrame.log("Got " + e); + + if (e.isControlDown() || e.isAltDown()) { + PassFailJFrame.log("FAIL: character typed has following modifiers bits set:"); + PassFailJFrame.log((e.isControlDown() ? " Control" : "") + + (e.isAltDown() ? " Alt" : "")); + } + + if (!(e.isAltGraphDown())) { + PassFailJFrame.log("FAIL: AltGraph modifier is missing"); + } + } + + public void keyPressed(KeyEvent ignore) {} + public void keyReleased(KeyEvent ignore) {} + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .logArea(10) + .testUI(AltGrTest::new) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/CRTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/CRTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/CRTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/CRTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,124 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4257434 + * @summary Ensures that the right results are produced by the + * carriage return keys. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual CRTest + */ + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Frame; +import java.awt.TextField; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.lang.reflect.InvocationTargetException; +import java.util.concurrent.atomic.AtomicBoolean; + +public class CRTest extends Frame implements KeyListener, ActionListener { + StringBuilder error = new StringBuilder(); + AtomicBoolean actionCompleted = new AtomicBoolean(false); + static String INSTRUCTIONS = """ + This test requires keyboard with the numeric keypad (numpad). + If your keyboard does not have numpad press "Pass" to skip testing. + Click on the text field in window named "Check KeyChar values". + Press Enter on keypad. Then press Return key on a standard keyboard. + Then click on "Done" button. Test will pass or fail automatically. + """; + + public CRTest() { + super("Check KeyChar values"); + setLayout(new BorderLayout()); + TextField tf = new TextField(30); + + tf.addKeyListener(this); + tf.addActionListener(this); + + add(tf, BorderLayout.CENTER); + + Button done = new Button("Done"); + done.addActionListener((event) -> { + checkAndComplete(); + }); + add(done, BorderLayout.SOUTH); + pack(); + } + + public void checkAndComplete() { + if (!actionCompleted.get()) { + error.append("\nNo action received!"); + } + + if (!error.isEmpty()) { + PassFailJFrame.forceFail(error.toString()); + } else { + PassFailJFrame.forcePass(); + } + } + + public void keyPressed(KeyEvent evt) { + if ((evt.getKeyChar() != '\n') || (evt.getKeyCode() != KeyEvent.VK_ENTER)) { + error.append("\nKeyPressed: Unexpected code " + evt.getKeyCode()); + } else { + PassFailJFrame.log("KeyPressed Test PASSED"); + } + } + + public void keyTyped(KeyEvent evt) { + if ((evt.getKeyChar() != '\n') || (evt.getKeyCode() != KeyEvent.VK_UNDEFINED)) { + error.append("\nKeyTyped: Unexpected code " + evt.getKeyCode()); + } else { + PassFailJFrame.log("KeyTyped Test PASSED"); + } + } + + public void keyReleased(KeyEvent evt) { + if ((evt.getKeyChar() != '\n') || (evt.getKeyCode() != KeyEvent.VK_ENTER)) { + error.append("\nKeyReleased: Unexpected code " + evt.getKeyCode()); + } else { + PassFailJFrame.log("KeyReleased Test PASSED"); + } + } + + public void actionPerformed(ActionEvent evt) { + PassFailJFrame.log("ActionPerformed Test PASSED"); + actionCompleted.set(true); + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .logArea(10) + .testUI(CRTest::new) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/CharUndefinedTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/CharUndefinedTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/CharUndefinedTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/CharUndefinedTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4115484 4164672 4167893 + * @summary Ensures that KeyEvent has right keyChar for modifier and action keys. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual CharUndefinedTest + */ + +import java.awt.BorderLayout; +import java.awt.Frame; +import java.awt.TextField; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.lang.reflect.InvocationTargetException; + +public class CharUndefinedTest extends Frame implements KeyListener { + + static String INSTRUCTIONS = """ + Click on the text field inside the window named "Check KeyChar values". + Of any of the keys mentioned in this list that exist on your keyboard + press each of the listed keys once and also press them in two-key combinations such as + Control-Shift or Alt-Control. + The list of keys is: "Control, Shift, Meta, Alt, Command, Option". + After that press all function keys from F1 to F12 once, + Insert, Home, End, PageUp, PageDown and four arrow keys. + Check the log area below. If there are no messages starting with word "ERROR" + press "Pass" otherwise press "Fail". + """; + + public CharUndefinedTest() { + super("Check KeyChar values"); + setLayout(new BorderLayout()); + TextField tf = new TextField(30); + tf.addKeyListener(this); + add(tf, BorderLayout.CENTER); + pack(); + tf.requestFocus(); + } + + public void keyPressed(KeyEvent e) { + if (e.getKeyChar() != KeyEvent.CHAR_UNDEFINED) { + PassFailJFrame.log("ERROR: KeyPressed: keyChar = " + e.getKeyChar() + + " keyCode = " + e.getKeyCode() + " " + e.getKeyText(e.getKeyCode())); + } + } + + public void keyTyped(KeyEvent e) { + if (e.getKeyChar() != KeyEvent.CHAR_UNDEFINED) { + PassFailJFrame.log("ERROR: KeyTyped: keyChar = " + e.getKeyChar() + + " keyCode = " + e.getKeyCode() + " " + e.getKeyText(e.getKeyCode())); + } + } + + public void keyReleased(KeyEvent e) { + if (e.getKeyChar() != KeyEvent.CHAR_UNDEFINED) { + PassFailJFrame.log("ERROR: KeyReleased: keyChar = " + e.getKeyChar() + + " keyCode = " + e.getKeyCode() + " " + e.getKeyText(e.getKeyCode())); + } + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(45) + .logArea(10) + .testUI(CharUndefinedTest::new) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/ExtendedKeysTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/ExtendedKeysTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/ExtendedKeysTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/ExtendedKeysTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4218892 4191924 4199284 + * @summary Unable to enter some chars via european keyboard layout(s) + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ExtendedKeysTest + */ + +import java.awt.BorderLayout; +import java.awt.Frame; +import java.awt.TextArea; +import java.lang.reflect.InvocationTargetException; + +public class ExtendedKeysTest extends Frame { + static String INSTRUCTIONS = """ + This test requires Swiss German input. If the Swiss German input + can not be installed or configured press "Pass" to skip testing. + Click on the text area inside the window named "Check input". + Switch to Swiss German input and press key with "\\" on it + (usually this key is above or to the left of the main "Enter" key). + If you see a dollar sign press "Pass". + If you see any other character or question mark press "Fail". + """; + + public ExtendedKeysTest() { + super("Check input"); + setLayout(new BorderLayout()); + add(new TextArea(20, 20), "Center"); + pack(); + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(45) + .logArea(10) + .testUI(ExtendedKeysTest::new) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyDownCaptureTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyDownCaptureTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyDownCaptureTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyDownCaptureTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4093998 + * @summary keyDown not called on subclasses of Component + * @key headful + * @run main KeyDownCaptureTest + */ + +import java.awt.AWTException; +import java.awt.BorderLayout; +import java.awt.Canvas; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.lang.reflect.InvocationTargetException; +import java.util.concurrent.atomic.AtomicBoolean; + +public class KeyDownCaptureTest extends Frame implements KeyListener { + static AtomicBoolean passed = new AtomicBoolean(false); + + public KeyDownCaptureTest() { + super("Key Down Capture Test"); + } + + public void initUI() { + setLayout (new BorderLayout()); + setSize(200, 200); + setLocationRelativeTo(null); + Canvas canvas = new Canvas(); + canvas.setBackground(Color.RED); + canvas.addKeyListener(this); + add(canvas, BorderLayout.CENTER); + setVisible(true); + } + + public void middle(Point p) { + Point loc = getLocationOnScreen(); + Dimension size = getSize(); + p.setLocation(loc.x + (size.width / 2), loc.y + (size.height / 2)); + } + + @Override + public void keyTyped(KeyEvent ignore) {} + + @Override + public void keyPressed(KeyEvent e) { + passed.set(true); + } + + @Override + public void keyReleased(KeyEvent ignore) {} + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + KeyDownCaptureTest test = new KeyDownCaptureTest(); + try { + EventQueue.invokeAndWait((test::initUI)); + Robot robot = new Robot(); + robot.setAutoDelay(50); + robot.delay(500); + robot.waitForIdle(); + Point target = new Point(); + EventQueue.invokeAndWait(() -> { + test.middle(target); + }); + robot.mouseMove(target.x, target.y); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.keyPress(KeyEvent.VK_SPACE); + robot.keyRelease(KeyEvent.VK_SPACE); + robot.delay(100); + robot.waitForIdle(); + if (!passed.get()) { + throw new RuntimeException("KeyPressed has not arrived to canvas"); + } + } finally { + if (test != null) { + EventQueue.invokeAndWait(test::dispose); + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyEventToLightweight.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyEventToLightweight.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyEventToLightweight.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyEventToLightweight.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4397557 + * @summary Check that focused lightweight component gets key events + * even if mouse is outside of it or on top of heavyweight component + * @key headful + * @run main KeyEventToLightweight + */ + +import java.awt.AWTException; +import java.awt.Button; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.InputEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.lang.reflect.InvocationTargetException; +import java.util.concurrent.atomic.AtomicBoolean; +import javax.swing.JButton; + +public class KeyEventToLightweight extends Frame { + JButton lwbutton = new JButton("Select Me"); + Button hwbutton = new Button("Heavyweight"); + + AtomicBoolean aTyped = new AtomicBoolean(false); + AtomicBoolean bTyped = new AtomicBoolean(false); + AtomicBoolean cTyped = new AtomicBoolean(false); + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + KeyEventToLightweight test = new KeyEventToLightweight(); + try { + EventQueue.invokeAndWait(test::initUI); + test.performTest(); + } finally { + EventQueue.invokeAndWait(test::dispose); + } + } + + public void initUI() { + this.setLayout(new FlowLayout()); + add(lwbutton); + add(hwbutton); + setSize(200, 200); + setLocationRelativeTo(null); + lwbutton.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_A) { + aTyped.set(true); + } else if (e.getKeyCode() == KeyEvent.VK_B) { + bTyped.set(true); + } else if (e.getKeyCode() == KeyEvent.VK_C) { + cTyped.set(true); + } + } + }); + setVisible(true); + } + + public void middleOf(Component c, Point p) { + Point loc = c.getLocationOnScreen(); + Dimension size = c.getSize(); + p.setLocation(loc.x + (size.width / 2), loc.y + (size.height / 2)); + } + + public void performTest() throws AWTException, InterruptedException, + InvocationTargetException { + Robot robot = new Robot(); + robot.setAutoDelay(50); + robot.delay(500); + robot.waitForIdle(); + Point target = new Point(); + EventQueue.invokeAndWait(() -> middleOf(lwbutton, target)); + robot.mouseMove(target.x, target.y); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + robot.delay(500); + robot.keyPress(KeyEvent.VK_A); + robot.keyRelease(KeyEvent.VK_A); + robot.waitForIdle(); + robot.mouseMove(target.x - 200, target.y); + robot.keyPress(KeyEvent.VK_B); + robot.keyRelease(KeyEvent.VK_B); + robot.waitForIdle(); + robot.delay(500); + EventQueue.invokeAndWait(() -> middleOf(hwbutton, target)); + robot.mouseMove(target.x, target.y); + robot.keyPress(KeyEvent.VK_C); + robot.keyRelease(KeyEvent.VK_C); + if (!aTyped.get() || !bTyped.get() || !cTyped.get()) { + throw new RuntimeException("Key event was not delivered, case 1: " + + aTyped.get() + ", case 2: " + bTyped.get() + ", case 3: " + + cTyped.get()); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyModifiers.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyModifiers.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyModifiers.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyModifiers.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,134 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4193779 4174399 + * @summary Ensures that KeyEvents have the right modifiers set + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame jdk.test.lib.Platform + * @run main/manual KeyModifiers + */ + +import java.awt.BorderLayout; +import java.awt.Frame; +import java.awt.TextField; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.lang.reflect.InvocationTargetException; + +import jdk.test.lib.Platform; + + +public class KeyModifiers extends Frame implements KeyListener { + public KeyModifiers() { + super("Check KeyChar values"); + setLayout(new BorderLayout()); + TextField tf = new TextField(30); + tf.addKeyListener(this); + add(tf, BorderLayout.CENTER); + pack(); + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + + String keys; + if (Platform.isWindows()) { + keys = "\"Shift-n\", \"Alt-n\"\n"; + } else if (Platform.isOSX()) { + keys = "\"Shift-n\", \"Alt-n\", \"Command-n\"\n"; + } else { + keys = "\"Shift-n\", \"Alt-n\", \"Meta-n\"\n"; + } + + String INSTRUCTIONS1 = """ + Click on the text field in the window named "Check KeyChar values" + and type the following key combinations: + """; + String INSTRUCTIONS2 = """ + After each combination check that the KeyPressed and KeyTyped modifiers + are correctly displayed. If modifiers are correct press "Pass", + otherwise press "Fail". + """; + PassFailJFrame.builder() + .title("KeyModifiers Test Instructions") + .instructions(INSTRUCTIONS1 + keys + INSTRUCTIONS2) + .columns(45) + .logArea(10) + .testUI(KeyModifiers::new) + .build() + .awaitAndCheck(); + } + + public void keyPressed(KeyEvent evt) { + int kc = evt.getKeyCode(); + + if (kc == KeyEvent.VK_CONTROL) { + return; + } + + if ((kc == KeyEvent.VK_SHIFT) || (kc == KeyEvent.VK_META) || + (kc == KeyEvent.VK_ALT) || (kc == KeyEvent.VK_ALT_GRAPH)) { + PassFailJFrame.log("Key pressed= " + KeyEvent.getKeyText(kc) + + " modifiers = " + InputEvent.getModifiersExText(evt.getModifiersEx())); + } else { + PassFailJFrame.log("Key pressed = " + evt.getKeyChar() + + " modifiers = " + InputEvent.getModifiersExText(evt.getModifiersEx())); + } + } + + public void keyTyped(KeyEvent evt) { + int kc = evt.getKeyCode(); + + if (kc == KeyEvent.VK_CONTROL) { + return; + } + + if ((kc == KeyEvent.VK_SHIFT) || (kc == KeyEvent.VK_META) || + (kc == KeyEvent.VK_ALT) || (kc == KeyEvent.VK_ALT_GRAPH)) { + PassFailJFrame.log("Key typed = " + KeyEvent.getKeyText(kc) + + " modifiers = " + InputEvent.getModifiersExText(evt.getModifiersEx())); + } else { + PassFailJFrame.log("Key typed = " + evt.getKeyChar() + + " modifiers = " + InputEvent.getModifiersExText(evt.getModifiersEx())); + } + } + + public void keyReleased(KeyEvent evt) { + int kc = evt.getKeyCode(); + + if (kc == KeyEvent.VK_CONTROL) + return; + + if ((kc == KeyEvent.VK_SHIFT) || (kc == KeyEvent.VK_META) || + (kc == KeyEvent.VK_ALT) || (kc == KeyEvent.VK_ALT_GRAPH)) { + PassFailJFrame.log("Key = released " + KeyEvent.getKeyText(kc) + + " modifiers = " + InputEvent.getModifiersExText(evt.getModifiersEx())); + } else { + PassFailJFrame.log("Key released = " + evt.getKeyChar() + + " modifiers = " + InputEvent.getModifiersExText(evt.getModifiersEx())); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyPressedModifiers.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyPressedModifiers.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyPressedModifiers.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyPressedModifiers.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,108 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4174399 + * @summary Check that modifier values are set on a KeyPressed event + * when a modifier key is pressed. + * @key headful + * @run main KeyPressedModifiers + */ + +import java.awt.AWTException; +import java.awt.BorderLayout; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Robot; +import java.awt.TextField; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.lang.reflect.InvocationTargetException; +import java.util.concurrent.atomic.AtomicBoolean; + +public class KeyPressedModifiers extends Frame implements KeyListener { + static AtomicBoolean shiftDown = new AtomicBoolean(false); + static AtomicBoolean controlDown = new AtomicBoolean(false); + static AtomicBoolean altDown = new AtomicBoolean(false); + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + KeyPressedModifiers test = new KeyPressedModifiers(); + try { + EventQueue.invokeAndWait(test::initUI); + Robot robot = new Robot(); + robot.setAutoDelay(100); + robot.delay(500); + robot.waitForIdle(); + robot.keyPress(KeyEvent.VK_SHIFT); + robot.keyRelease(KeyEvent.VK_SHIFT); + robot.keyPress(KeyEvent.VK_CONTROL); + robot.keyRelease(KeyEvent.VK_CONTROL); + robot.keyPress(KeyEvent.VK_ALT); + robot.keyRelease(KeyEvent.VK_ALT); + robot.delay(500); + robot.waitForIdle(); + if (!shiftDown.get() || !controlDown.get() || !altDown.get()) { + String error = "Following key modifiers were not registered:" + + (shiftDown.get() ? "" : " SHIFT") + + (controlDown.get() ? "" : " CONTROL") + + (altDown.get() ? "" : " ALT"); + throw new RuntimeException(error); + } + } finally { + EventQueue.invokeAndWait(test::dispose); + } + } + + public void initUI() { + setLayout(new BorderLayout()); + TextField tf = new TextField(30); + tf.addKeyListener(this); + add(tf, BorderLayout.CENTER); + setSize(350, 100); + setVisible(true); + tf.requestFocus(); + } + + public void keyTyped(KeyEvent ignore) { + } + + public void keyReleased(KeyEvent ignore) { + } + + public void keyPressed(KeyEvent e) { + System.out.println(e); + switch (e.getKeyCode()) { + case KeyEvent.VK_SHIFT: + shiftDown.set(e.isShiftDown()); + break; + case KeyEvent.VK_CONTROL: + controlDown.set(e.isControlDown()); + break; + case KeyEvent.VK_ALT: + altDown.set(e.isAltDown()); + break; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/KeyTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/KeyTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,104 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4151419 4090870 4169733 + * @summary Ensures that KeyEvent has right results for the following + * keys -=\[];,./ + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual KeyTest + */ + +import java.awt.BorderLayout; +import java.awt.Frame; +import java.awt.TextField; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.lang.reflect.InvocationTargetException; + +public class KeyTest extends Frame implements KeyListener { + + static String INSTRUCTIONS = """ + Click on the text field in window named "Check KeyChar values" + Type the following keys/characters in the TextField: + - = \\ [ ] ; , . / + Verify that the keyChar and keyCode is correct for each key pressed. + Remember that the keyCode for the KEY_TYPED event should be zero. + Also verify that the character you typed appears in the TextField. + + Key Name keyChar Keycode + ------------------------------------- + - Minus - 45 45 + = Equals = 61 61 + \\ Slash \\ 92 92 + [ Left Brace [ 91 91 + ] Right Brace ] 93 93 + ; Semicolon ; 59 59 + , Comma , 44 44 + . Period . 46 46 + / Front Slash / 47 47 + """; + public KeyTest() { + super("Check KeyChar values"); + setLayout(new BorderLayout()); + TextField tf = new TextField(30); + tf.addKeyListener(this); + add(tf, BorderLayout.CENTER); + pack(); + + } + + public void keyPressed(KeyEvent evt) { + printKey(evt); + } + + public void keyTyped(KeyEvent evt) { + printKey(evt); + } + + public void keyReleased(KeyEvent evt) { + printKey(evt); + } + + protected void printKey(KeyEvent evt) { + if (evt.isActionKey()) { + PassFailJFrame.log("params= " + evt.paramString() + " KeyChar: " + + (int) evt.getKeyChar() + " Action Key"); + } else { + PassFailJFrame.log("params= " + evt.paramString() + " KeyChar: " + + (int) evt.getKeyChar()); + } + } + + public static void main(String[] args) throws InterruptedException, InvocationTargetException { + PassFailJFrame.builder() + .title("KeyTest Instructions") + .instructions(INSTRUCTIONS) + .logArea(20) + .testUI(KeyTest::new) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/NumpadTest2.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/NumpadTest2.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/NumpadTest2.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/NumpadTest2.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,108 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4279566 + * @summary Tests that numpad keys produce the correct key codes and + * key chars when both the NumLock and CapsLock are on. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual NumpadTest2 +*/ + +import java.awt.BorderLayout; +import java.awt.Frame; +import java.awt.TextField; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.lang.reflect.InvocationTargetException; + +public class NumpadTest2 extends Frame implements KeyListener { + static String INSTRUCTIONS = """ + Make sure that the NumLock and CapsLock are both ON. + Click on the text field inside the window named "Check KeyChar values" + Then, type the NumPad 7 key (not the regular 7 key). + Verify that the keyChar and keyCode is correct for each key pressed. + Remember that the keyCode for the KEY_TYPED event should be zero. + If 7 appears in the text field and the key code printed is correct + press "Pass", otherwise press "Fail". + + Key Name keyChar Keycode + ------------------------------------------------- + Numpad-7 Numpad-7 55 103 + """; + + public NumpadTest2() { + super("Check KeyChar values"); + setLayout(new BorderLayout()); + TextField tf = new TextField(30); + tf.addKeyListener(this); + add(tf, BorderLayout.CENTER); + pack(); + } + + public void keyPressed(KeyEvent evt) { + printKey(evt); + } + + public void keyTyped(KeyEvent evt) { + printKey(evt); + } + + public void keyReleased(KeyEvent evt) { + printKey(evt); + } + + protected void printKey(KeyEvent evt) { + switch (evt.getID()) { + case KeyEvent.KEY_TYPED: + break; + case KeyEvent.KEY_PRESSED: + break; + case KeyEvent.KEY_RELEASED: + break; + default: + System.out.println("Other Event "); + return; + } + + if (evt.isActionKey()) { + PassFailJFrame.log("params= " + evt.paramString() + " KeyChar: " + + (int) evt.getKeyChar() + " Action Key"); + } else { + PassFailJFrame.log("params= " + evt.paramString() + " KeyChar: " + + (int) evt.getKeyChar()); + } + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .logArea(10) + .testUI(NumpadTest2::new) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/TestDoubleKeyEvent.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/TestDoubleKeyEvent.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/KeyEvent/TestDoubleKeyEvent.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/KeyEvent/TestDoubleKeyEvent.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4495473 + * @summary Tests that when you press key on canvas-type heavyweight only one key event arrives + * @key headful + * @run main TestDoubleKeyEvent + */ + +import java.awt.AWTException; +import java.awt.BorderLayout; +import java.awt.EventQueue; +import java.awt.FlowLayout; +import java.awt.Robot; +import java.awt.event.KeyEvent; +import java.lang.reflect.InvocationTargetException; +import javax.swing.JFrame; +import javax.swing.JWindow; +import javax.swing.JTextField; + +public class TestDoubleKeyEvent extends JFrame { + JWindow w; + JTextField tf; + + public void initUI() { + setLayout(new BorderLayout()); + setTitle("Double Key Event Test"); + setLocationRelativeTo(null); + setVisible(true); + w = new JWindow(this); + w.setLayout(new FlowLayout()); + tf = new JTextField(20); + w.add(tf); + w.pack(); + w.setLocationRelativeTo(null); + w.setVisible(true); + tf.requestFocus(); + } + + public void testAndClean() { + String str = tf.getText(); + w.dispose(); + dispose(); + if (str.length() != str.chars().distinct().count()) { + throw new RuntimeException("Duplicate characters found!"); + } + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + TestDoubleKeyEvent test = new TestDoubleKeyEvent(); + EventQueue.invokeAndWait(test::initUI); + Robot robot = new Robot(); + robot.setAutoDelay(50); + robot.waitForIdle(); + robot.delay(1000); + for (int i = 0; i < 15; i++) { + robot.keyPress(KeyEvent.VK_A + i); + robot.keyRelease(KeyEvent.VK_A + i); + robot.waitForIdle(); + } + robot.delay(1000); + EventQueue.invokeAndWait(test::testAndClean); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/MouseEvent/AltGraphModifierTest/AltGraphModifierTest.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseEvent/AltGraphModifierTest/AltGraphModifierTest.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/MouseEvent/AltGraphModifierTest/AltGraphModifierTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseEvent/AltGraphModifierTest/AltGraphModifierTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,51 +22,57 @@ */ /* - @test - @bug 8041928 8158616 - @requires (os.family != "mac") - @summary Confirm that the Alt-Gr Modifier bit is set correctly. - @run main/manual AltGraphModifierTest + * @test + * @bug 8041928 8158616 + * @requires (os.family != "mac") + * @summary Confirm that the Alt-Gr Modifier bit is set correctly. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual AltGraphModifierTest */ -import java.awt.Button; -import java.awt.Dialog; import java.awt.Frame; -import java.awt.Panel; -import java.awt.TextArea; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class AltGraphModifierTest { - private static void init() throws Exception { - String[] instructions - = { - "This test is for verifying Alt-Gr modifier of an event.", - "Linux :-", - "1. Please check if Alt-Gr key is present on keyboard.", - "2. If present, press the Alt-Gr key and perform", - " mouse click on the TestWindow.", - "3. Navigate to System Settings-> Keyboard-> Shortcuts->", - " Typing.", - "4. Select an option for the Alternative Characters Key", - " For example. Right Alt", - "5. Close the settings and navigate to test", - "6. Press Right Alt Key & perform mouse click on the", - " TestWindow", - "7. Test will exit by itself with appropriate result.", - " ", - }; - Sysout.createDialog(); - Sysout.printInstructions(instructions); + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + This test is for verifying Alt-Gr modifier of an event. + Please check if Alt-Gr key is present on keyboard. + If not present, press Pass. + On Windows: + Press Alt-Gr or Right Alt key and simultaneously + perform mouse click on the "TestWindow". + On Linux: + Navigate to + System Settings-> Keyboard-> Special Character Entry + Select "Right Alt" option for the "Alternate Characters Key" + Close the settings and navigate to test + Press Right Alt Key & simultaneously + perform mouse click on the "TestWindow". + + If the system does not have such setting, press Pass. + After the test, change the Setting of "Alternate Characters Key" + back to "Layout default". + + If "Alt-Gr Modifier bit is set" message is displayed in logArea, + press Pass else press Fail. + """; + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(AltGraphModifierTest::initTestWindow) + .logArea() + .build() + .awaitAndCheck(); } - static Frame mainFrame; - public static void initTestWindow() { - mainFrame = new Frame(); + public static Frame initTestWindow() { + Frame mainFrame = new Frame(); mainFrame.setTitle("TestWindow"); mainFrame.setBounds(700, 10, 300, 300); mainFrame.addMouseListener(new MouseAdapter() { @@ -74,186 +80,12 @@ public void mousePressed(MouseEvent e) { int ex = e.getModifiersEx(); if ((ex & InputEvent.ALT_GRAPH_DOWN_MASK) == 0) { - AltGraphModifierTest.fail("Alt-Gr Modifier bit is not set."); + PassFailJFrame.log("Alt-Gr Modifier bit is not set."); } else { - AltGraphModifierTest.pass(); + PassFailJFrame.log("Alt-Gr Modifier bit is set"); } } }); - mainFrame.setVisible(true); - } - - public static void dispose() { - Sysout.dispose(); - mainFrame.dispose(); - } - - /** - * *************************************************** - * Standard Test Machinery Section DO NOT modify anything in this section -- - * it's a standard chunk of code which has all of the synchronisation - * necessary for the test harness. By keeping it the same in all tests, it - * is easier to read and understand someone else's test, as well as insuring - * that all tests behave correctly with the test harness. There is a section - * following this for test-defined classes - * **************************************************** - */ - private static boolean theTestPassed = false; - private static boolean testGeneratedInterrupt = false; - private static String failureMessage = ""; - private static Thread mainThread = null; - final private static int sleepTime = 300000; - - public static void main(String args[]) throws Exception { - mainThread = Thread.currentThread(); - try { - init(); - initTestWindow(); - } catch (Exception e) { - e.printStackTrace(); - } - try { - mainThread.sleep(sleepTime); - } catch (InterruptedException e) { - dispose(); - if (testGeneratedInterrupt && !theTestPassed) { - throw new Exception(failureMessage); - } - } - if (!testGeneratedInterrupt) { - dispose(); - throw new RuntimeException("Timed out after " + sleepTime / 1000 - + " seconds"); - } - } - - public static synchronized void pass() { - theTestPassed = true; - testGeneratedInterrupt = true; - mainThread.interrupt(); - } - - public static synchronized void fail(String whyFailed) { - theTestPassed = false; - testGeneratedInterrupt = true; - failureMessage = whyFailed; - mainThread.interrupt(); - } -} - -// *********** End Standard Test Machinery Section ********** -/** - * ************************************************** - * Standard Test Machinery DO NOT modify anything below -- it's a standard chunk - * of code whose purpose is to make user interaction uniform, and thereby make - * it simpler to read and understand someone else's test. - * ************************************************** - */ -/** - * This is part of the standard test machinery. It creates a dialog (with the - * instructions), and is the interface for sending text messages to the user. To - * print the instructions, send an array of strings to Sysout.createDialog - * WithInstructions method. Put one line of instructions per array entry. To - * display a message for the tester to see, simply call Sysout.println with the - * string to be displayed. This mimics System.out.println but works within the - * test harness as well as standalone. - */ -class Sysout { - private static TestDialog dialog; - private static Frame frame; - - public static void createDialog() { - frame = new Frame(); - dialog = new TestDialog(frame, "Instructions"); - String[] defInstr = {"Instructions will appear here. ", ""}; - dialog.printInstructions(defInstr); - dialog.show(); - println("Any messages for the tester will display here."); - } - - public static void printInstructions(String[] instructions) { - dialog.printInstructions(instructions); - } - - public static void println(String messageIn) { - dialog.displayMessage(messageIn); - } - - public static void dispose() { - dialog.dispose(); - frame.dispose(); - } -} - -/** - * This is part of the standard test machinery. It provides a place for the test - * instructions to be displayed, and a place for interactive messages to the - * user to be displayed. To have the test instructions displayed, see Sysout. To - * have a message to the user be displayed, see Sysout. Do not call anything in - * this dialog directly. - */ -class TestDialog extends Dialog implements ActionListener { - TextArea instructionsText; - TextArea messageText; - int maxStringLength = 80; - Panel buttonP; - Button failB; - - // DO NOT call this directly, go through Sysout - public TestDialog(Frame frame, String name) { - super(frame, name); - int scrollBoth = TextArea.SCROLLBARS_BOTH; - instructionsText = new TextArea("", 15, maxStringLength, scrollBoth); - add("North", instructionsText); - - messageText = new TextArea("", 5, maxStringLength, scrollBoth); - add("Center", messageText); - - buttonP = new Panel(); - failB = new Button("Fail"); - failB.setActionCommand("fail"); - failB.addActionListener(this); - buttonP.add("Center", failB); - - add("South", buttonP); - pack(); - setVisible(true); - } - - // DO NOT call this directly, go through Sysout - public void printInstructions(String[] instructions) { - instructionsText.setText(""); - String printStr, remainingStr; - for (int i = 0; i < instructions.length; i++) { - remainingStr = instructions[i]; - while (remainingStr.length() > 0) { - if (remainingStr.length() >= maxStringLength) { - int posOfSpace = remainingStr. - lastIndexOf(' ', maxStringLength - 1); - - if (posOfSpace <= 0) { - posOfSpace = maxStringLength - 1; - } - - printStr = remainingStr.substring(0, posOfSpace + 1); - remainingStr = remainingStr.substring(posOfSpace + 1); - } - else { - printStr = remainingStr; - remainingStr = ""; - } - instructionsText.append(printStr + "\n"); - } - } - } - - public void displayMessage(String messageIn) { - messageText.append(messageIn + "\n"); - } - - public void actionPerformed(ActionEvent e) { - if (e.getActionCommand() == "fail") { - AltGraphModifierTest.fail("User Clicked Fail"); - } + return mainFrame; } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/MouseWheelEvent/HWWheelScroll.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/HWWheelScroll.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/MouseWheelEvent/HWWheelScroll.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/HWWheelScroll.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4425654 + * @summary Test wheel scrolling of heavyweight components + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual HWWheelScroll + */ + +import java.awt.Choice; +import java.awt.FileDialog; +import java.awt.Frame; +import java.awt.List; +import java.awt.TextArea; +import java.awt.Window; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; + +public class HWWheelScroll { + public static final int TEXT_TALL = 0; + public static final int TEXT_WIDE = 1; + public static final int TEXT_SMALL = 2; + public static final int TEXT_BIG = 3; + static String INSTRUCTIONS = """ + Test for mouse wheel scrolling of heavyweight components with built-in + scrollbars or similar functionality that is controlled by guestures + such as Apple Magic Mouse or trackpad scrolling guesture. + Several windows containing either a TextArea, List, Choice, or a + FileDialog will appear. For each window, use the mouse wheel to + scroll its content, and then minimize it or move away + and continue with the next window. + Do not close any of the opened windows except the FileDialog. + For the FileDialog, first change to a directory with enough items that a + scrollbar appears. + Some of the other windows don't have enough text to warrant scrollbars, + but should be tested anyway to make sure no crash or hang occurs. + If all scrollbars scroll correctly, press "Pass", otherwise press "Fail". + """; + + public static ArrayList initUI() { + ArrayList retValue = new ArrayList<>(); + retValue.add(makeTextFrame(TextArea.SCROLLBARS_BOTH, TEXT_BIG)); + retValue.add(makeTextFrame(TextArea.SCROLLBARS_BOTH, TEXT_TALL)); + retValue.add(makeTextFrame(TextArea.SCROLLBARS_BOTH, TEXT_SMALL)); + retValue.add(makeTextFrame(TextArea.SCROLLBARS_BOTH, TEXT_WIDE)); + retValue.add(makeTextFrame(TextArea.SCROLLBARS_VERTICAL_ONLY, TEXT_TALL)); + retValue.add(makeTextFrame(TextArea.SCROLLBARS_VERTICAL_ONLY, TEXT_SMALL)); + retValue.add(makeTextFrame(TextArea.SCROLLBARS_HORIZONTAL_ONLY, TEXT_SMALL)); + retValue.add(makeTextFrame(TextArea.SCROLLBARS_HORIZONTAL_ONLY, TEXT_WIDE)); + retValue.add(makeListFrame(TEXT_TALL)); + retValue.add(makeListFrame(TEXT_WIDE)); + retValue.add(makeListFrame(TEXT_SMALL)); + Frame f = new Frame("File Dialog Owner"); + f.setSize(150, 150); + f.setLocationRelativeTo(null); + FileDialog fd = new FileDialog(f, "FileDialog"); + fd.setDirectory("."); + retValue.add(fd); + retValue.add(f); + Frame choiceFrame = new Frame("Choice"); + Choice c = new Choice(); + for (int i = 0; i < 50; i++) { + c.add(i + " choice item"); + } + choiceFrame.add(c); + choiceFrame.setSize(150, 150); + choiceFrame.setLocationRelativeTo(null); + retValue.add(choiceFrame); + return retValue; + } + + public static Frame makeTextFrame(int policy, int textShape) { + Frame f = new Frame("TextArea"); + f.add(makeTextArea(policy, textShape)); + f.setSize(150, 150); + f.setLocationRelativeTo(null); + return f; + } + + public static Frame makeListFrame(int textShape) { + Frame f = new Frame("List"); + f.add(makeList(textShape)); + f.setSize(150, 150); + f.setLocationRelativeTo(null); + return f; + } + + public static TextArea makeTextArea(int policy, int textShape) { + TextArea ta = new TextArea("", 0, 0, policy); + if (textShape == TEXT_TALL) { + for (int i = 0; i < 50 ; i++) { + ta.append(i + "\n"); + } + } else if (textShape == TEXT_WIDE) { + for (int i = 0; i < 2; i++) { + ta.append(i + "very, very, very, very, very, very, very, long line of text number\n"); + } + } else if (textShape == TEXT_SMALL) { + ta.append("text"); + } else if (textShape == TEXT_BIG) { + for (int i = 0; i < 50 ; i++) { + ta.append(i + "very, very, very, very, very, very, very, long line of text number\n"); + } + } + return ta; + } + + public static List makeList(int textShape) { + java.awt.List l = new java.awt.List(); + if (textShape == TEXT_TALL) { + for (int i = 0; i < 50 ; i++) { + l.add(" " + i + " "); + } + } else if (textShape == TEXT_WIDE) { + for (int i = 0; i < 2 ; i++) { + l.add(i + "very, very, very, very, very, very, very, long line of text number"); + } + } else if (textShape == TEXT_SMALL) { + l.add("text"); + } else if (textShape == TEXT_BIG) { + for (int i = 0; i < 50 ; i++) { + l.add(i + "very, very, very, very, very, very, very, long line of text number"); + } + } + return l; + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .logArea(10) + .testUI(HWWheelScroll::initUI) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/MouseWheelEvent/WheelEventCoord.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/WheelEventCoord.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/MouseWheelEvent/WheelEventCoord.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/WheelEventCoord.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4492456 + * @summary MouseWheelEvent coordinates are wrong + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual WheelEventCoord + */ + +import java.awt.Button; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.GridLayout; +import java.lang.reflect.InvocationTargetException; + +public class WheelEventCoord extends Frame { + static String INSTRUCTIONS = """ + This test requires mouse with scrolling wheel or device, + that has capability to simulate scrolling wheel with gestures + such as Apple mouse or a trackpad with gesture control. + If you do not have such device press "Pass". + Move mouse to the top of the button named "Button 1". + While constantly turning mouse wheel up and down slowly move + mouse cursor until it reaches bottom of the button named "Button 3". + While doing so look at the log area. + If despite the wheel direction y coordinate is steadily increases + as you move the mouse down press "Pass". + If y coordinate decreases when cursor is moving down or suddenly jumps + by more than 50 points when crossing to another button press "Fail". + """; + + public WheelEventCoord() { + super("Wheel Event Coordinates"); + setLayout(new GridLayout(3, 1)); + + add(new BigButton("Button 1")); + add(new BigButton("Button 2")); + add(new BigButton("Button 3")); + + addMouseWheelListener(e -> PassFailJFrame.log("Mouse y coordinate = " + e.getY())); + pack(); + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .title("Wheel Event Coordinates Instructions") + .instructions(INSTRUCTIONS) + .logArea(10) + .testUI(WheelEventCoord::new) + .build() + .awaitAndCheck(); + } +} + +class BigButton extends Button { + public BigButton(String label) { + super(label); + } + + public Dimension getPreferredSize() { + return new Dimension(300, 100); + } + + public Dimension getMinimumSize() { + return getPreferredSize(); + } + + public Dimension getMaximumSize() { + return getPreferredSize(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/event/MouseWheelEvent/WheelScrollEnabled.java openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/WheelScrollEnabled.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/event/MouseWheelEvent/WheelScrollEnabled.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/event/MouseWheelEvent/WheelScrollEnabled.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4372477 + * @summary Test disabling of wheel scrolling + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual WheelScrollEnabled + */ + +import java.awt.BorderLayout; +import java.awt.Checkbox; +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.Panel; +import java.awt.ScrollPane; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; +import java.lang.reflect.InvocationTargetException; + +public class WheelScrollEnabled extends Frame { + static String INSTRUCTIONS = """ + This test requires mouse with a scrolling wheel or + device that is able to simulate scrolling using gestures. + If you do not have such device press "Pass" to skip testing. + You should see a ScrollPane with some labels in it and two checkboxes. + For each of the four combinations of the two checkboxes, + move the cursor over the ScrollPane and rotate the mouse wheel. + When (and ONLY when) the 'WheelListener added' checkbox is checked, + scrolling the mouse wheel should produce a text message in the log area. + When (and ONLY when) the 'Wheel scrolling enabled' checkbox is checked, + the ScrollPane should scroll when mouse wheel is scrolled on top of it. + If all four checkbox combinations work properly press "Pass", + otherwise press "Fail". + """; + MouseWheelListener mwl; + Checkbox cb; + Checkbox cb2; + ScrollPane sp; + + public WheelScrollEnabled() { + setLayout(new BorderLayout()); + Panel pnl = new Panel(); + pnl.setLayout(new GridLayout(10, 10)); + for (int i = 0; i < 100; i++) { + pnl.add(new Label("Label " + i)); + } + sp = new ScrollPane(); + sp.add(pnl); + sp.setWheelScrollingEnabled(false); + mwl = new MouseWheelListener() { + int i; + @Override + public void mouseWheelMoved(MouseWheelEvent e) { + PassFailJFrame.log("mouseWheelMoved " + i++); + } + }; + sp.addMouseWheelListener(mwl); + add(sp, BorderLayout.CENTER); + + Panel pl2 = new Panel(); + ItemListener il = new ControlListener(); + + cb = new Checkbox("WheelListener added", true); + cb.addItemListener(il); + pl2.add(cb); + + cb2 = new Checkbox("Wheel scrolling enabled", false); + cb2.addItemListener(il); + pl2.add(cb2); + + add(pl2, BorderLayout.SOUTH); + setSize(400, 200); + } + + class ControlListener implements ItemListener { + public void itemStateChanged(ItemEvent e) { + if (e.getSource() == cb) { + boolean state = cb.getState(); + if (state) { + sp.addMouseWheelListener(mwl); + } + else { + sp.removeMouseWheelListener(mwl); + } + } + if (e.getSource() == cb2) { + sp.setWheelScrollingEnabled(cb2.getState()); + } + } + } + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException { + PassFailJFrame.builder() + .title("Wheel Scroll Enabled Instructions") + .instructions(INSTRUCTIONS) + .logArea(10) + .testUI(WheelScrollEnabled::new) + .build() + .awaitAndCheck(); + } +} + diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/font/FontNames/LocaleFamilyNames.java openjdk-21-21.0.10+7/test/jdk/java/awt/font/FontNames/LocaleFamilyNames.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/font/FontNames/LocaleFamilyNames.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/font/FontNames/LocaleFamilyNames.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,29 +26,32 @@ * @bug 4935798 6521210 6901159 * @summary Tests that all family names that are reported in all locales * correspond to some font returned from getAllFonts(). - * @run main LocaleFamilyNames + * @run main/othervm/timeout=360 LocaleFamilyNames */ import java.awt.*; import java.util.*; public class LocaleFamilyNames { public static void main(String[] args) throws Exception { + System.out.println("Start time: " + java.time.LocalDateTime.now()); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - Font[] all_fonts = ge.getAllFonts(); - Locale[] all_locales = Locale.getAvailableLocales(); + System.out.println("Number of fonts: " + all_fonts.length); + System.out.println("Number of locales: " + all_locales.length); + HashSet all_families = new HashSet(); for (int i=0; i map = new HashMap<>(); + map.put(TextAttribute.FONT, font); + layouts[0][0] = new TextLayout(text, map, frc); + AttributedCharacterIterator iter = new AttributedString(text, map).getIterator(); + layouts[0][1] = new LineBreakMeasurer(iter, frc).nextLayout(Float.MAX_VALUE); + + NumericShaper arabic = NumericShaper.getShaper(NumericShaper.ARABIC); + map.put(TextAttribute.NUMERIC_SHAPING, arabic); + layouts[1][0] = new TextLayout(text, map, frc); + iter = new AttributedString(text, map).getIterator(); + layouts[1][1] = new LineBreakMeasurer(iter, frc).nextLayout(Float.MAX_VALUE); + + NumericShaper contextualArabic = NumericShaper.getContextualShaper(NumericShaper.ARABIC, NumericShaper.ARABIC); + map.put(TextAttribute.NUMERIC_SHAPING, contextualArabic); + layouts[2][0] = new TextLayout(text, map, frc); + iter = new AttributedString(text, map).getIterator(); + layouts[2][1] = new LineBreakMeasurer(iter, frc).nextLayout(Float.MAX_VALUE); + + NumericShaper contextualArabicASCII = NumericShaper.getContextualShaper(NumericShaper.ARABIC); + map.put(TextAttribute.NUMERIC_SHAPING, contextualArabicASCII); + layouts[3][0] = new TextLayout(text, map, frc); + iter = new AttributedString(text, map).getIterator(); + layouts[3][1] = new LineBreakMeasurer(iter, frc).nextLayout(Float.MAX_VALUE); + + NumericShaper contextualAll = NumericShaper.getContextualShaper(NumericShaper.ALL_RANGES); + map.put(TextAttribute.NUMERIC_SHAPING, contextualAll); + layouts[4][0] = new TextLayout(text, map, frc); + iter = new AttributedString(text, map).getIterator(); + layouts[4][1] = new LineBreakMeasurer(iter, frc).nextLayout(Float.MAX_VALUE); + + titles = new String[]{ + "plain -- all digits ASCII", + "Arabic -- all digits Arabic", + "contextual Arabic default Arabic -- only leading digits and digits following Arabic text are Arabic", + "contextual Arabic default ASCII -- only digits following Arabic text are Arabic", + "contextual all default ASCII -- leading digits english, others correspond to context" + }; + } + + @Override + public void paint(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + float x = 5; + float y = 5; + + for (int i = 0; i < layouts.length; ++i) { + y += 18; + g2d.drawString(titles[i], x, y); + y += 4; + + for (int j = 0; j < 2; ++j) { + y += layouts[i][j].getAscent(); + layouts[i][j].draw(g2d, x, y); + y += layouts[i][j].getDescent() + layouts[i][j].getLeading(); + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/font/TextLayout/TestGASPHint.java openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestGASPHint.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/font/TextLayout/TestGASPHint.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestGASPHint.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2006, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.GraphicsEnvironment; +import java.awt.RenderingHints; + +import javax.swing.JPanel; + +/* + * @test + * @bug 6320502 + * @summary Display laid out text which substitutes invisible glyphs correctly. + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame jtreg.SkippedException + * @run main/manual TestGASPHint + */ + +public class TestGASPHint extends JPanel { + private static final String text = "\u0905\u0901\u0917\u094d\u0930\u0947\u091c\u093c\u0940"; + private static final Font font = getPhysicalFontForText(text, Font.PLAIN, 36); + + public static void main(String[] args) throws Exception { + if (font == null) { + throw new jtreg.SkippedException("No Devanagari font found. Test Skipped"); + } + + final String INSTRUCTIONS = """ + A short piece of Devanagari text should appear without any + artifacts. In particular there should be no "empty rectangles" + representing the missing glyph. + + If the above condition is true, press Pass, else Fail."""; + + PassFailJFrame.builder() + .title("TestGASPHint Instruction") + .instructions(INSTRUCTIONS) + .columns(32) + .splitUI(TestGASPHint::new) + .build() + .awaitAndCheck(); + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(200, 200); + } + + @Override + public void paint(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + g2d.setColor(Color.WHITE); + g2d.fillRect(0, 0, getWidth(), getHeight()); + + g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_GASP); + + g2d.setFont(font); + g2d.setColor(Color.BLACK); + g2d.drawString(text, 10, 50); + } + + /* + * Searches the available system fonts for a font which can display all the + * glyphs in the input text correctly. Returns null, if not found. + */ + private static Font getPhysicalFontForText(String text, int style, int size) { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + String[] names = ge.getAvailableFontFamilyNames(); + + for (String n : names) { + switch (n.toLowerCase()) { + case "dialog": + case "dialoginput": + case "serif": + case "sansserif": + case "monospaced": + break; + default: + Font f = new Font(n, style, size); + if (f.canDisplayUpTo(text) == -1) { + return f; + } + } + } + return null; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/font/TextLayout/TestSelection.java openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestSelection.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/font/TextLayout/TestSelection.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestSelection.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,134 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.font.FontRenderContext; +import java.awt.font.TextAttribute; +import java.awt.font.TextLayout; +import java.text.AttributedString; + +import javax.swing.JPanel; + +/* + * @test + * @bug 4221422 + * @summary Display several TextLayouts with various selections. + * All the selections should be between non-italic and italic text, + * and the top and bottom of the selection region should be horizontal. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual TestSelection + */ + +public final class TestSelection extends JPanel { + private static final float MARGIN = 20; + + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + Several TextLayouts are displayed along with selections. + The selection regions should have horizontal top and bottom segments. + + If above condition is true, press Pass else Fail."""; + + PassFailJFrame.builder() + .title("TestSelection Instruction") + .instructions(INSTRUCTIONS) + .columns(40) + .splitUI(TestSelection::new) + .build() + .awaitAndCheck(); + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(300, 300); + } + + private float drawSelectionAndLayout(Graphics2D g2d, + TextLayout layout, + float y, + int selStart, + int selLimit) { + Color selectionColor = Color.PINK; + Color textColor = Color.BLACK; + + y += layout.getAscent(); + + g2d.translate(MARGIN, y); + Shape hl = layout.getLogicalHighlightShape(selStart, selLimit); + g2d.setColor(selectionColor); + g2d.fill(hl); + g2d.setColor(textColor); + layout.draw(g2d, 0, 0); + g2d.translate(-MARGIN, -y); + + y += layout.getDescent() + layout.getLeading() + 10; + return y; + } + + @Override + public void paint(Graphics g) { + String text = "Hello world"; + + Graphics2D g2d = (Graphics2D) g; + g2d.setColor(Color.WHITE); + g2d.fillRect(0, 0, getWidth(), getHeight()); + + AttributedString attrStr = new AttributedString(text); + + FontRenderContext frc = g2d.getFontRenderContext(); + + final int midPoint = text.indexOf('w'); + final int selStart = midPoint / 2; + final int selLimit = text.length() - selStart; + final Font italic = new Font(Font.SANS_SERIF, Font.ITALIC, 24); + + float y = MARGIN; + + attrStr.addAttribute(TextAttribute.FONT, italic, 0, midPoint); + TextLayout layout = new TextLayout(attrStr.getIterator(), frc); + + y = drawSelectionAndLayout(g2d, layout, y, selStart - 1, selLimit); + y = drawSelectionAndLayout(g2d, layout, y, selStart, selLimit); + y = drawSelectionAndLayout(g2d, layout, y, selStart + 1, selLimit); + + attrStr = new AttributedString(text); + attrStr.addAttribute(TextAttribute.FONT, + italic, midPoint, text.length()); + layout = new TextLayout(attrStr.getIterator(), frc); + + y = drawSelectionAndLayout(g2d, layout, y, selStart, selLimit); + + attrStr = new AttributedString(text); + attrStr.addAttribute(TextAttribute.FONT, italic, 0, midPoint); + attrStr.addAttribute(TextAttribute.SIZE, 48f, midPoint, text.length()); + layout = new TextLayout(attrStr.getIterator(), frc); + + y = drawSelectionAndLayout(g2d, layout, y, selStart, selLimit); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/font/TextLayout/TestStrikethrough.java openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestStrikethrough.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/font/TextLayout/TestStrikethrough.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/font/TextLayout/TestStrikethrough.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.font.FontRenderContext; +import java.awt.font.TextAttribute; +import java.awt.font.TextLayout; +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; + +import javax.swing.JPanel; + +/* + * @test + * @bug 6426360 + * @summary Display a TextLayout with strikethrough at a number of + * different offsets relative to the pixel grid. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual TestStrikethrough + */ + +public class TestStrikethrough extends JPanel { + + public static void main(String[] args) throws Exception { + final String INSTRUCTIONS = """ + Display text with strikethrough at a number of different positions. + + Press Fail if any line is missing a strikethrough else press Pass."""; + + PassFailJFrame.builder() + .title("TestStrikethrough Instruction") + .instructions(INSTRUCTIONS) + .columns(35) + .splitUI(TestStrikethrough::new) + .build() + .awaitAndCheck(); + } + + @Override + public Dimension getPreferredSize() { + return new Dimension(200, 120); + } + + @Override + public void paint(Graphics aContext) { + Graphics2D g2d = (Graphics2D) aContext; + + g2d.setColor(Color.WHITE); + g2d.fillRect(0, 0, getWidth(), getHeight()); + + Font font = new Font(Font.DIALOG, Font.PLAIN, 9); + FontRenderContext frc = g2d.getFontRenderContext(); + String str = "Where is the strikethrough?"; + AttributedString as = new AttributedString(str); + as.addAttribute(TextAttribute.FONT, font); + as.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON); + AttributedCharacterIterator aci = as.getIterator(); + TextLayout tl = new TextLayout(aci, frc); + float delta = (float) (Math.ceil(tl.getAscent() + tl.getDescent() + tl.getLeading()) + .1); + float y = delta - .1f; + g2d.setColor(Color.BLACK); + for (int i = 0; i < 11; ++i) { + tl.draw(g2d, 10f, y); + y += delta; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/image/BufferedImage/VerifyNumBands.java openjdk-21-21.0.10+7/test/jdk/java/awt/image/BufferedImage/VerifyNumBands.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/image/BufferedImage/VerifyNumBands.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/image/BufferedImage/VerifyNumBands.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,56 @@ +/* + * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.image.BufferedImage; + +/** + * @test + * @bug 8318850 + * @summary Checks the total number of bands of image data + */ +public final class VerifyNumBands { + + public static void main(String[] args) { + test(BufferedImage.TYPE_INT_RGB, 3); + test(BufferedImage.TYPE_INT_ARGB, 4); + test(BufferedImage.TYPE_INT_ARGB_PRE, 4); + test(BufferedImage.TYPE_INT_BGR, 3); + test(BufferedImage.TYPE_3BYTE_BGR, 3); + test(BufferedImage.TYPE_4BYTE_ABGR, 4); + test(BufferedImage.TYPE_4BYTE_ABGR_PRE, 4); + test(BufferedImage.TYPE_USHORT_565_RGB, 3); + test(BufferedImage.TYPE_USHORT_555_RGB, 3); + test(BufferedImage.TYPE_BYTE_GRAY, 1); + test(BufferedImage.TYPE_USHORT_GRAY, 1); + } + + private static void test(int type, int expected) { + BufferedImage bi = new BufferedImage(1, 1, type); + int numBands = bi.getRaster().getSampleModel().getNumBands(); + if (numBands != expected) { + System.err.println("Expected: " + expected); + System.err.println("Actual: " + numBands); + throw new RuntimeException("wrong number of bands"); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/print/Dialog/DialogType.java openjdk-21-21.0.10+7/test/jdk/java/awt/print/Dialog/DialogType.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/print/Dialog/DialogType.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/print/Dialog/DialogType.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,49 +26,63 @@ * @bug 6568874 * @key printer * @summary Verify the native dialog works with attribute sets. - * @run main/manual=yesno DialogType + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame + * @run main/manual DialogType */ -import java.awt.print.*; -import javax.print.attribute.*; -import javax.print.attribute.standard.*; +import java.awt.print.PrinterJob; + +import javax.print.attribute.Attribute; +import javax.print.attribute.HashPrintRequestAttributeSet; +import javax.print.attribute.PrintRequestAttributeSet; +import javax.print.attribute.standard.DialogTypeSelection; + +import jtreg.SkippedException; public class DialogType { + private static PrinterJob job; - static String[] instructions = { - "This test assumes and requires that you have a printer installed", - "It verifies that the dialogs behave properly when using new API", - "to optionally select a native dialog where one is present.", - "Two dialogs are shown in succession.", - "The test passes as long as no exceptions are thrown, *AND*", - "if running on Windows only, the first dialog is a native windows", - "control which differs in appearance from the second dialog", - "" - }; - - public static void main(String[] args) { - - for (int i=0;i { + robot.delay(2000); + robot.keyPress(KeyEvent.VK_ESCAPE); + robot.keyRelease(KeyEvent.VK_ESCAPE); + robot.waitForIdle(); + }); + t1.start(); + PageFormat newFormat = pj.pageDialog(oldFormat); + if (!newFormat.equals(oldFormat)) { + throw new RuntimeException("Original PageFormat not returned on cancelling PageDialog"); + } + } +} + diff -Nru openjdk-21-21.0.9+10/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java openjdk-21-21.0.10+7/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java --- openjdk-21-21.0.9+10/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/awt/regtesthelpers/PassFailJFrame.java 2026-01-15 15:34:19.000000000 +0000 @@ -72,6 +72,7 @@ import javax.swing.JTextArea; import javax.swing.Timer; import javax.swing.border.Border; +import javax.swing.event.HyperlinkListener; import javax.swing.text.JTextComponent; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; @@ -98,7 +99,8 @@ * tester. The instructions can be either plain text or HTML. If the * text of the instructions starts with {@code ""}, the * instructions are displayed as HTML, as supported by Swing, which - * provides richer formatting options. + * provides richer formatting options. To handle navigating links in the + * instructions, call {@link Builder#hyperlinkListener} to install a listener. *

* The instructions are displayed in a text component with word-wrapping * so that there's no horizontal scroll bar. If the text doesn't fit, a @@ -592,6 +594,7 @@ frame.add(createInstructionUIPanel(instructions, testTimeOut, rows, columns, + null, false, false, 0), BorderLayout.CENTER); @@ -610,6 +613,7 @@ createInstructionUIPanel(builder.instructions, builder.testTimeOut, builder.rows, builder.columns, + builder.hyperlinkListener, builder.screenCapture, builder.addLogArea, builder.logAreaRows); @@ -631,6 +635,7 @@ private static JComponent createInstructionUIPanel(String instructions, long testTimeOut, int rows, int columns, + HyperlinkListener hyperlinkListener, boolean enableScreenCapture, boolean addLogArea, int logAreaRows) { @@ -643,6 +648,9 @@ JTextComponent text = instructions.startsWith("") ? configureHTML(instructions, rows, columns) : configurePlainText(instructions, rows, columns); + if (hyperlinkListener != null && text instanceof JEditorPane ep) { + ep.addHyperlinkListener(hyperlinkListener); + } text.setEditable(false); text.setBorder(createTextBorder()); text.setCaretPosition(0); @@ -716,7 +724,7 @@ // Reduce the list default margins styles.addRule("ol, ul { margin-left-ltr: 30; margin-left-rtl: 30 }"); // Make the size of code (and other elements) the same as other text - styles.addRule("code, kbd, samp, pre { font-size: inherit }"); + styles.addRule("code, kbd, samp, pre { font-size: inherit; background: #DDD; }"); return text; } @@ -1398,6 +1406,7 @@ private int rows; private int columns; private boolean screenCapture; + private HyperlinkListener hyperlinkListener; private boolean addLogArea; private int logAreaRows = 10; @@ -1478,6 +1487,18 @@ return this; } + /** + * Sets a {@link HyperlinkListener} for navigating links inside + * the instructions pane. + * + * @param hyperlinkListener the listener + * @return this builder + */ + public Builder hyperlinkListener(HyperlinkListener hyperlinkListener) { + this.hyperlinkListener = hyperlinkListener; + return this; + } + public Builder screenCapture() { this.screenCapture = true; return this; diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/File/MacPathTest.java openjdk-21-21.0.10+7/test/jdk/java/io/File/MacPathTest.java --- openjdk-21-21.0.9+10/test/jdk/java/io/File/MacPathTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/File/MacPathTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -21,6 +21,11 @@ * questions. */ +/* + * This test is launched via a ProcessBuilder in the main test MacPath which + * includes a @requires (os.family == "mac") tag so no operating system + * conditional is applied here. + */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -29,10 +34,6 @@ public class MacPathTest { public static void main(String args[]) throws Throwable { - String osname = System.getProperty("os.name"); - if (!osname.contains("OS X") && !osname.contains("Darwin")) - return; - // English test("TestDir_apple", // test dir "dir_macosx", // dir diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/File/MaxPath.java openjdk-21-21.0.10+7/test/jdk/java/io/File/MaxPath.java --- openjdk-21-21.0.9+10/test/jdk/java/io/File/MaxPath.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/File/MaxPath.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,16 +24,14 @@ /* @test @bug 6481955 @summary Path length less than MAX_PATH (260) works on Windows + @requires (os.family == "windows") */ -import java.io.*; +import java.io.File; +import java.io.IOException; public class MaxPath { public static void main(String[] args) throws Exception { - String osName = System.getProperty("os.name"); - if (!osName.startsWith("Windows")) { - return; - } int MAX_PATH = 260; String dir = new File(".").getAbsolutePath() + "\\"; String padding = "1234567890123456789012345678901234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890"; diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/File/MaxPathLength.java openjdk-21-21.0.10+7/test/jdk/java/io/File/MaxPathLength.java --- openjdk-21-21.0.9+10/test/jdk/java/io/File/MaxPathLength.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/File/MaxPathLength.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,30 +24,31 @@ /* @test @bug 4759207 4403166 4165006 4403166 6182812 6274272 7160013 @summary Test to see if win32 path length can be greater than 260 + @library .. /test/lib */ import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.DirectoryNotEmptyException; +import jdk.test.lib.Platform; public class MaxPathLength { private static String sep = File.separator; private static String pathComponent = sep + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; private static String fileName = - "areallylongfilenamethatsforsur"; - private static boolean isWindows = false; + "areallylongfilenamethatsforsur"; private static final int MAX_LENGTH = 256; + private static final int FILE_EXISTS_SLEEP = 100; + + private static final int MAX_PATH_COMPONENTS_WINDOWS = 20; + private static int counter = 0; public static void main(String[] args) throws Exception { - String osName = System.getProperty("os.name"); - if (osName.startsWith("Windows")) { - isWindows = true; - } for (int i = 4; i < 7; i++) { String name = fileName; @@ -59,14 +60,9 @@ } // test long paths on windows - // And these long pathes cannot be handled on Solaris and Mac platforms - if (isWindows) { - String name = fileName; - while (name.length() < MAX_LENGTH) { - testLongPath (20, name, false); - testLongPath (20, name, true); - name = getNextName(name); - } + // And these long paths cannot be handled on Linux and Mac platforms + if (Platform.isWindows()) { + testLongPath(); } } @@ -146,7 +142,7 @@ if (flist == null || !fn.equals(flist[0].getName())) throw new RuntimeException ("File.listFiles() failed"); - if (isWindows && + if (Platform.isWindows() && !fu.getCanonicalPath().equals(f.getCanonicalPath())) throw new RuntimeException ("getCanonicalPath() failed"); @@ -162,7 +158,7 @@ String abPath = f.getAbsolutePath(); if (!abPath.startsWith("\\\\") || abPath.length() < 1093) { - throw new RuntimeException ("File.renameTo() failed for lenth=" + throw new RuntimeException ("File.renameTo() failed for length=" + abPath.length()); } } else { @@ -189,7 +185,7 @@ Files.deleteIfExists(p); // Test if the file is really deleted and wait for 1 second at most for (int j = 0; j < 10 && Files.exists(p); j++) { - Thread.sleep(100); + Thread.sleep(FILE_EXISTS_SLEEP); } } catch (DirectoryNotEmptyException ex) { // Give up the clean-up, let jtreg handle it. @@ -199,4 +195,13 @@ } } } -} + + private static void testLongPath () throws Exception { + String name = fileName; + while (name.length() < MAX_LENGTH) { + testLongPath(MAX_PATH_COMPONENTS_WINDOWS, name, false); + testLongPath(MAX_PATH_COMPONENTS_WINDOWS, name, true); + name = getNextName(name); + } + } +} \ No newline at end of file diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/File/SymLinks.java openjdk-21-21.0.10+7/test/jdk/java/io/File/SymLinks.java --- openjdk-21-21.0.9+10/test/jdk/java/io/File/SymLinks.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/File/SymLinks.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -281,22 +281,7 @@ assertTrue(link2dir.isDirectory()); assertTrue(link2link2dir.isDirectory()); - // on Windows we test with the DOS hidden attribute set - if (System.getProperty("os.name").startsWith("Windows")) { - DosFileAttributeView view = Files - .getFileAttributeView(file.toPath(), DosFileAttributeView.class); - view.setHidden(true); - try { - assertTrue(file.isHidden()); - assertTrue(link2file.isHidden()); - assertTrue(link2link2file.isHidden()); - } finally { - view.setHidden(false); - } - assertFalse(file.isHidden()); - assertFalse(link2file.isHidden()); - assertFalse(link2link2file.isHidden()); - } + testDOSHiddenAttributes(); header("length"); @@ -362,6 +347,26 @@ } } + static void testDOSHiddenAttributes() throws IOException { + // on Windows we test with the DOS hidden attribute set + if (System.getProperty("os.name").startsWith("Windows")) { + header("testDOSHiddenAttributes"); + DosFileAttributeView view = Files + .getFileAttributeView(file.toPath(), DosFileAttributeView.class); + view.setHidden(true); + try { + assertTrue(file.isHidden()); + assertTrue(link2file.isHidden()); + assertTrue(link2link2file.isHidden()); + } finally { + view.setHidden(false); + } + assertFalse(file.isHidden()); + assertFalse(link2file.isHidden()); + assertFalse(link2link2file.isHidden()); + } + } + public static void main(String[] args) throws IOException { if (supportsSymLinks(top)) { try { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/File/TimeZoneLastModified.java openjdk-21-21.0.10+7/test/jdk/java/io/File/TimeZoneLastModified.java --- openjdk-21-21.0.9+10/test/jdk/java/io/File/TimeZoneLastModified.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/File/TimeZoneLastModified.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,15 +23,14 @@ /* * @test - * @bug 6212869 + * @bug 6212869 8347841 * @summary Determine if lastModified() works after TimeZone.setDefault() * @run main/othervm TimeZoneLastModified */ import java.io.File; -import java.util.Date; +import java.time.ZoneId; import java.util.TimeZone; -import java.text.SimpleDateFormat; public class TimeZoneLastModified { // Tue, 04 Jun 2002 13:56:50.002 GMT @@ -40,6 +39,9 @@ public static void main(String[] args) throws Throwable { int failures = test(null); for (String timeZoneID : TimeZone.getAvailableIDs()) { + if (ZoneId.SHORT_IDS.containsKey(timeZoneID)) { + continue; + } failures += test(timeZoneID); } if (failures != 0) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/File/WinDeviceName.java openjdk-21-21.0.10+7/test/jdk/java/io/File/WinDeviceName.java --- openjdk-21-21.0.9+10/test/jdk/java/io/File/WinDeviceName.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/File/WinDeviceName.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ /* @test @bug 6176051 4858457 @summary Check whether reserved names are handled correctly on Windows + @requires (os.family == "windows") */ import java.io.File; @@ -38,10 +39,6 @@ }; public static void main(String[] args) { String osName = System.getProperty("os.name"); - if (!osName.startsWith("Windows")) { - return; - } - for (int i = 0; i < devnames.length; i++) { String names[] = { devnames[i], devnames[i] + ".TXT", devnames[i].toLowerCase(), diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/File/WinMaxPath.java openjdk-21-21.0.10+7/test/jdk/java/io/File/WinMaxPath.java --- openjdk-21-21.0.9+10/test/jdk/java/io/File/WinMaxPath.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/File/WinMaxPath.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,15 +25,12 @@ @bug 6384833 @summary Check if appropriate exception FileNotFoundException gets thrown when the pathlengh exceeds the limit. + @requires (os.family == "windows") */ import java.io.*; public class WinMaxPath { public static void main(String[] args) throws Exception { - String osName = System.getProperty("os.name"); - if (!osName.startsWith("Windows")) { - return; - } try { char[] as = new char[65000]; java.util.Arrays.fill(as, 'a'); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/File/WinSpecialFiles.java openjdk-21-21.0.10+7/test/jdk/java/io/File/WinSpecialFiles.java --- openjdk-21-21.0.9+10/test/jdk/java/io/File/WinSpecialFiles.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/File/WinSpecialFiles.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,15 +25,12 @@ @bug 6192331 6348207 8202076 @summary Check if File.exists()/length() works correctly on Windows special files hiberfil.sys and pagefile.sys + @requires (os.family == "windows") */ import java.io.File; public class WinSpecialFiles { public static void main(String[] args) throws Exception { - String osName = System.getProperty("os.name"); - if (!osName.startsWith("Windows")) { - return; - } File root = new File("C:\\"); File[] dir = root.listFiles(); for (int i = 0; i < dir.length; i++) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/FileDescriptor/Sync.java openjdk-21-21.0.10+7/test/jdk/java/io/FileDescriptor/Sync.java --- openjdk-21-21.0.9+10/test/jdk/java/io/FileDescriptor/Sync.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/FileDescriptor/Sync.java 2026-01-15 15:34:19.000000000 +0000 @@ -39,7 +39,7 @@ public class Sync { static final String TEST_DIR = System.getProperty("test.dir", "."); - static final int TRIES = 10_000; + static final int TRIES = 1_000; public static void testWith(File file) throws Exception { try (FileOutputStream fos = new FileOutputStream(file)) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/FileOutputStream/ManyFiles.java openjdk-21-21.0.10+7/test/jdk/java/io/FileOutputStream/ManyFiles.java --- openjdk-21-21.0.9+10/test/jdk/java/io/FileOutputStream/ManyFiles.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/FileOutputStream/ManyFiles.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,15 +37,6 @@ static int NUM_FILES = 2050; public static void main(String args[]) throws Exception { - // Linux does not yet allow opening this many files; Solaris - // 8 requires an explicit allocation of more file descriptors - // to succeed. Since this test is written to check for a - // Windows capability it is much simpler to only run it - // on that platform. - String osName = System.getProperty("os.name"); - if (osName.startsWith("Linux")) - return; - for (int n = 0; n < NUM_FILES; n++) { File f = new File("file" + count++); files.add(f); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/io/pathNames/win32/SJIS.java openjdk-21-21.0.10+7/test/jdk/java/io/pathNames/win32/SJIS.java --- openjdk-21-21.0.9+10/test/jdk/java/io/pathNames/win32/SJIS.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/io/pathNames/win32/SJIS.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,9 +26,15 @@ @summary Check that pathnames containing double-byte characters are not corrupted by win32 path processing @author Mark Reinhold + @library /test/lib */ -import java.io.*; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +import jtreg.SkippedException; public class SJIS { @@ -47,8 +53,11 @@ /* This test is only valid on win32 systems that use the SJIS encoding */ if (File.separatorChar != '\\') return; - String enc = System.getProperty("file.encoding"); - if ((enc == null) || !enc.equals("SJIS")) return; + String enc = System.getProperty("native.encoding"); + if ((enc == null) || !enc.equals("MS932")) { + throw new SkippedException( + "native.encoding(%s) is not MS932".formatted(enc)); + } File f = new File("\u30BD"); if (f.exists()) rm(f); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/Math/FusedMultiplyAddTests.java openjdk-21-21.0.10+7/test/jdk/java/lang/Math/FusedMultiplyAddTests.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/Math/FusedMultiplyAddTests.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/Math/FusedMultiplyAddTests.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 4851642 8253409 + * @bug 4851642 8253409 8362207 * @summary Tests for Math.fusedMac and StrictMath.fusedMac. * @build Tests * @build FusedMultiplyAddTests @@ -352,8 +352,9 @@ {1.0f+Math.ulp(1.0f), 1.0f+Math.ulp(1.0f), -1.0f-2.0f*Math.ulp(1.0f), Math.ulp(1.0f)*Math.ulp(1.0f)}, - // Double-rounding if done in double precision - {0x1.fffffep23f, 0x1.000004p28f, 0x1.fep5f, 0x1.000002p52f} + // Double-rounding if done in double precision and/or double fma + {0x1.fffffep23f, 0x1.000004p28f, 0x1.fep5f, 0x1.000002p52f}, + {0x1.001p0f, 0x1.001p0f, 0x1p-100f, 0x1.002002p0f}, }; for (float[] testCase: testCases) diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/ProcessBuilder/Basic.java openjdk-21-21.0.10+7/test/jdk/java/lang/ProcessBuilder/Basic.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/ProcessBuilder/Basic.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/ProcessBuilder/Basic.java 2026-01-15 15:34:19.000000000 +0000 @@ -28,6 +28,7 @@ * 6464154 6523983 6206031 4960438 6631352 6631966 6850957 6850958 * 4947220 7018606 7034570 4244896 5049299 8003488 8054494 8058464 * 8067796 8224905 8263729 8265173 8272600 8231297 8282219 8285517 + * 8352533 8368192 * @key intermittent * @summary Basic tests for Process and Environment Variable code * @modules java.base/java.lang:open @@ -89,6 +90,7 @@ /* Used for regex String matching for long error messages */ static final String PERMISSION_DENIED_ERROR_MSG = "(Permission denied|error=13)"; static final String NO_SUCH_FILE_ERROR_MSG = "(No such file|error=2)"; + static final String SPAWNHELPER_FAILURE_MSG = "(Possible reasons:)"; /** * Returns the number of milliseconds since time given by @@ -321,7 +323,9 @@ } catch (IOException e) { String m = e.getMessage(); if (EnglishUnix.is() && - ! matches(m, PERMISSION_DENIED_ERROR_MSG)) + !matches(m, PERMISSION_DENIED_ERROR_MSG)) + unexpected(e); + if (matches(m, SPAWNHELPER_FAILURE_MSG)) unexpected(e); } catch (Throwable t) { unexpected(t); } } @@ -431,7 +435,9 @@ } catch (IOException e) { String m = e.getMessage(); if (EnglishUnix.is() && - ! matches(m, NO_SUCH_FILE_ERROR_MSG)) + !matches(m, NO_SUCH_FILE_ERROR_MSG)) + unexpected(e); + if (matches(m, SPAWNHELPER_FAILURE_MSG)) unexpected(e); } catch (Throwable t) { unexpected(t); } @@ -444,7 +450,9 @@ } catch (IOException e) { String m = e.getMessage(); if (EnglishUnix.is() && - ! matches(m, NO_SUCH_FILE_ERROR_MSG)) + !matches(m, NO_SUCH_FILE_ERROR_MSG)) + unexpected(e); + if (matches(m, SPAWNHELPER_FAILURE_MSG)) unexpected(e); } catch (Throwable t) { unexpected(t); } @@ -772,30 +780,29 @@ return Pattern.compile(regex).matcher(str).find(); } - private static String matchAndExtract(String str, String regex) { - Matcher matcher = Pattern.compile(regex).matcher(str); - if (matcher.find()) { - return matcher.group(); - } else { - return ""; - } + // Return the string with the matching regex removed + private static String matchAndRemove(String str, String regex) { + return Pattern.compile(regex) + .matcher(str) + .replaceAll(""); } /* Only used for Mac OS X -- - * Mac OS X (may) add the variable __CF_USER_TEXT_ENCODING to an empty - * environment. The environment variable JAVA_MAIN_CLASS_ may also - * be set in Mac OS X. - * Remove them both from the list of env variables + * Mac OS X (may) add the variables: __CF_USER_TEXT_ENCODING, JAVA_MAIN_CLASS_, + * and TMPDIR. + * Remove them from the list of env variables */ private static String removeMacExpectedVars(String vars) { // Check for __CF_USER_TEXT_ENCODING - String cleanedVars = vars.replace("__CF_USER_TEXT_ENCODING=" - +cfUserTextEncoding+",",""); + String cleanedVars = matchAndRemove(vars, + "__CF_USER_TEXT_ENCODING=" + cfUserTextEncoding + ","); // Check for JAVA_MAIN_CLASS_ - String javaMainClassStr - = matchAndExtract(cleanedVars, - "JAVA_MAIN_CLASS_\\d+=Basic.JavaChild,"); - return cleanedVars.replace(javaMainClassStr,""); + cleanedVars = matchAndRemove(cleanedVars, + "JAVA_MAIN_CLASS_\\d+=Basic.JavaChild,"); + // Check and remove TMPDIR + cleanedVars = matchAndRemove(cleanedVars, + "TMPDIR=[^,]*,"); + return cleanedVars; } /* Only used for AIX -- @@ -2052,6 +2059,8 @@ if (EnglishUnix.is() && ! matches(m, NO_SUCH_FILE_ERROR_MSG)) unexpected(e); + if (matches(m, SPAWNHELPER_FAILURE_MSG)) + unexpected(e); } catch (Throwable t) { unexpected(t); } //---------------------------------------------------------------- @@ -2069,6 +2078,8 @@ || (EnglishUnix.is() && ! matches(m, NO_SUCH_FILE_ERROR_MSG))) unexpected(e); + if (matches(m, SPAWNHELPER_FAILURE_MSG)) + unexpected(e); } catch (Throwable t) { unexpected(t); } //---------------------------------------------------------------- @@ -2085,6 +2096,8 @@ || (EnglishUnix.is() && ! matches(m, NO_SUCH_FILE_ERROR_MSG))) unexpected(e); + if (matches(m, SPAWNHELPER_FAILURE_MSG)) + unexpected(e); } catch (Throwable t) { unexpected(t); } //---------------------------------------------------------------- @@ -2143,8 +2156,9 @@ op.f(); fail(); } catch (IOException expected) { - check(expected.getMessage() - .matches("[Ss]tream [Cc]losed")); + String m = expected.getMessage(); + check(m.matches("[Ss]tream [Cc]losed")); + check(!matches(m, SPAWNHELPER_FAILURE_MSG)); } } } @@ -2196,10 +2210,14 @@ } equal(-1, r); } catch (IOException ioe) { - if (!ioe.getMessage().equals("Stream closed")) { + String m = ioe.getMessage(); + if (!m.equals("Stream closed")) { // BufferedInputStream may throw IOE("Stream closed"). unexpected(ioe); } + if (matches(m, SPAWNHELPER_FAILURE_MSG)) { + unexpected(ioe); + } } catch (Throwable t) { unexpected(t); }}}; thread.start(); @@ -2253,6 +2271,9 @@ ! (msg.matches(".*Bad file.*") || msg.matches(".*Stream closed.*"))) unexpected(e); + if (matches(msg, SPAWNHELPER_FAILURE_MSG)) { + unexpected(e); + } } catch (Throwable t) { unexpected(t); }}}; reader.setDaemon(true); @@ -2345,6 +2366,9 @@ if (EnglishUnix.is() && ! matches(m, PERMISSION_DENIED_ERROR_MSG)) unexpected(e); + if (matches(m, SPAWNHELPER_FAILURE_MSG)) { + unexpected(e); + } } catch (Throwable t) { unexpected(t); } new File("emptyCommand").delete(); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/ProcessBuilder/JspawnhelperProtocol.java openjdk-21-21.0.10+7/test/jdk/java/lang/ProcessBuilder/JspawnhelperProtocol.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/ProcessBuilder/JspawnhelperProtocol.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/ProcessBuilder/JspawnhelperProtocol.java 2026-01-15 15:34:19.000000000 +0000 @@ -49,14 +49,21 @@ private static final String[] CMD = { "pwd" }; private static final String ENV_KEY = "JTREG_JSPAWNHELPER_PROTOCOL_TEST"; + private static final String SPAWNHELPER_FAILURE_MSG = "Possible reasons:"; + private static void parentCode(String arg) throws IOException, InterruptedException { System.out.println("Recursively executing 'JspawnhelperProtocol " + arg + "'"); Process p = null; try { p = Runtime.getRuntime().exec(CMD); } catch (Exception e) { + // Check that exception contains rich message on failure. e.printStackTrace(System.out); - System.exit(ERROR); + if (e instanceof IOException && e.getMessage().contains(SPAWNHELPER_FAILURE_MSG)) { + System.exit(ERROR); + } else { + System.exit(ERROR + 3); + } } if (!p.waitFor(TIMEOUT, TimeUnit.SECONDS)) { System.out.println("Child process timed out"); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-ALL.properties openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-ALL.properties --- openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-ALL.properties 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-ALL.properties 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,8 @@ +############################################################ +# java.lang.Runtime logging level to console to ALL +############################################################ + +handlers= java.util.logging.ConsoleHandler + +java.util.logging.ConsoleHandler.level = ALL +java.lang.Runtime.level = ALL diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-FINE.properties openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-FINE.properties --- openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-FINE.properties 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-FINE.properties 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ ############################################################ -# Enable logging java.lang.Runtime to the console +# java.lang.Runtime logging level to console to FINE ############################################################ handlers= java.util.logging.ConsoleHandler diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-FINER.properties openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-FINER.properties --- openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-FINER.properties 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-FINER.properties 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,8 @@ +############################################################ +# java.lang.Runtime logging level to console to FINER +############################################################ + +handlers= java.util.logging.ConsoleHandler + +java.util.logging.ConsoleHandler.level = ALL +java.lang.Runtime.level = FINER diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-INFO.properties openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-INFO.properties --- openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-INFO.properties 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-INFO.properties 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ ############################################################ -# Enable logging java.lang.Runtime to the console +# java.lang.Runtime logging level to console to INFO ############################################################ handlers= java.util.logging.ConsoleHandler diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-OFF.properties openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-OFF.properties --- openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-OFF.properties 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-OFF.properties 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,8 @@ +############################################################ +# java.lang.Runtime logging level to console to OFF +############################################################ + +handlers= java.util.logging.ConsoleHandler + +java.util.logging.ConsoleHandler.level = ALL +java.lang.Runtime.level = OFF diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-SEVERE.properties openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-SEVERE.properties --- openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-SEVERE.properties 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-SEVERE.properties 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,8 @@ +############################################################ +# java.lang.Runtime logging level to console to SEVERE +############################################################ + +handlers= java.util.logging.ConsoleHandler + +java.util.logging.ConsoleHandler.level = ALL +java.lang.Runtime.level = SEVERE diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-WARNING.properties openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-WARNING.properties --- openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/ExitLogging-WARNING.properties 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/ExitLogging-WARNING.properties 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,8 @@ +############################################################ +# java.lang.Runtime logging level to console to WARNING +############################################################ + +handlers= java.util.logging.ConsoleHandler + +java.util.logging.ConsoleHandler.level = ALL +java.lang.Runtime.level = WARNING diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/RuntimeExitLogTest.java openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/RuntimeExitLogTest.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/RuntimeTests/RuntimeExitLogTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/RuntimeTests/RuntimeExitLogTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,7 +49,7 @@ private static final String TEST_JDK = System.getProperty("test.jdk"); private static final String TEST_SRC = System.getProperty("test.src"); - + private static final String NEW_LINE = System.lineSeparator(); private static Object HOLD_LOGGER; /** @@ -65,30 +65,79 @@ } /** + * Generate a regular expression pattern that match the expected log output for a Runtime.exit() call. + * The pattern includes the method call stack trace and the exit status. + * @param status the exit status passed to the Runtime.exit() call + * @return the regex pattern as a string + */ + private static String generateStackTraceLogPattern(int status) { + return "(?s)^.+ java\\.lang\\.Shutdown logRuntimeExit\\n" + + ".*: Runtime\\.exit\\(\\) called with status: " + status + "\\n" + + "java\\.lang\\.Throwable: Runtime\\.exit\\(" + status + "\\)\\n" + + "\\s+at java\\.base/java\\.lang\\.Shutdown\\.logRuntimeExit\\(Shutdown\\.java:\\d+\\)\\n" + + "\\s+at(?: .+)"; + } + + /** * Test various log level settings, and none. * @return a stream of arguments for parameterized test */ private static Stream logParamProvider() { return Stream.of( - // Logging enabled with level DEBUG + // Logging configuration using the java.util.logging.config.file property + Arguments.of(List.of("-Djava.util.logging.config.file=" + + Path.of(TEST_SRC, "ExitLogging-ALL.properties").toString()), 1, + generateStackTraceLogPattern(1)), + Arguments.of(List.of("-Djava.util.logging.config.file=" + + Path.of(TEST_SRC, "ExitLogging-FINER.properties").toString()), 2, + generateStackTraceLogPattern(2)), Arguments.of(List.of("-Djava.util.logging.config.file=" + - Path.of(TEST_SRC, "ExitLogging-FINE.properties").toString()), 1, - "Runtime.exit() called with status: 1"), - // Logging disabled due to level + Path.of(TEST_SRC, "ExitLogging-FINE.properties").toString()), 3, + generateStackTraceLogPattern(3)), + Arguments.of(List.of("-Djava.util.logging.config.file=" + + Path.of(TEST_SRC, "ExitLogging-INFO.properties").toString()), 4, + ""), + Arguments.of(List.of("-Djava.util.logging.config.file=" + + Path.of(TEST_SRC, "ExitLogging-WARNING.properties").toString()), 5, + ""), + Arguments.of(List.of("-Djava.util.logging.config.file=" + + Path.of(TEST_SRC, "ExitLogging-SEVERE.properties").toString()), 6, + ""), Arguments.of(List.of("-Djava.util.logging.config.file=" + - Path.of(TEST_SRC, "ExitLogging-INFO.properties").toString()), 2, + Path.of(TEST_SRC, "ExitLogging-OFF.properties").toString()), 7, ""), - // Console logger + + // Logging configuration using the jdk.system.logger.level property + Arguments.of(List.of("--limit-modules", "java.base", + "-Djdk.system.logger.level=ALL"), 8, + generateStackTraceLogPattern(8)), + Arguments.of(List.of("--limit-modules", "java.base", + "-Djdk.system.logger.level=TRACE"), 9, + generateStackTraceLogPattern(9)), + Arguments.of(List.of("--limit-modules", "java.base", + "-Djdk.system.logger.level=DEBUG"), 10, + generateStackTraceLogPattern(10)), Arguments.of(List.of("--limit-modules", "java.base", - "-Djdk.system.logger.level=DEBUG"), 3, - "Runtime.exit() called with status: 3"), - // Console logger - Arguments.of(List.of(), 4, ""), + "-Djdk.system.logger.level=INFO"), 11, + ""), + Arguments.of(List.of("--limit-modules", "java.base", + "-Djdk.system.logger.level=WARNING"), 12, + ""), + Arguments.of(List.of("--limit-modules", "java.base", + "-Djdk.system.logger.level=ERROR"), 13, + ""), + Arguments.of(List.of("--limit-modules", "java.base", + "-Djdk.system.logger.level=OFF"), 14, + ""), + // Throwing Handler Arguments.of(List.of("-DThrowingHandler", "-Djava.util.logging.config.file=" + - Path.of(TEST_SRC, "ExitLogging-FINE.properties").toString()), 5, - "Runtime.exit(5) logging failed: Exception in publish") + Path.of(TEST_SRC, "ExitLogging-FINE.properties").toString()), 15, + "Runtime\\.exit\\(15\\) logging failed: Exception in publish"), + + // Default console logging configuration with no additional parameters + Arguments.of(List.of(), 16, "") ); } @@ -115,13 +164,14 @@ try (BufferedReader reader = process.inputReader()) { List lines = reader.lines().toList(); boolean match = (expectMessage.isEmpty()) - ? lines.size() == 0 - : lines.stream().filter(s -> s.contains(expectMessage)).findFirst().isPresent(); + ? lines.isEmpty() + : String.join("\n", lines).matches(expectMessage); if (!match) { // Output lines for debug - System.err.println("Expected: \"" + expectMessage + "\""); + System.err.println("Expected pattern (line-break):"); + System.err.println(expectMessage.replaceAll("\\n", NEW_LINE)); System.err.println("---- Actual output begin"); - lines.forEach(l -> System.err.println(l)); + lines.forEach(System.err::println); System.err.println("---- Actual output end"); fail("Unexpected log contents"); } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/String/Chars.java openjdk-21-21.0.10+7/test/jdk/java/lang/String/Chars.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/String/Chars.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/String/Chars.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,10 +22,12 @@ */ /* - @test - @bug 8054307 - @summary test chars() and codePoints() -*/ + * @test + * @bug 8054307 8311906 8321514 + * @summary test String chars() and codePoints() + * @run main/othervm -XX:+CompactStrings Chars + * @run main/othervm -XX:-CompactStrings Chars + */ import java.util.Arrays; import java.util.Random; @@ -44,6 +46,8 @@ cc[j] = (char)(ccExp[j] = cpExp[j] = r.nextInt(0x80)); } testChars(cc, ccExp); + testCharsSubrange(cc, ccExp); + testIntsSubrange(ccExp); testCPs(cc, cpExp); // bmp without surrogates @@ -51,6 +55,7 @@ cc[j] = (char)(ccExp[j] = cpExp[j] = r.nextInt(0x8000)); } testChars(cc, ccExp); + testCharsSubrange(cc, ccExp); testCPs(cc, cpExp); // bmp with surrogates @@ -69,6 +74,8 @@ } cpExp = Arrays.copyOf(cpExp, k); testChars(cc, ccExp); + testCharsSubrange(cc, ccExp); + testIntsSubrange(ccExp); testCPs(cc, cpExp); } } @@ -76,14 +83,56 @@ static void testChars(char[] cc, int[] expected) { String str = new String(cc); if (!Arrays.equals(expected, str.chars().toArray())) { - throw new RuntimeException("chars/codePoints() failed!"); + throw new RuntimeException("testChars failed!"); + } + } + + static void testCharsSubrange(char[] cc, int[] expected) { + int[] offsets = { 7, 31 }; // offsets to test + int LENGTH = 13; + for (int i = 0; i < offsets.length; i++) { + int offset = Math.max(0, offsets[i]); // confine to the input array + int count = Math.min(LENGTH, cc.length - offset); + String str = new String(cc, offset, count); + int[] actual = str.chars().toArray(); + int errOffset = Arrays.mismatch(actual, 0, actual.length, + expected, offset, offset + count); + if (errOffset >= 0) { + System.err.printf("expected[%d] (%d) != actual[%d] (%d)%n", + offset + errOffset, expected[offset + errOffset], + errOffset, actual[errOffset]); + System.err.println("expected: " + Arrays.toString(expected)); + System.err.println("actual: " + Arrays.toString(actual)); + throw new RuntimeException("testCharsSubrange failed!"); + } + } + } + + static void testIntsSubrange(int[] expected) { + int[] offsets = { 7, 31 }; // offsets to test + int LENGTH = 13; + for (int i = 0; i < offsets.length; i++) { + int offset = Math.max(0, offsets[i]); // confine to the input array + int count = Math.min(LENGTH, expected.length - offset); + String str = new String(expected, offset, count); + int[] actual = str.chars().toArray(); + int errOffset = Arrays.mismatch(actual, 0, actual.length, + expected, offset, offset + count); + if (errOffset >= 0) { + System.err.printf("expected[%d] (%d) != actual[%d] (%d)%n", + offset + errOffset, expected[offset + errOffset], + errOffset, actual[errOffset]); + System.err.println("expected: " + Arrays.toString(expected)); + System.err.println("actual: " + Arrays.toString(actual)); + throw new RuntimeException("testIntsSubrange failed!"); + } } } static void testCPs(char[] cc, int[] expected) { String str = new String(cc); if (!Arrays.equals(expected, str.codePoints().toArray())) { - throw new RuntimeException("chars/codePoints() failed!"); + throw new RuntimeException("testCPs failed!"); } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/String/CompactString/MaxSizeUTF16String.java openjdk-21-21.0.10+7/test/jdk/java/lang/String/CompactString/MaxSizeUTF16String.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/String/CompactString/MaxSizeUTF16String.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/String/CompactString/MaxSizeUTF16String.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +import java.nio.charset.StandardCharsets; + +/* + * @test + * @bug 8077559 8321180 + * @summary Tests Compact String for maximum size strings + * @requires os.maxMemory >= 8g & vm.bits == 64 + * @requires vm.flagless + * @run junit/othervm -XX:+CompactStrings -Xmx8g MaxSizeUTF16String + * @run junit/othervm -XX:-CompactStrings -Xmx8g MaxSizeUTF16String + * @run junit/othervm -Xcomp -Xmx8g MaxSizeUTF16String + */ + +public class MaxSizeUTF16String { + + private final static int MAX_UTF16_STRING_LENGTH = Integer.MAX_VALUE / 2; + + private final static String EXPECTED_OOME_MESSAGE = "UTF16 String size is"; + private final static String EXPECTED_VM_LIMIT_MESSAGE = "Requested array size exceeds VM limit"; + private final static String UNEXPECTED_JAVA_HEAP_SPACE = "Java heap space"; + + // Create a large UTF-8 byte array with a single non-latin1 character + private static byte[] generateUTF8Data(int byteSize) { + byte[] nonAscii = "\u0100".getBytes(StandardCharsets.UTF_8); + byte[] arr = new byte[byteSize]; + System.arraycopy(nonAscii, 0, arr, 0, nonAscii.length); // non-latin1 at start + return arr; + } + + // Create a large char array with a single non-latin1 character + private static char[] generateCharData(int size) { + char[] nonAscii = "\u0100".toCharArray(); + char[] arr = new char[size]; + System.arraycopy(nonAscii, 0, arr, 0, nonAscii.length); // non-latin1 at start + return arr; + } + + @Test + public void testMaxUTF8() { + // Overly large UTF-8 data with 1 non-latin1 char + final byte[] large_utf8_bytes = generateUTF8Data(MAX_UTF16_STRING_LENGTH + 1); + int[] sizes = new int[] { + MAX_UTF16_STRING_LENGTH + 1, + MAX_UTF16_STRING_LENGTH, + MAX_UTF16_STRING_LENGTH - 1}; + for (int size : sizes) { + System.err.println("Checking max UTF16 string len: " + size); + try { + // Use only part of the UTF-8 byte array + new String(large_utf8_bytes, 0, size, StandardCharsets.UTF_8); + if (size >= MAX_UTF16_STRING_LENGTH) { + fail("Expected OutOfMemoryError with message prefix: " + EXPECTED_OOME_MESSAGE); + } + } catch (OutOfMemoryError ex) { + if (ex.getMessage().equals(UNEXPECTED_JAVA_HEAP_SPACE)) { + // Insufficient heap size + throw ex; + } + if (!ex.getMessage().startsWith(EXPECTED_OOME_MESSAGE) && + !ex.getMessage().startsWith(EXPECTED_VM_LIMIT_MESSAGE)) { + fail("Failed: Not the OutOfMemoryError expected", ex); + } + } + } + } + + @Test + public void testMaxCharArray() { + // Overly large UTF-8 data with 1 non-latin1 char + final char[] large_char_array = generateCharData(MAX_UTF16_STRING_LENGTH + 1); + int[] sizes = new int[]{ + MAX_UTF16_STRING_LENGTH + 1, + MAX_UTF16_STRING_LENGTH, + MAX_UTF16_STRING_LENGTH - 1}; + for (int size : sizes) { + System.err.println("Checking max UTF16 string len: " + size); + try { + // Large char array with 1 non-latin1 char + new String(large_char_array, 0, size); + if (size >= MAX_UTF16_STRING_LENGTH) { + fail("Expected OutOfMemoryError with message prefix: " + EXPECTED_OOME_MESSAGE); + } + } catch (OutOfMemoryError ex) { + if (ex.getMessage().equals(UNEXPECTED_JAVA_HEAP_SPACE)) { + // Insufficient heap size + throw ex; + } + if (!ex.getMessage().startsWith(EXPECTED_OOME_MESSAGE) && + !ex.getMessage().startsWith(EXPECTED_VM_LIMIT_MESSAGE)) { + throw new RuntimeException("Wrong exception message: " + ex.getMessage(), ex); + } + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/String/StringRacyConstructor.java openjdk-21-21.0.10+7/test/jdk/java/lang/String/StringRacyConstructor.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/String/StringRacyConstructor.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/String/StringRacyConstructor.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,437 @@ +/* + * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package test.java.lang.String; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.ConcurrentModificationException; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIf; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +/* + * @test + * @bug 8311906 + * @modules java.base/java.lang:open + * @summary check String's racy constructors + * @run junit/othervm -XX:+CompactStrings test.java.lang.String.StringRacyConstructor + * @run junit/othervm -XX:-CompactStrings test.java.lang.String.StringRacyConstructor + */ + +public class StringRacyConstructor { + private static final byte LATIN1 = 0; + private static final byte UTF16 = 1; + + private static final Field STRING_CODER_FIELD; + private static final Field SB_CODER_FIELD; + private static final boolean COMPACT_STRINGS; + + static { + try { + STRING_CODER_FIELD = String.class.getDeclaredField("coder"); + STRING_CODER_FIELD.setAccessible(true); + SB_CODER_FIELD = Class.forName("java.lang.AbstractStringBuilder").getDeclaredField("coder"); + SB_CODER_FIELD.setAccessible(true); + COMPACT_STRINGS = isCompactStrings(); + } catch (NoSuchFieldException ex ) { + throw new ExceptionInInitializerError(ex); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + /* {@return true iff CompactStrings are enabled} + */ + public static boolean isCompactStrings() { + try { + Field compactStringField = String.class.getDeclaredField("COMPACT_STRINGS"); + compactStringField.setAccessible(true); + return compactStringField.getBoolean(null); + } catch (NoSuchFieldException ex) { + throw new ExceptionInInitializerError(ex); + } catch (IllegalAccessException iae) { + throw new AssertionError(iae); + } + } + + // Return the coder for the String + private static int coder(String s) { + try { + return STRING_CODER_FIELD.getByte(s); + } catch (IllegalAccessException iae) { + throw new AssertionError(iae); + } + } + + // Return the coder for the StringBuilder + private static int sbCoder(StringBuilder sb) { + try { + return SB_CODER_FIELD.getByte(sb); + } catch (IllegalAccessException iae) { + throw new AssertionError(iae); + } + } + + // Return a summary of the internals of the String + // The coder and indicate if the coder matches the string contents + private static String inspectString(String s) { + try { + char[] chars = s.toCharArray(); + String r = new String(chars); + + boolean invalidCoder = coder(s) != coder(r); + String coder = STRING_CODER_FIELD.getByte(s) == 0 ? "isLatin1" : "utf16"; + return (invalidCoder ? "INVALID CODER" : "" ) + " \"" + s + "\", coder: " + coder; + } catch (IllegalAccessException ex ) { + return "EXCEPTION: " + ex.getMessage(); + } + } + + /** + * {@return true if the coder matches the presence/lack of UTF16 characters} + * If it returns false, the coder and the contents have failed the precondition for string. + * @param orig a string + */ + private static boolean validCoder(String orig) { + if (!COMPACT_STRINGS) { + assertEquals(UTF16, coder(orig), "Non-COMPACT STRINGS coder must be UTF16"); + } + int accum = 0; + for (int i = 0; i < orig.length(); i++) + accum |= orig.charAt(i); + byte expectedCoder = (accum < 256) ? LATIN1 : UTF16; + return expectedCoder == coder(orig); + } + + // Check a StringBuilder for consistency of coder and latin1 vs UTF16 + private static boolean validCoder(StringBuilder orig) { + int accum = 0; + for (int i = 0; i < orig.length(); i++) + accum |= orig.charAt(i); + byte expectedCoder = (accum < 256) ? LATIN1 : UTF16; + return expectedCoder == sbCoder(orig); + } + + @Test + @EnabledIf("test.java.lang.String.StringRacyConstructor#isCompactStrings") + public void checkStringRange() { + char[] chars = {'a', 'b', 'c', 0xff21, 0xff22, 0xff23}; + String orig = new String(chars); + char[] xx = orig.toCharArray(); + String stringFromChars = new String(xx); + assertEquals(orig, stringFromChars, "mixed chars"); + assertTrue(validCoder(stringFromChars), "invalid coder" + + ", invalid coder: " + inspectString(stringFromChars)); + } + + private static List strings() { + return List.of("01234", " "); + } + + @ParameterizedTest + @MethodSource("strings") + @EnabledIf("test.java.lang.String.StringRacyConstructor#isCompactStrings") + public void racyString(String orig) { + String racyString = racyStringConstruction(orig); + // The contents are indeterminate due to the race + assertTrue(validCoder(racyString), orig + " string invalid" + + ", racyString: " + inspectString(racyString)); + } + + @ParameterizedTest + @MethodSource("strings") + @EnabledIf("test.java.lang.String.StringRacyConstructor#isCompactStrings") + public void racyCodePoint(String orig) { + String iffyString = racyStringConstructionCodepoints(orig); + // The contents are indeterminate due to the race + assertTrue(validCoder(iffyString), "invalid coder in non-deterministic string" + + ", orig:" + inspectString(orig) + + ", iffyString: " + inspectString(iffyString)); + } + + @ParameterizedTest + @MethodSource("strings") + @EnabledIf("test.java.lang.String.StringRacyConstructor#isCompactStrings") + public void racyCodePointSurrogates(String orig) { + String iffyString = racyStringConstructionCodepointsSurrogates(orig); + // The contents are indeterminate due to the race + if (!orig.equals(iffyString)) + System.err.println("orig: " + orig + ", iffy: " + iffyString + Arrays.toString(iffyString.codePoints().toArray())); + assertTrue(validCoder(iffyString), "invalid coder in non-deterministic string" + + ", orig:" + inspectString(orig) + + ", iffyString: " + inspectString(iffyString)); + } + + // Test the private methods of StringUTF16 that compress and copy COMPRESSED_STRING + // encoded byte arrays. + @Test + public void verifyUTF16CopyBytes() + throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { + Class stringUTF16 = Class.forName("java.lang.StringUTF16"); + Method mCompressChars = stringUTF16.getDeclaredMethod("compress", + char[].class, int.class, byte[].class, int.class, int.class); + mCompressChars.setAccessible(true); + + // First warmup the intrinsic and check 1 case + char[] chars = {'a', 'b', 'c', 0xff21, 0xff22, 0xff23}; + byte[] bytes = new byte[chars.length]; + int printWarningCount = 0; + + for (int i = 0; i < 1_000_000; i++) { // repeat to get C2 to kick in + // Copy only latin1 chars from UTF-16 converted prefix (3 chars -> 3 bytes) + int intResult = (int) mCompressChars.invoke(null, chars, 0, bytes, 0, chars.length); + if (intResult == 0) { + if (printWarningCount == 0) { + printWarningCount = 1; + System.err.println("Intrinsic for StringUTF16.compress returned 0, may not have been updated."); + } + } else { + assertEquals(3, intResult, "return length not-equal, iteration: " + i); + } + } + + // Exhaustively check compress returning the correct index of the non-latin1 char. + final int SIZE = 48; + final byte FILL_BYTE = 'R'; + chars = new char[SIZE]; + bytes = new byte[chars.length]; + for (int i = 0; i < SIZE; i++) { // Every starting index + for (int j = i; j < SIZE; j++) { // Every location of non-latin1 + Arrays.fill(chars, 'A'); + Arrays.fill(bytes, FILL_BYTE); + chars[j] = 0xFF21; + int intResult = (int) mCompressChars.invoke(null, chars, i, bytes, 0, chars.length - i); + assertEquals(j - i, intResult, "compress found wrong index"); + assertEquals(FILL_BYTE, bytes[j], "extra character stored"); + } + } + + } + + // Check that a concatenated "hello" has a valid coder + @Test + @EnabledIf("test.java.lang.String.StringRacyConstructor#isCompactStrings") + public void checkConcatAndIntern() { + var helloWorld = "hello world"; + String helloToo = racyStringConstruction("hell".concat("o")); + String o = helloToo.intern(); + var hello = "hello"; + assertTrue(validCoder(helloToo), "startsWith: " + + ", hell: " + inspectString(helloToo) + + ", o: " + inspectString(o) + + ", hello: " + inspectString(hello) + + ", hello world: " + inspectString(helloWorld)); + } + + // Check that an empty string with racy construction has a valid coder + @Test + @EnabledIf("test.java.lang.String.StringRacyConstructor#isCompactStrings") + public void racyEmptyString() { + var space = racyStringConstruction(" "); + var trimmed = space.trim(); + assertTrue(validCoder(trimmed), "empty string invalid coder" + + ", trimmed: " + inspectString(trimmed)); + } + + // Check that an exception in a user implemented CharSequence doesn't result in + // an invalid coder when appended to a StringBuilder + @Test + @EnabledIf("test.java.lang.String.StringRacyConstructor#isCompactStrings") + void charSequenceException() { + ThrowingCharSequence bs = new ThrowingCharSequence("A\u2030\uFFFD"); + var sb = new StringBuilder(); + try { + sb.append(bs); + fail("An IllegalArgumentException should have been thrown"); + } catch (IllegalArgumentException ex) { + // ignore expected + } + assertTrue(validCoder(sb), "invalid coder in StringBuilder"); + } + + /** + * Given a latin-1 String, attempt to create a copy that is + * incorrectly encoded as UTF-16. + */ + public static String racyStringConstruction(String original) throws ConcurrentModificationException { + if (original.chars().max().getAsInt() >= 256) { + throw new IllegalArgumentException( + "Only work with latin-1 Strings"); + } + + char[] chars = original.toCharArray(); + + // In another thread, flip the first character back + // and forth between being latin-1 or not + Thread thread = new Thread(() -> { + while (!Thread.interrupted()) { + chars[0] ^= 256; + } + }); + thread.start(); + + // at the same time call the String constructor, + // until we hit the race condition + int i = 0; + while (true) { + i++; + String s = new String(chars); + if ((s.charAt(0) < 256 && !original.equals(s)) || i > 1_000_000) { + thread.interrupt(); + try { + thread.join(); + } catch (InterruptedException ie) { + // ignore interrupt + } + return s; + } + } + } + + /** + * Given a latin-1 String, creates a copy that is + * incorrectly encoded as UTF-16 using the APIs for Codepoints. + */ + public static String racyStringConstructionCodepoints(String original) throws ConcurrentModificationException { + if (original.chars().max().getAsInt() >= 256) { + throw new IllegalArgumentException( + "Can only work with latin-1 Strings"); + } + + int len = original.length(); + int[] codePoints = new int[len]; + for (int i = 0; i < len; i++) { + codePoints[i] = original.charAt(i); + } + + // In another thread, flip the first character back + // and forth between being latin-1 or not + Thread thread = new Thread(() -> { + while (!Thread.interrupted()) { + codePoints[0] ^= 256; + } + }); + thread.start(); + + // at the same time call the String constructor, + // until we hit the race condition + int i = 0; + while (true) { + i++; + String s = new String(codePoints, 0, len); + if ((s.charAt(0) < 256 && !original.equals(s)) || i > 1_000_000) { + thread.interrupt(); + try { + thread.join(); + } catch (InterruptedException ie) { + // ignore interrupt + } + return s; + } + } + } + + /** + * Returns a string created from a codepoint array that has been racily + * modified to contain high and low surrogates. The string is a different length + * than the original due to the surrogate encoding. + */ + public static String racyStringConstructionCodepointsSurrogates(String original) throws ConcurrentModificationException { + if (original.chars().max().getAsInt() >= 256) { + throw new IllegalArgumentException( + "Can only work with latin-1 Strings"); + } + + int len = original.length(); + int[] codePoints = new int[len]; + for (int i = 0; i < len; i++) { + codePoints[i] = original.charAt(i); + } + + // In another thread, flip the first character back + // and forth between being latin-1 or as a surrogate pair. + Thread thread = new Thread(() -> { + while (!Thread.interrupted()) { + codePoints[0] ^= 0x10000; + } + }); + thread.start(); + + // at the same time call the String constructor, + // until we hit the race condition + int i = 0; + while (true) { + i++; + String s = new String(codePoints, 0, len); + if ((s.length() != original.length()) || i > 1_000_000) { + thread.interrupt(); + try { + thread.join(); + } catch (InterruptedException ie) { + // ignore interrupt + } + return s; + } + } + } + + // A CharSequence that returns characters from a string and throws IllegalArgumentException + // when the character requested is 0xFFFD (the replacement character) + // The string contents determine when the exception is thrown. + static class ThrowingCharSequence implements CharSequence { + private final String aString; + + ThrowingCharSequence(String aString) { + this.aString = aString; + } + + @Override + public int length() { + return aString.length(); + } + + @Override + public char charAt(int index) { + char ch = aString.charAt(index); + if (ch == 0xFFFD) { + throw new IllegalArgumentException("Replacement character at index " + index); + } + return ch; + } + + @Override + // Not used; returns the entire string + public CharSequence subSequence(int start, int end) { + return this; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/System/LoggerFinder/internal/BootstrapLogger/BootstrapLoggerTest.java openjdk-21-21.0.10+7/test/jdk/java/lang/System/LoggerFinder/internal/BootstrapLogger/BootstrapLoggerTest.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/System/LoggerFinder/internal/BootstrapLogger/BootstrapLoggerTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/System/LoggerFinder/internal/BootstrapLogger/BootstrapLoggerTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,6 +39,7 @@ import java.security.ProtectionDomain; import java.util.concurrent.atomic.AtomicBoolean; import java.util.List; +import java.util.Locale; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -88,6 +89,8 @@ } public static void main(String[] args) throws Exception { + Locale savedLocale = Locale.getDefault(); + Locale.setDefault(Locale.US); if (args == null || args.length == 0) { args = new String[] { TestCase.SECURE_AND_WAIT.name() }; } @@ -373,6 +376,7 @@ LogStream.err.println("Not checking executor termination for " + test); } } finally { + Locale.setDefault(savedLocale); SimplePolicy.allowAll.set(Boolean.FALSE); } LogStream.err.println(test.name() + ": PASSED"); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/Thread/virtual/ParkWithFixedThreadPool.java openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/ParkWithFixedThreadPool.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/Thread/virtual/ParkWithFixedThreadPool.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/ParkWithFixedThreadPool.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2021, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java 2026-01-15 15:34:19.000000000 +0000 @@ -36,12 +36,13 @@ * @requires vm.debug == true * @modules java.base/java.lang:+open * @library /test/lib - * @run main/othervm/timeout=300 GetStackTraceALotWhenPinned 200000 + * @run main/othervm/timeout=300 GetStackTraceALotWhenPinned 50000 */ import java.time.Instant; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.LockSupport; +import jdk.test.lib.Platform; import jdk.test.lib.thread.VThreadRunner; import jdk.test.lib.thread.VThreadPinner; @@ -53,7 +54,15 @@ VThreadRunner.ensureParallelism(2); } - int iterations = Integer.parseInt(args[0]); + int iterations; + int value = Integer.parseInt(args[0]); + if (Platform.isOSX()) { + // reduced iterations on macosx + iterations = Math.max(value / 4, 1); + } else { + iterations = value; + } + var barrier = new Barrier(2); // Start a virtual thread that loops doing Thread.yield and parking while pinned. @@ -78,18 +87,23 @@ } }); - long lastTimestamp = System.currentTimeMillis(); - for (int i = 0; i < iterations; i++) { + long lastTime = System.nanoTime(); + for (int i = 1; i <= iterations; i++) { // wait for virtual thread to arrive barrier.await(); thread.getStackTrace(); LockSupport.unpark(thread); - long currentTime = System.currentTimeMillis(); - if ((currentTime - lastTimestamp) > 500) { - System.out.format("%s %d remaining ...%n", Instant.now(), (iterations - i)); - lastTimestamp = currentTime; + long currentTime = System.nanoTime(); + if (i == iterations || ((currentTime - lastTime) > 1_000_000_000L)) { + System.out.format("%s => %d of %d%n", Instant.now(), i, iterations); + lastTime = currentTime; + } + + if (Thread.currentThread().isInterrupted()) { + // fail quickly if interrupted by jtreg + throw new RuntimeException("interrupted"); } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/Thread/virtual/stress/ParkALot.java openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/ParkALot.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/Thread/virtual/stress/ParkALot.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/ParkALot.java 2026-01-15 15:34:19.000000000 +0000 @@ -25,29 +25,35 @@ * @test * @summary Stress test parking and unparking * @requires vm.debug != true - * @run main/othervm ParkALot 500000 + * @library /test/lib + * @run main/othervm/timeout=300 ParkALot 300000 */ /* * @test * @requires vm.debug == true - * @run main/othervm ParkALot 100000 + * @library /test/lib + * @run main/othervm/timeout=300 ParkALot 100000 */ import java.time.Instant; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.LockSupport; +import jdk.test.lib.Platform; public class ParkALot { - private static final int ITERATIONS = 1_000_000; - public static void main(String[] args) { + public static void main(String[] args) throws Exception { int iterations; - if (args.length > 0) { - iterations = Integer.parseInt(args[0]); + int value = Integer.parseInt(args[0]); + if (Platform.isOSX()) { + // reduced iterations on macosx + iterations = Math.max(value / 4, 1); } else { - iterations = ITERATIONS; + iterations = value; } int maxThreads = Math.clamp(Runtime.getRuntime().availableProcessors() / 2, 1, 4); @@ -55,8 +61,18 @@ System.out.format("%s %d thread(s) ...%n", Instant.now(), nthreads); ThreadFactory factory = Thread.ofPlatform().factory(); try (var executor = Executors.newThreadPerTaskExecutor(factory)) { + var totalIterations = new AtomicInteger(); for (int i = 0; i < nthreads; i++) { - executor.submit(() -> parkALot(iterations)); + executor.submit(() -> parkALot(iterations, totalIterations::incrementAndGet)); + } + + // shutdown, await for all threads to finish with progress output + executor.shutdown(); + boolean terminated = false; + while (!terminated) { + terminated = executor.awaitTermination(1, TimeUnit.SECONDS); + System.out.format("%s => %d of %d%n", + Instant.now(), totalIterations.get(), iterations * nthreads); } } System.out.format("%s %d thread(s) done%n", Instant.now(), nthreads); @@ -66,8 +82,10 @@ /** * Creates a virtual thread that alternates between untimed and timed parking. * A platform thread spins unparking the virtual thread. + * @param iterations number of iterations + * @param afterIteration the task to run after each iteration */ - private static void parkALot(int iterations) { + private static void parkALot(int iterations, Runnable afterIteration) { Thread vthread = Thread.ofVirtual().start(() -> { int i = 0; boolean timed = false; @@ -80,6 +98,7 @@ timed = true; } i++; + afterIteration.run(); } }); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/lang/Thread/virtual/stress/SleepALot.java openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/SleepALot.java --- openjdk-21-21.0.9+10/test/jdk/java/lang/Thread/virtual/stress/SleepALot.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/lang/Thread/virtual/stress/SleepALot.java 2026-01-15 15:34:19.000000000 +0000 @@ -25,7 +25,7 @@ * @test * @summary Stress test Thread.sleep * @requires vm.debug != true & vm.continuations - * @run main/othervm SleepALot 500000 + * @run main SleepALot 500000 */ /* diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/CookieStoreTest.java openjdk-21-21.0.10+7/test/jdk/java/net/CookieStoreTest.java --- openjdk-21-21.0.9+10/test/jdk/java/net/CookieStoreTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/CookieStoreTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.net.CookieManager; +import java.net.CookieStore; +import java.net.HttpCookie; +import java.net.URI; +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; + +/* + * @test + * @bug 8365086 + * @summary verify that the implementation of java.net.CookieStore works + * as expected + * @run junit CookieStoreTest + */ +class CookieStoreTest { + + // neither the scheme, host nor the port matters in this test + private static final URI COOKIE_TEST_URI = URI.create("https://127.0.0.1:12345"); + + static List cookieStores() { + final List params = new ArrayList<>(); + // empty CookieStore + params.add(Arguments.of(new CookieManager().getCookieStore(), true)); + + final CookieStore cookieStore = new CookieManager().getCookieStore(); + cookieStore.add(COOKIE_TEST_URI, new HttpCookie("foo", "bar")); + // non-empty CookieStore + params.add(Arguments.of(cookieStore, false)); + + return params; + } + + /* + * Verify that the List returned by CookieStore.getURIs() is immutable. + */ + @ParameterizedTest + @MethodSource("cookieStores") + void testImmutableGetURIs(final CookieStore cookieStore, final boolean expectEmpty) { + final List uris = cookieStore.getURIs(); + assertNotNull(uris, "CookieStore.getURIs() returned null"); + assertEquals(expectEmpty, uris.isEmpty(), "CookieStore.getURIs() returned: " + uris); + assertImmutableList(uris, COOKIE_TEST_URI); + } + + /* + * Verify that the List returned by CookieStore.getCookies() is immutable. + */ + @ParameterizedTest + @MethodSource("cookieStores") + void testImmutableGetCookies(final CookieStore cookieStore, final boolean expectEmpty) { + final List cookies = cookieStore.getCookies(); + assertNotNull(cookies, "CookieStore.getCookies() returned null"); + assertEquals(expectEmpty, cookies.isEmpty(), "CookieStore.getCookies() returned: " + cookies); + assertImmutableList(cookies, new HttpCookie("hello", "world")); + } + + /* + * Verify that the List returned by CookieStore.get(URI) is immutable. + */ + @ParameterizedTest + @MethodSource("cookieStores") + void testImmutableGetCookiesForURI(final CookieStore cookieStore, final boolean expectEmpty) { + final List cookies = cookieStore.get(COOKIE_TEST_URI); + assertNotNull(cookies, "CookieStore.get(URI) returned null"); + assertEquals(expectEmpty, cookies.isEmpty(), "CookieStore.get(URI) returned: " + cookies); + assertImmutableList(cookies, new HttpCookie("hello", "world")); + } + + /* + * Verifies that the attempt to modify the contents of the list will fail + * due to the list being immutable. + */ + private static void assertImmutableList(final List list, T elementToAddOrRemove) { + // the list is expected to be immutable, so each of these operations must fail + assertThrows(UnsupportedOperationException.class, () -> list.add(elementToAddOrRemove)); + assertThrows(UnsupportedOperationException.class, () -> list.remove(elementToAddOrRemove)); + assertThrows(UnsupportedOperationException.class, list::clear); + // even try the replace operation when the list isn't empty + if (!list.isEmpty()) { + assertThrows(UnsupportedOperationException.class, () -> list.set(0, elementToAddOrRemove)); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/InetAddress/ptr/Lookup.java openjdk-21-21.0.10+7/test/jdk/java/net/InetAddress/ptr/Lookup.java --- openjdk-21-21.0.9+10/test/jdk/java/net/InetAddress/ptr/Lookup.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/InetAddress/ptr/Lookup.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,7 @@ import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; +import jtreg.SkippedException; public class Lookup { private static final String HOST = "icann.org"; @@ -91,8 +92,7 @@ String tmp = lookupWithIPv4Prefer(); System.out.println("IPv4 lookup results: [" + tmp + "]"); if (SKIP.equals(tmp)) { - System.out.println(HOST + " can't be resolved - test skipped."); - return; + throw new SkippedException(HOST + " can't be resolved - test skipped."); } String[] strs = tmp.split(":"); @@ -104,8 +104,7 @@ tmp = reverseWithIPv4Prefer(addr); System.out.println("IPv4 reverse lookup results: [" + tmp + "]"); if (SKIP.equals(tmp)) { - System.out.println(addr + " can't be resolved with preferIPv4 - test skipped."); - return; + throw new SkippedException(addr + " can't be resolved with preferIPv4 - test skipped."); } strs = tmp.split(":"); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/NetworkInterface/IPv4Only.java openjdk-21-21.0.10+7/test/jdk/java/net/NetworkInterface/IPv4Only.java --- openjdk-21-21.0.9+10/test/jdk/java/net/NetworkInterface/IPv4Only.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/NetworkInterface/IPv4Only.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,12 +29,18 @@ */ -import java.net.*; -import java.util.*; + import jdk.test.lib.net.IPSupport; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; + public class IPv4Only { public static void main(String[] args) throws Exception { + IPSupport.printPlatformSupport(System.out); if (IPSupport.hasIPv4()) { System.out.println("Testing IPv4"); Enumeration nifs = NetworkInterface.getNetworkInterfaces(); @@ -43,7 +49,7 @@ Enumeration addrs = nif.getInetAddresses(); while (addrs.hasMoreElements()) { InetAddress hostAddr = addrs.nextElement(); - if ( hostAddr instanceof Inet6Address ){ + if (hostAddr instanceof Inet6Address){ throw new RuntimeException( "NetworkInterfaceV6List failed - found v6 address " + hostAddr.getHostAddress() ); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/Socket/DeadlockTest.java openjdk-21-21.0.10+7/test/jdk/java/net/Socket/DeadlockTest.java --- openjdk-21-21.0.9+10/test/jdk/java/net/Socket/DeadlockTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/Socket/DeadlockTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,12 +31,19 @@ * @run main/othervm -Djava.net.preferIPv4Stack=true DeadlockTest */ -import java.net.*; -import java.io.*; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutput; +import java.io.ObjectOutputStream; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.ServerSocket; +import java.net.Socket; + import jdk.test.lib.net.IPSupport; public class DeadlockTest { - public static void main(String [] argv) throws Exception { + public static void main(String[] argv) throws Exception { IPSupport.throwSkippedExceptionIfNonOperational(); ServerSocket ss = new ServerSocket(0, 0, InetAddress.getLoopbackAddress()); @@ -52,16 +59,9 @@ Thread c1 = new Thread(ct); c1.start(); - // Wait for the client thread to finish - c1.join(20000); - - // If timeout, we assume there is a deadlock - if (c1.isAlive() == true) { - // Close the socket to force the server thread - // terminate too - s1.stop(); - throw new Exception("Takes too long. Dead lock"); - } + // Wait for the client thread to finish. + // If it doesn't finish then it's a sign of a deadlock + c1.join(); } finally { ss.close(); clientSocket.close(); @@ -73,7 +73,7 @@ private static boolean dbg = false; - ObjectInputStream in; + ObjectInputStream in; ObjectOutputStream out; ServerSocket server; diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/URI/Test.java openjdk-21-21.0.10+7/test/jdk/java/net/URI/Test.java --- openjdk-21-21.0.9+10/test/jdk/java/net/URI/Test.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/URI/Test.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ /* @test * @summary Unit test for java.net.URI * @bug 4464135 4505046 4503239 4438319 4991359 4866303 7023363 7041800 - * 7171415 6339649 6933879 8037396 8272072 8051627 8297687 + * 7171415 6339649 6933879 8037396 8272072 8051627 8297687 8353013 * @author Mark Reinhold */ @@ -1620,6 +1620,7 @@ b8051627(); b8272072(); b8297687(); + b8353013(); } private static void b8297687() { @@ -1786,6 +1787,39 @@ } } + // 8353013 - Increase test coverage for cases where the authority component of a hierarchical + // URI has a host component that starts with a number. + private static void b8353013() { + testCreate("https://0.0.0.1").s("https").h("0.0.0.1").p("").z(); + testCreate("https://00.0.0.2").s("https").h("00.0.0.2").p("").z(); + testCreate("https://000.0.0.3").s("https").h("000.0.0.3").p("").z(); + testCreate("https://0000.0.0.4").s("https").h("0000.0.0.4").p("").z(); + + testCreate("https://00000.0.0.5").s("https").h("00000.0.0.5").p("").z(); + testCreate("https://00001.0.0.6").s("https").h("00001.0.0.6").p("").z(); + + testCreate("https://01.0.0.1").s("https").h("01.0.0.1").p("").z(); + + testCreate("https://111111.2.3.com").s("https").h("111111.2.3.com").p("").z(); + + testCreate("https://1.example.com").s("https").h("1.example.com").p("").z(); + testCreate("https://12.example.com").s("https").h("12.example.com").p("").z(); + testCreate("https://123.example.com").s("https").h("123.example.com").p("").z(); + testCreate("https://1234.example.com").s("https").h("1234.example.com").p("").z(); + testCreate("https://12345.example.com").s("https").h("12345.example.com").p("").z(); + + testCreate("https://98765432101.example.com").s("https").h("98765432101.example.com").p("").z(); + testCreate("https://98765432101.www.example.com/").s("https").h("98765432101.www.example.com").p("/").z(); + testCreate("https://98765432101.www.example.com").s("https").h("98765432101.www.example.com").p("").z(); + + testCreate("https://9223372036854775808.example.com").s("https").h("9223372036854775808.example.com").p("").z(); + testCreate("https://9223372036854775808.www.example.com").s("https").h("9223372036854775808.www.example.com").p("").z(); + testCreate("https://9223372036854775808.xyz.abc.com").s("https").h("9223372036854775808.xyz.abc.com").p("").z(); + testCreate("https://9223372036854775808.xyz.abc.pqr.com").s("https").h("9223372036854775808.xyz.abc.pqr.com").p("").z(); + + testCreate("https://256.example.com").s("https").h("256.example.com").p("").z(); + } + public static void main(String[] args) throws Exception { switch (args.length) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/httpclient/CancelRequestTest.java openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/CancelRequestTest.java --- openjdk-21-21.0.9+10/test/jdk/java/net/httpclient/CancelRequestTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/CancelRequestTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -273,8 +273,12 @@ // rewrap in "Request Cancelled" when the multi exchange was aborted... private static boolean isCancelled(Throwable t) { while (t instanceof ExecutionException) t = t.getCause(); - if (t instanceof CancellationException) return true; - if (t instanceof IOException) return String.valueOf(t).contains("Request cancelled"); + Throwable cause = t; + while (cause != null) { + if (cause instanceof CancellationException) return true; + if (cause instanceof IOException && String.valueOf(cause).contains("Request cancelled")) return true; + cause = cause.getCause(); + } out.println("Not a cancellation exception: " + t); t.printStackTrace(out); return false; diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/httpclient/HttpsTunnelAuthTest.java openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/HttpsTunnelAuthTest.java --- openjdk-21-21.0.9+10/test/jdk/java/net/httpclient/HttpsTunnelAuthTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/HttpsTunnelAuthTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -37,12 +37,11 @@ import java.util.stream.Stream; import javax.net.ssl.SSLContext; import jdk.httpclient.test.lib.common.HttpServerAdapters; -import jdk.httpclient.test.lib.http2.Http2TestServer; import jdk.test.lib.net.SimpleSSLContext; import static java.lang.System.out; -/** +/* * @test * @bug 8262027 * @summary Verify that it's possible to handle proxy authentication manually @@ -62,7 +61,7 @@ //-Djdk.internal.httpclient.debug=true -Dtest.debug=true public class HttpsTunnelAuthTest implements HttpServerAdapters, AutoCloseable { - static final String data[] = { + static final String[] data = { "Lorem ipsum", "dolor sit amet", "consectetur adipiscing elit, sed do eiusmod tempor", @@ -150,7 +149,7 @@ @Override public void close() throws Exception { - if (proxy != null) close(proxy::stop); + if (proxy != null) close(proxy); if (http1Server != null) close(http1Server::stop); if (https1Server != null) close(https1Server::stop); if (https2Server != null) close(https2Server::stop); @@ -160,7 +159,8 @@ try { closeable.close(); } catch (Exception x) { - // OK. + // OK to ignore and just log + System.err.println("ignoring failure during close() of " + closeable + " due to: " + x); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/httpclient/ManyRequests.java openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/ManyRequests.java --- openjdk-21-21.0.9+10/test/jdk/java/net/httpclient/ManyRequests.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/ManyRequests.java 2026-01-15 15:34:19.000000000 +0000 @@ -24,6 +24,7 @@ /* * @test * @bug 8087112 8180044 8256459 + * @key intermittent * @modules java.net.http * java.logging * jdk.httpserver diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/httpclient/ProxyServer.java openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/ProxyServer.java --- openjdk-21-21.0.9+10/test/jdk/java/net/httpclient/ProxyServer.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/httpclient/ProxyServer.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,7 +42,7 @@ * Two threads are created per client connection. So, it's not * intended for large numbers of parallel connections. */ -public class ProxyServer extends Thread implements Closeable { +public final class ProxyServer implements Closeable { // could use the test library here - Platform.isWindows(), // but it would force all tests that use ProxyServer to @@ -99,9 +99,7 @@ this(port, debug, null); } - public ProxyServer(Integer port, - Boolean debug, - Credentials credentials) + private ProxyServer(Integer port, Boolean debug, Credentials credentials) throws IOException { this.debug = debug; @@ -110,15 +108,8 @@ listener.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), port)); this.port = ((InetSocketAddress)listener.getLocalAddress()).getPort(); this.credentials = credentials; - setName("ProxyListener"); - setDaemon(true); - connections = new CopyOnWriteArrayList(); - start(); - } - - public ProxyServer(String s) { - credentials = null; connections = new CopyOnWriteArrayList(); + Thread.ofPlatform().name("ProxyListener").daemon().start(this::run); } /** @@ -150,7 +141,7 @@ volatile boolean done; - public void run() { + private void run() { if (System.getSecurityManager() == null) { execute(); } else { @@ -195,6 +186,9 @@ volatile InputStream clientIn, serverIn; volatile OutputStream clientOut, serverOut; + boolean proxyInClosed; // only accessed from synchronized block + boolean proxyOutClosed; // only accessed from synchronized block + final static int CR = 13; final static int LF = 10; @@ -594,9 +588,7 @@ if (log) System.out.printf("Proxy Forwarding [request body]: total %d%n", body); } - closing = true; - serverSocket.close(); - clientSocket.close(); + closeClientIn(); } catch (IOException e) { if (!closing && debug) { System.out.println("Proxy: " + e); @@ -615,9 +607,7 @@ if (log) System.out.printf("Proxy Forwarding [response]: %s%n", new String(bb, 0, n, UTF_8)); if (log) System.out.printf("Proxy Forwarding [response]: total %d%n", resp); } - closing = true; - serverSocket.close(); - clientSocket.close(); + closeClientOut(); } catch (IOException e) { if (!closing && debug) { System.out.println("Proxy: " + e); @@ -641,6 +631,28 @@ proxyCommon(false); } + synchronized void closeClientIn() throws IOException { + closing = true; + proxyInClosed = true; + clientSocket.shutdownInput(); + serverSocket.shutdownOutput(); + if (proxyOutClosed) { + serverSocket.close(); + clientSocket.close(); + } + } + + synchronized void closeClientOut() throws IOException { + closing = true; + proxyOutClosed = true; + serverSocket.shutdownInput(); + clientSocket.shutdownOutput(); + if (proxyInClosed) { + serverSocket.close(); + clientSocket.close(); + } + } + @Override public String toString() { return "Proxy connection " + id + ", client sock:" + clientSocket; @@ -651,10 +663,11 @@ int port = Integer.parseInt(args[0]); boolean debug = args.length > 1 && args[1].equals("-debug"); System.out.println("Debugging : " + debug); - ProxyServer ps = new ProxyServer(port, debug); - System.out.println("Proxy server listening on port " + ps.getPort()); - while (true) { - Thread.sleep(5000); + try (ProxyServer ps = new ProxyServer(port, debug)) { + System.out.println("Proxy server listening on port " + ps.getPort()); + while (true) { + Thread.sleep(5000); + } } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/net/vthread/HttpALot.java openjdk-21-21.0.10+7/test/jdk/java/net/vthread/HttpALot.java --- openjdk-21-21.0.9+10/test/jdk/java/net/vthread/HttpALot.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/net/vthread/HttpALot.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -21,7 +21,7 @@ * questions. */ -/** +/* * @test * @bug 8284161 * @summary Stress test the HTTP protocol handler and HTTP server @@ -44,6 +44,7 @@ import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; @@ -52,6 +53,8 @@ public class HttpALot { + private static final String HELLO = "Hello"; + public static void main(String[] args) throws Exception { int requests = 25_000; if (args.length > 0) { @@ -65,12 +68,20 @@ InetAddress lb = InetAddress.getLoopbackAddress(); HttpServer server = HttpServer.create(new InetSocketAddress(lb, 0), 1024); ThreadFactory factory = Thread.ofVirtual().factory(); - server.setExecutor(Executors.newThreadPerTaskExecutor(factory)); + final ExecutorService serverExecutor = Executors.newThreadPerTaskExecutor(factory); + server.setExecutor(serverExecutor); server.createContext("/hello", e -> { - byte[] response = "Hello".getBytes("UTF-8"); - e.sendResponseHeaders(200, response.length); - try (OutputStream out = e.getResponseBody()) { - out.write(response); + try { + byte[] response = HELLO.getBytes("UTF-8"); + e.sendResponseHeaders(200, response.length); + try (OutputStream out = e.getResponseBody()) { + out.write(response); + } + } catch (Throwable t) { + System.err.println("failed to handle request " + e.getRequestURI() + + " due to: " + t); + t.printStackTrace(); + throw t; // let it propagate } requestsHandled.incrementAndGet(); }); @@ -85,15 +96,21 @@ // go server.start(); - try { - factory = Thread.ofVirtual().name("fetcher-", 0).factory(); - try (var executor = Executors.newThreadPerTaskExecutor(factory)) { - for (int i = 1; i <= requests; i++) { - executor.submit(() -> fetch(url)).get(); + try (serverExecutor) { + try { + factory = Thread.ofVirtual().name("fetcher-", 0).factory(); + try (var executor = Executors.newThreadPerTaskExecutor(factory)) { + for (int i = 1; i <= requests; i++) { + final String actual = executor.submit(() -> fetch(url)).get(); + if (!HELLO.equals(actual)) { + throw new RuntimeException("unexpected response: \"" + actual + + "\" for request " + i); + } + } } + } finally { + server.stop(1); } - } finally { - server.stop(1); } if (requestsHandled.get() < requests) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/channels/DatagramChannel/StressNativeSignal.java openjdk-21-21.0.10+7/test/jdk/java/nio/channels/DatagramChannel/StressNativeSignal.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/channels/DatagramChannel/StressNativeSignal.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/channels/DatagramChannel/StressNativeSignal.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,42 +36,23 @@ import java.util.concurrent.CountDownLatch; public class StressNativeSignal { - private UDPThread udpThread; - private ServerSocketThread serverSocketThread; + private final UDPThread udpThread; + private final ServerSocketThread serverSocketThread; - StressNativeSignal() { + StressNativeSignal() throws IOException { serverSocketThread = initServerSocketThread(); - if (serverSocketThread != null) { - serverSocketThread.start(); - } + serverSocketThread.start(); udpThread = initUDPThread(); - if (udpThread != null) { - udpThread.start(); - } + udpThread.start(); } - private UDPThread initUDPThread() { - UDPThread aUDPThread = null; - try { - aUDPThread = new UDPThread(); - } catch (Exception z) { - System.err.println("failed to create and start a UDPThread"); - z.printStackTrace(); - } - return aUDPThread; + private UDPThread initUDPThread() throws IOException { + return new UDPThread(); } - private ServerSocketThread initServerSocketThread() { - ServerSocketThread aServerSocketThread = null; - try { - aServerSocketThread = new ServerSocketThread(); - - } catch (Exception z) { - System.err.println("failed to create and start a ServerSocketThread"); - z.printStackTrace(); - } - return aServerSocketThread; + private ServerSocketThread initServerSocketThread() throws IOException { + return new ServerSocketThread(); } public static void main(String[] args) throws Throwable { @@ -80,46 +61,39 @@ test.shutdown(); } - public void shutdown() { - if ((udpThread != null) && udpThread.isAlive()) { + public void shutdown() throws InterruptedException, IOException { + if (udpThread != null && udpThread.isAlive()) { udpThread.terminate(); - try { - udpThread.join(); - } catch (Exception z) { - z.printStackTrace(System.err); - } + udpThread.join(); + } else { System.out.println("UDPThread test scenario was not run"); } - if ((serverSocketThread != null) && (serverSocketThread.isAlive())) { + if (serverSocketThread != null && serverSocketThread.isAlive()) { serverSocketThread.terminate(); - try { - serverSocketThread.join(); - } catch (Exception z) { - z.printStackTrace(System.err); - } + serverSocketThread.join(); } else { System.out.println("ServerSocketThread test scenario was not run"); } } - public void waitForTestThreadsToStart() { - if ((udpThread != null) && udpThread.isAlive()) { + public void waitForTestThreadsToStart() throws InterruptedException { + if (udpThread != null && udpThread.isAlive()) { udpThread.waitTestThreadStart(); } - if ((serverSocketThread != null) && (serverSocketThread.isAlive())) { + if (serverSocketThread != null && serverSocketThread.isAlive()) { serverSocketThread.waitTestThreadStart(); } } public class ServerSocketThread extends Thread { private volatile boolean shouldTerminate; - private ServerSocket socket; + private final ServerSocket socket; private final CountDownLatch threadStarted = new CountDownLatch(1); - public ServerSocketThread () throws Exception { - socket = new ServerSocket(1122); + public ServerSocketThread() throws IOException { + socket = new ServerSocket(0); } public void run() { @@ -129,7 +103,7 @@ Socket client = socket.accept(); client.close(); throw new RuntimeException("Unexpected return from accept call"); - } catch (Exception z) { + } catch (IOException z) { System.err.println("ServerSocketThread: caught exception " + z.getClass().getName()); if (!shouldTerminate) { z.printStackTrace(System.err); @@ -141,7 +115,7 @@ shouldTerminate = true; try { socket.close(); - } catch (Exception z) { + } catch (IOException z) { z.printStackTrace(System.err); // ignore } @@ -150,7 +124,7 @@ public void waitTestThreadStart() { try { threadStarted.await(); - } catch (Exception z) { + } catch (InterruptedException z) { z.printStackTrace(System.err); // ignore } @@ -158,15 +132,14 @@ } public class UDPThread extends Thread { - private DatagramChannel channel; + private final DatagramChannel channel; private volatile boolean shouldTerminate; private final CountDownLatch threadStarted = new CountDownLatch(1); - public UDPThread () throws Exception { - + public UDPThread() throws IOException { channel = DatagramChannel.open(); channel.setOption(StandardSocketOptions.SO_RCVBUF, 6553600); - channel.bind(new InetSocketAddress(19870)); + channel.bind(new InetSocketAddress(0)); } @Override @@ -191,7 +164,7 @@ shouldTerminate = true; try { channel.close(); - } catch (Exception z) { + } catch (IOException z) { System.err.println("UDPThread: caught exception " + z.getClass().getName()); z.printStackTrace(System.err); // ignore @@ -201,7 +174,7 @@ public void waitTestThreadStart() { try { threadStarted.await(); - } catch (Exception z) { + } catch (InterruptedException z) { z.printStackTrace(System.err); // ignore } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/channels/FileChannel/directio/DirectIOTest.java openjdk-21-21.0.10+7/test/jdk/java/nio/channels/FileChannel/directio/DirectIOTest.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/channels/FileChannel/directio/DirectIOTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/channels/FileChannel/directio/DirectIOTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -27,11 +27,13 @@ * @summary Test for ExtendedOpenOption.DIRECT flag * @requires (os.family == "linux" | os.family == "aix") * @library /test/lib + * @modules java.base/sun.nio.ch:+open java.base/java.io:+open * @build jdk.test.lib.Platform * @run main/native DirectIOTest */ import java.io.*; +import java.lang.reflect.Field; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.*; @@ -47,10 +49,25 @@ public class DirectIOTest { private static final int BASE_SIZE = 4096; + private static final int TRIES = 3; + + public static int getFD(FileChannel channel) throws Exception { + Field fFdFd = channel.getClass().getDeclaredField("fd"); + fFdFd.setAccessible(true); + FileDescriptor fd = (FileDescriptor) fFdFd.get(channel); + + Field fFd = FileDescriptor.class.getDeclaredField("fd"); + fFd.setAccessible(true); + return fFd.getInt(fd); + } + + private static void testWrite(Path p, long blockSize) throws Exception { + try (FileChannel fc = FileChannel.open(p, + StandardOpenOption.READ, + StandardOpenOption.WRITE, + ExtendedOpenOption.DIRECT)) { + int fd = getFD(fc); - private static int testWrite(Path p, long blockSize) throws Exception { - try (FileChannel fc = FileChannel.open(p, StandardOpenOption.WRITE, - ExtendedOpenOption.DIRECT)) { int bs = (int)blockSize; int size = Math.max(BASE_SIZE, bs); int alignment = bs; @@ -60,22 +77,55 @@ for (int j = 0; j < size; j++) { src.put((byte)0); } - src.flip(); - fc.write(src); - return size; + + // If there is AV or other FS tracing software, it may cache the file + // contents on first access, even though we have asked for DIRECT here. + // Do several attempts to make test more resilient. + + for (int t = 0; t < TRIES; t++) { + flushFileCache(size, fd); + src.flip(); + fc.position(0); + fc.write(src); + if (!isFileInCache(size, fd)) { + return; + } + } + + throw new RuntimeException("DirectIO is not working properly with " + + "write. File still exists in cache!"); } } - private static int testRead(Path p, long blockSize) throws Exception { - try (FileChannel fc = FileChannel.open(p, ExtendedOpenOption.DIRECT)) { + private static void testRead(Path p, long blockSize) throws Exception { + try (FileChannel fc = FileChannel.open(p, + StandardOpenOption.READ, + ExtendedOpenOption.DIRECT)) { + int fd = getFD(fc); + int bs = (int)blockSize; int size = Math.max(BASE_SIZE, bs); int alignment = bs; ByteBuffer dest = ByteBuffer.allocateDirect(size + alignment - 1) .alignedSlice(alignment); assert dest.capacity() != 0; - fc.read(dest); - return size; + + // If there is AV or other FS tracing software, it may cache the file + // contents on first access, even though we have asked for DIRECT here. + // Do several attempts to make test more resilient. + + for (int t = 0; t < TRIES; t++) { + flushFileCache(size, fd); + dest.clear(); + fc.position(0); + fc.read(dest); + if (!isFileInCache(size, fd)) { + return; + } + } + + throw new RuntimeException("DirectIO is not working properly with " + + "read. File still exists in cache!"); } } @@ -84,12 +134,8 @@ Paths.get(System.getProperty("test.dir", ".")), "test", null); } - private static boolean isFileInCache(int size, Path p) { - String path = p.toString(); - return isFileInCache0(size, path); - } - - private static native boolean isFileInCache0(int size, String path); + private static native boolean flushFileCache(int size, int fd); + private static native boolean isFileInCache(int size, int fd); public static void main(String[] args) throws Exception { Path p = createTempFile(); @@ -98,16 +144,8 @@ System.loadLibrary("DirectIO"); try { - int size = testWrite(p, blockSize); - if (isFileInCache(size, p)) { - throw new RuntimeException("DirectIO is not working properly with " - + "write. File still exists in cache!"); - } - size = testRead(p, blockSize); - if (isFileInCache(size, p)) { - throw new RuntimeException("DirectIO is not working properly with " - + "read. File still exists in cache!"); - } + testWrite(p, blockSize); + testRead(p, blockSize); } finally { Files.delete(p); } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/channels/FileChannel/directio/libDirectIO.c openjdk-21-21.0.10+7/test/jdk/java/nio/channels/FileChannel/directio/libDirectIO.c --- openjdk-21-21.0.9+10/test/jdk/java/nio/channels/FileChannel/directio/libDirectIO.c 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/channels/FileChannel/directio/libDirectIO.c 2026-01-15 15:34:19.000000000 +0000 @@ -45,13 +45,27 @@ /* * Class: DirectIO - * Method: isFileInCache0 - * Signature: (ILjava/lang/String;)Z + * Method: flushFileCache + * Signature: (II;)V */ -JNIEXPORT jboolean Java_DirectIOTest_isFileInCache0(JNIEnv *env, +JNIEXPORT void Java_DirectIOTest_flushFileCache(JNIEnv *env, jclass cls, jint file_size, - jstring file_path) { + jint fd) { +#ifdef __linux__ + posix_fadvise(fd, 0, file_size, POSIX_FADV_DONTNEED); +#endif +} + +/* + * Class: DirectIO + * Method: isFileInCache + * Signature: (II;)Z + */ +JNIEXPORT jboolean Java_DirectIOTest_isFileInCache(JNIEnv *env, + jclass cls, + jint file_size, + jint fd) { void *f_mmap; #ifdef __linux__ unsigned char *f_seg; @@ -69,17 +83,10 @@ size_t index = (file_size + page_size - 1) /page_size; jboolean result = JNI_FALSE; - const char* path = (*env)->GetStringUTFChars(env, file_path, JNI_FALSE); - - int fd = open(path, O_RDWR); - - (*env)->ReleaseStringUTFChars(env, file_path, path); - f_mmap = mmap(0, file_size, PROT_NONE, MAP_SHARED, fd, 0); if (f_mmap == MAP_FAILED) { - close(fd); ThrowException(env, "java/io/IOException", - "test of whether file exists in cache failed"); + "test of whether file exists in cache failed: mmap failed"); } f_seg = malloc(index); if (f_seg != NULL) { @@ -95,9 +102,8 @@ free(f_seg); } else { ThrowException(env, "java/io/IOException", - "test of whether file exists in cache failed"); + "test of whether file exists in cache failed: malloc failed"); } - close(fd); munmap(f_mmap, file_size); return result; } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/channels/SocketChannel/PeerReadsAfterAsyncClose.java openjdk-21-21.0.10+7/test/jdk/java/nio/channels/SocketChannel/PeerReadsAfterAsyncClose.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/channels/SocketChannel/PeerReadsAfterAsyncClose.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/channels/SocketChannel/PeerReadsAfterAsyncClose.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8358764 + * @summary Test closing a socket while a thread is blocked in read. The connection + * should be closed gracefuly so that the peer reads EOF. + * @run junit PeerReadsAfterAsyncClose + */ + +import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketException; +import java.nio.ByteBuffer; +import java.nio.channels.ClosedChannelException; +import java.nio.channels.SocketChannel; +import java.util.Arrays; +import java.util.Objects; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Stream; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import static org.junit.jupiter.api.Assertions.*; + +class PeerReadsAfterAsyncClose { + + static Stream factories() { + return Stream.of(Thread.ofPlatform().factory(), Thread.ofVirtual().factory()); + } + + /** + * Close SocketChannel while a thread is blocked reading from the channel's socket. + */ + @ParameterizedTest + @MethodSource("factories") + void testCloseDuringSocketChannelRead(ThreadFactory factory) throws Exception { + var loopback = InetAddress.getLoopbackAddress(); + try (var listener = new ServerSocket()) { + listener.bind(new InetSocketAddress(loopback, 0)); + + try (SocketChannel sc = SocketChannel.open(listener.getLocalSocketAddress()); + Socket peer = listener.accept()) { + + // start thread to read from channel + var cceThrown = new AtomicBoolean(); + Thread thread = factory.newThread(() -> { + try { + sc.read(ByteBuffer.allocate(1)); + fail(); + } catch (ClosedChannelException e) { + cceThrown.set(true); + } catch (Throwable e) { + e.printStackTrace(); + } + }); + thread.start(); + try { + // close SocketChannel when thread sampled in read() + onReach(thread, "sun.nio.ch.SocketChannelImpl.read", () -> { + try { + sc.close(); + } catch (IOException ignore) { } + }); + + // peer should read EOF + int n = peer.getInputStream().read(); + assertEquals(-1, n); + } finally { + thread.join(); + } + assertEquals(true, cceThrown.get(), "ClosedChannelException not thrown"); + } + } + } + + /** + * Close Socket while a thread is blocked reading from the socket. + */ + @ParameterizedTest + @MethodSource("factories") + void testCloseDuringSocketUntimedRead(ThreadFactory factory) throws Exception { + testCloseDuringSocketRead(factory, 0); + } + + /** + * Close Socket while a thread is blocked reading from the socket with a timeout. + */ + @ParameterizedTest + @MethodSource("factories") + void testCloseDuringSockeTimedRead(ThreadFactory factory) throws Exception { + testCloseDuringSocketRead(factory, 60_000); + } + + private void testCloseDuringSocketRead(ThreadFactory factory, int timeout) throws Exception { + var loopback = InetAddress.getLoopbackAddress(); + try (var listener = new ServerSocket()) { + listener.bind(new InetSocketAddress(loopback, 0)); + + try (Socket s = new Socket(loopback, listener.getLocalPort()); + Socket peer = listener.accept()) { + + // start thread to read from socket + var seThrown = new AtomicBoolean(); + Thread thread = factory.newThread(() -> { + try { + s.setSoTimeout(timeout); + s.getInputStream().read(); + fail(); + } catch (SocketException e) { + seThrown.set(true); + } catch (Throwable e) { + e.printStackTrace(); + } + }); + thread.start(); + try { + // close Socket when thread sampled in implRead + onReach(thread, "sun.nio.ch.NioSocketImpl.implRead", () -> { + try { + s.close(); + } catch (IOException ignore) { } + }); + + // peer should read EOF + int n = peer.getInputStream().read(); + assertEquals(-1, n); + } finally { + thread.join(); + } + assertEquals(true, seThrown.get(), "SocketException not thrown"); + } + } + } + + /** + * Runs the given action when the given target thread is sampled at the given + * location. The location takes the form "{@code c.m}" where + * {@code c} is the fully qualified class name and {@code m} is the method name. + */ + private void onReach(Thread target, String location, Runnable action) { + int index = location.lastIndexOf('.'); + String className = location.substring(0, index); + String methodName = location.substring(index + 1); + Thread.ofPlatform().daemon(true).start(() -> { + try { + boolean found = false; + while (!found) { + found = contains(target.getStackTrace(), className, methodName); + if (!found) { + Thread.sleep(20); + } + } + action.run(); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + + /** + * Returns true if the given stack trace contains an element for the given class + * and method name. + */ + private boolean contains(StackTraceElement[] stack, String className, String methodName) { + return Arrays.stream(stack) + .anyMatch(e -> className.equals(e.getClassName()) + && methodName.equals(e.getMethodName())); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/AvailableCharsetNames.java openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/AvailableCharsetNames.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/AvailableCharsetNames.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/AvailableCharsetNames.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,27 +25,26 @@ * @bug 4422044 * @summary Ensure that keys in available-charset map * are identical to canonical names + * @run junit AvailableCharsetNames */ -import java.io.*; -import java.nio.*; -import java.nio.charset.*; -import java.util.*; +import java.nio.charset.Charset; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; public class AvailableCharsetNames { - public static void main(String[] args) throws Exception { - Iterator charsetIterator = Charset.availableCharsets().keySet().iterator(); - while (charsetIterator.hasNext()) { - String charsetName = (String) charsetIterator.next(); + /** + * Test that the keys in Charset.availableCharsets() + * are equal to the associated Charset.name() value. + */ + @Test + public void canonicalNamesTest() { + for (String charsetName : Charset.availableCharsets().keySet()) { Charset charset = Charset.forName(charsetName); - if (!charset.name().equals(charsetName)) { - throw new Exception("Error: Charset name mismatch - expected " - + charsetName + ", got " + charset.name()); - } + assertEquals(charset.name(), charsetName, "Charset name mismatch"); } - } - } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/CharsetContainmentTest.java openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/CharsetContainmentTest.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/CharsetContainmentTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/CharsetContainmentTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,93 +25,116 @@ * @bug 4626545 4696726 * @summary Checks the inter containment relationships between NIO charsets * @modules jdk.charsets + * @run junit CharsetContainmentTest */ -import java.nio.charset.*; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import static org.junit.jupiter.api.Assertions.assertTrue; public class CharsetContainmentTest { - static String[] encodings = - { "US-ASCII", "UTF-16", "UTF-16BE", "UTF-16LE", "UTF-8", - "windows-1252", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", - "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", - "ISO-8859-8", "ISO-8859-9", "ISO-8859-13", "ISO-8859-15", "ISO-8859-16", - "ISO-2022-JP", "ISO-2022-KR", - - // Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder - // support is added (4673614) - // "x-ISO-2022-CN-CNS", "x-ISO-2022-CN-GB", - - "x-ISCII91", "GBK", "GB18030", "Big5", - "x-EUC-TW", "GB2312", "EUC-KR", "x-Johab", "Big5-HKSCS", - "x-MS950-HKSCS", "windows-1251", "windows-1253", "windows-1254", - "windows-1255", "windows-1256", "windows-1257", "windows-1258", - "x-mswin-936", "x-windows-949", "x-windows-950", "windows-31j", - "Shift_JIS", "EUC-JP", "KOI8-R", "TIS-620" - }; - - static String[][] contains = { - { "US-ASCII"}, - encodings, - encodings, - encodings, - encodings, - {"US-ASCII", "windows-1252"}, - {"US-ASCII", "ISO-8859-1"}, - {"US-ASCII", "ISO-8859-2"}, - {"US-ASCII", "ISO-8859-3"}, - {"US-ASCII", "ISO-8859-4"}, - {"US-ASCII", "ISO-8859-5"}, - {"US-ASCII", "ISO-8859-6"}, - {"US-ASCII", "ISO-8859-7"}, - {"US-ASCII", "ISO-8859-8"}, - {"US-ASCII", "ISO-8859-9"}, - {"US-ASCII", "ISO-8859-13"}, - {"US-ASCII", "ISO-8859-15"}, - {"US-ASCII", "ISO-8859-16"}, - {"ISO-2022-JP"}, - {"ISO-2022-KR"}, - // Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder - // support is added (4673614) - //{"x-ISO-2022-CN-CNS"}, - //{"x-ISO-2022-CN-GB"}, - {"US-ASCII", "x-ISCII91"}, - {"US-ASCII", "GBK"}, - encodings, - {"US-ASCII", "Big5"}, - {"US-ASCII", "x-EUC-TW"}, - {"US-ASCII", "GB2312"}, - {"US-ASCII", "EUC-KR"}, - {"US-ASCII", "x-Johab"}, - {"US-ASCII", "Big5-HKSCS", "Big5"}, - {"US-ASCII", "x-MS950-HKSCS", "x-windows-950"}, - {"US-ASCII", "windows-1251"}, - {"US-ASCII", "windows-1253"}, - {"US-ASCII", "windows-1254"}, - {"US-ASCII", "windows-1255"}, - {"US-ASCII", "windows-1256"}, - {"US-ASCII", "windows-1257"}, - {"US-ASCII", "windows-1258"}, - {"US-ASCII", "x-mswin-936"}, - {"US-ASCII", "x-windows-949"}, - {"US-ASCII", "x-windows-950"}, - {"US-ASCII", "windows-31j" }, - {"US-ASCII", "Shift_JIS"}, - {"US-ASCII", "EUC-JP"}, - {"US-ASCII", "KOI8-R"}, - {"US-ASCII", "TIS-620"}}; + /** + * Test that the charsets in 'encodings' contain the charsets + * inside 'contains'. Each value in 'encodings' is mapped to a String + * array in 'contains'. For example, the value, "TIS-620" in 'encodings' + * should contain "US-ASCII", "TIS-620". + */ + @ParameterizedTest + @MethodSource("charsets") + public void interContainmentTest(String containerName, String containedName) { + Charset container = Charset.forName(containerName); + Charset contained = Charset.forName(containedName); + assertTrue(container.contains(contained), + String.format("Charset: %s does not contain: %s", containerName, containedName)); + } - public static void main(String[] args) throws Exception { + private static Stream charsets() { + String[] encodings = { + "US-ASCII", "UTF-16", "UTF-16BE", "UTF-16LE", "UTF-8", + "windows-1252", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", + "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", + "ISO-8859-8", "ISO-8859-9", "ISO-8859-13", "ISO-8859-15", "ISO-8859-16", + "ISO-2022-JP", "ISO-2022-KR", + // Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder + // support is added (4673614) + // "x-ISO-2022-CN-CNS", "x-ISO-2022-CN-GB", + "x-ISCII91", "GBK", "GB18030", "Big5", + "x-EUC-TW", "GB2312", "EUC-KR", "x-Johab", "Big5-HKSCS", + "x-MS950-HKSCS", "windows-1251", "windows-1253", "windows-1254", + "windows-1255", "windows-1256", "windows-1257", "windows-1258", + "x-mswin-936", "x-windows-949", "x-windows-950", "windows-31j", + "Shift_JIS", "EUC-JP", "KOI8-R", "TIS-620" + }; + + String[][] contains = { + {"US-ASCII"}, + encodings, + encodings, + encodings, + encodings, + {"US-ASCII", "windows-1252"}, + {"US-ASCII", "ISO-8859-1"}, + {"US-ASCII", "ISO-8859-2"}, + {"US-ASCII", "ISO-8859-3"}, + {"US-ASCII", "ISO-8859-4"}, + {"US-ASCII", "ISO-8859-5"}, + {"US-ASCII", "ISO-8859-6"}, + {"US-ASCII", "ISO-8859-7"}, + {"US-ASCII", "ISO-8859-8"}, + {"US-ASCII", "ISO-8859-9"}, + {"US-ASCII", "ISO-8859-13"}, + {"US-ASCII", "ISO-8859-15"}, + {"US-ASCII", "ISO-8859-16"}, + {"ISO-2022-JP"}, + {"ISO-2022-KR"}, + // Temporarily remove ISO-2022-CN-* charsets until full encoder/decoder + // support is added (4673614) + //{"x-ISO-2022-CN-CNS"}, + //{"x-ISO-2022-CN-GB"}, + {"US-ASCII", "x-ISCII91"}, + {"US-ASCII", "GBK"}, + encodings, + {"US-ASCII", "Big5"}, + {"US-ASCII", "x-EUC-TW"}, + {"US-ASCII", "GB2312"}, + {"US-ASCII", "EUC-KR"}, + {"US-ASCII", "x-Johab"}, + {"US-ASCII", "Big5-HKSCS", "Big5"}, + {"US-ASCII", "x-MS950-HKSCS", "x-windows-950"}, + {"US-ASCII", "windows-1251"}, + {"US-ASCII", "windows-1253"}, + {"US-ASCII", "windows-1254"}, + {"US-ASCII", "windows-1255"}, + {"US-ASCII", "windows-1256"}, + {"US-ASCII", "windows-1257"}, + {"US-ASCII", "windows-1258"}, + {"US-ASCII", "x-mswin-936"}, + {"US-ASCII", "x-windows-949"}, + {"US-ASCII", "x-windows-950"}, + {"US-ASCII", "windows-31j"}, + {"US-ASCII", "Shift_JIS"}, + {"US-ASCII", "EUC-JP"}, + {"US-ASCII", "KOI8-R"}, + {"US-ASCII", "TIS-620"}}; + + // Length of encodings and contains should always be equal + if (encodings.length != contains.length) { + throw new RuntimeException("Testing data is not set up correctly"); + } + List charsetList = new ArrayList(); for (int i = 0; i < encodings.length; i++) { - Charset c = Charset.forName(encodings[i]); - for (int j = 0 ; j < contains[i].length; j++) { - if (c.contains(Charset.forName(contains[i][j]))) - continue; - else { - throw new Exception ("Error: charset " + encodings[i] + - "doesn't contain " + contains[i][j]); - } - } + for (int j = 0 ; j < contains[i].length; j++) { + charsetList.add(Arguments.of(encodings[i], contains[i][j])); + } } + return charsetList.stream(); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/Contains.java openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/Contains.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/Contains.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/Contains.java 2026-01-15 15:34:19.000000000 +0000 @@ -25,166 +25,186 @@ * @summary Unit test for charset containment * @bug 6798572 8167252 * @modules jdk.charsets + * @run junit Contains */ -import java.nio.charset.*; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.stream.Stream; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; public class Contains { - static void ck(Charset cs1, Charset cs2, boolean cont) throws Exception { - if ((cs1.contains(cs2)) != cont) - throw new Exception("Wrong answer: " - + cs1.name() + " contains " + cs2.name()); - System.err.println(cs1.name() - + (cont ? " contains " : " does not contain ") - + cs2.name()); + /** + * Tests the containment of some charsets against themselves. + * This test takes both true and false for 'cont'. + */ + @ParameterizedTest + @MethodSource("charsets") + public void charsetsTest(Charset containerCs, Charset cs, boolean cont){ + shouldContain(containerCs, cs, cont); } - public static void main(String[] args) throws Exception { - - Charset us_ascii = Charset.forName("US-ASCII"); - Charset iso_8859_1 = Charset.forName("ISO-8859-1"); - Charset iso_8859_15 = Charset.forName("ISO-8859-15"); - Charset utf_8 = Charset.forName("UTF-8"); - Charset utf_16be = Charset.forName("UTF-16BE"); - Charset cp1252 = Charset.forName("CP1252"); - - ck(us_ascii, us_ascii, true); - ck(us_ascii, iso_8859_1, false); - ck(us_ascii, iso_8859_15, false); - ck(us_ascii, utf_8, false); - ck(us_ascii, utf_16be, false); - ck(us_ascii, cp1252, false); - - ck(iso_8859_1, us_ascii, true); - ck(iso_8859_1, iso_8859_1, true); - ck(iso_8859_1, iso_8859_15, false); - ck(iso_8859_1, utf_8, false); - ck(iso_8859_1, utf_16be, false); - ck(iso_8859_1, cp1252, false); - - ck(iso_8859_15, us_ascii, true); - ck(iso_8859_15, iso_8859_1, false); - ck(iso_8859_15, iso_8859_15, true); - ck(iso_8859_15, utf_8, false); - ck(iso_8859_15, utf_16be, false); - ck(iso_8859_15, cp1252, false); - - ck(utf_8, us_ascii, true); - ck(utf_8, iso_8859_1, true); - ck(utf_8, iso_8859_15, true); - ck(utf_8, utf_8, true); - ck(utf_8, utf_16be, true); - ck(utf_8, cp1252, true); - - ck(utf_16be, us_ascii, true); - ck(utf_16be, iso_8859_1, true); - ck(utf_16be, iso_8859_15, true); - ck(utf_16be, utf_8, true); - ck(utf_16be, utf_16be, true); - ck(utf_16be, cp1252, true); - - ck(cp1252, us_ascii, true); - ck(cp1252, iso_8859_1, false); - ck(cp1252, iso_8859_15, false); - ck(cp1252, utf_8, false); - ck(cp1252, utf_16be, false); - ck(cp1252, cp1252, true); - - checkUTF(); - - containsSelfTest(); - } - - static void checkUTF() throws Exception { - for (String utfName : utfNames) - for (String csName : charsetNames) - ck(Charset.forName(utfName), - Charset.forName(csName), - true); + /** + * Tests UTF charsets with other charsets. In this case, each UTF charset + * should contain every single charset they are tested against. 'cont' is + * always true. + */ + @ParameterizedTest + @MethodSource("utfCharsets") + public void UTFCharsetsTest(Charset containerCs, Charset cs, boolean cont){ + shouldContain(containerCs, cs, cont); } /** * Tests the assertion in the contains() method: "Every charset contains itself." */ - static void containsSelfTest() { - boolean failed = false; - + @Test + public void containsSelfTest() { for (var entry : Charset.availableCharsets().entrySet()) { Charset charset = entry.getValue(); boolean contains = charset.contains(charset); - - System.out.println("Charset(" + charset.name() + ").contains(Charset(" + charset.name() - + ")) returns " + contains); - if (!contains) { - failed = true; - } - } - if (failed) { - throw new RuntimeException("Charset.contains(itself) returns false for some charsets"); + assertTrue(contains, String.format("Charset(%s).contains(Charset(%s)) returns %s", + charset.name(), charset.name(), contains)); } } - static String[] utfNames = {"utf-16", - "utf-8", - "utf-16le", - "utf-16be", - "x-utf-16le-bom"}; - - static String[] charsetNames = { - "US-ASCII", - "UTF-8", - "UTF-16", - "UTF-16BE", - "UTF-16LE", - "x-UTF-16LE-BOM", - "GBK", - "GB18030", - "ISO-8859-1", - "ISO-8859-15", - "ISO-8859-2", - "ISO-8859-3", - "ISO-8859-4", - "ISO-8859-5", - "ISO-8859-6", - "ISO-8859-7", - "ISO-8859-8", - "ISO-8859-9", - "ISO-8859-13", - "JIS_X0201", - "x-JIS0208", - "JIS_X0212-1990", - "GB2312", - "EUC-KR", - "x-EUC-TW", - "EUC-JP", - "x-euc-jp-linux", - "KOI8-R", - "TIS-620", - "x-ISCII91", - "windows-1251", - "windows-1252", - "windows-1253", - "windows-1254", - "windows-1255", - "windows-1256", - "windows-1257", - "windows-1258", - "windows-932", - "x-mswin-936", - "x-windows-949", - "x-windows-950", - "windows-31j", - "Big5", - "Big5-HKSCS", - "x-MS950-HKSCS", - "ISO-2022-JP", - "ISO-2022-KR", - "x-ISO-2022-CN-CNS", - "x-ISO-2022-CN-GB", - "Big5-HKSCS", - "x-Johab", - "Shift_JIS" - }; + /** + * Helper method that checks if a charset should contain another charset. + */ + static void shouldContain(Charset containerCs, Charset cs, boolean cont){ + assertEquals((containerCs.contains(cs)), cont, String.format("%s %s %s", + containerCs.name(), (cont ? " contains " : " does not contain "), cs.name())); + } + + private static Stream utfCharsets() { + String[] utfNames = { + "utf-16", + "utf-8", + "utf-16le", + "utf-16be", + "x-utf-16le-bom" + }; + + String[] charsetNames = { + "US-ASCII", + "UTF-8", + "UTF-16", + "UTF-16BE", + "UTF-16LE", + "x-UTF-16LE-BOM", + "GBK", + "GB18030", + "ISO-8859-1", + "ISO-8859-15", + "ISO-8859-2", + "ISO-8859-3", + "ISO-8859-4", + "ISO-8859-5", + "ISO-8859-6", + "ISO-8859-7", + "ISO-8859-8", + "ISO-8859-9", + "ISO-8859-13", + "JIS_X0201", + "x-JIS0208", + "JIS_X0212-1990", + "GB2312", + "EUC-KR", + "x-EUC-TW", + "EUC-JP", + "x-euc-jp-linux", + "KOI8-R", + "TIS-620", + "x-ISCII91", + "windows-1251", + "windows-1252", + "windows-1253", + "windows-1254", + "windows-1255", + "windows-1256", + "windows-1257", + "windows-1258", + "windows-932", + "x-mswin-936", + "x-windows-949", + "x-windows-950", + "windows-31j", + "Big5", + "Big5-HKSCS", + "x-MS950-HKSCS", + "ISO-2022-JP", + "ISO-2022-KR", + "x-ISO-2022-CN-CNS", + "x-ISO-2022-CN-GB", + "Big5-HKSCS", + "x-Johab", + "Shift_JIS" + }; + + // All charsets in utfNames should contain + // all charsets in charsetNames + return Arrays.stream(utfNames).flatMap(cs1 -> Arrays.stream(charsetNames) + .map(cs2 -> Arguments.of(Charset.forName(cs1), Charset.forName(cs2), true))); + } + + private static Stream charsets() { + Charset us_ascii = Charset.forName("US-ASCII"); + Charset iso_8859_1 = Charset.forName("ISO-8859-1"); + Charset iso_8859_15 = Charset.forName("ISO-8859-15"); + Charset utf_8 = Charset.forName("UTF-8"); + Charset utf_16be = Charset.forName("UTF-16BE"); + Charset cp1252 = Charset.forName("CP1252"); + + return Stream.of( + Arguments.of(us_ascii, us_ascii, true), + Arguments.of(us_ascii, iso_8859_1, false), + Arguments.of(us_ascii, iso_8859_15, false), + Arguments.of(us_ascii, utf_8, false), + Arguments.of(us_ascii, utf_16be, false), + Arguments.of(us_ascii, cp1252, false), + + Arguments.of(iso_8859_1, us_ascii, true), + Arguments.of(iso_8859_1, iso_8859_1, true), + Arguments.of(iso_8859_1, iso_8859_15, false), + Arguments.of(iso_8859_1, utf_8, false), + Arguments.of(iso_8859_1, utf_16be, false), + Arguments.of(iso_8859_1, cp1252, false), + + Arguments.of(iso_8859_15, us_ascii, true), + Arguments.of(iso_8859_15, iso_8859_1, false), + Arguments.of(iso_8859_15, iso_8859_15, true), + Arguments.of(iso_8859_15, utf_8, false), + Arguments.of(iso_8859_15, utf_16be, false), + Arguments.of(iso_8859_15, cp1252, false), + + Arguments.of(utf_8, us_ascii, true), + Arguments.of(utf_8, iso_8859_1, true), + Arguments.of(utf_8, iso_8859_15, true), + Arguments.of(utf_8, utf_8, true), + Arguments.of(utf_8, utf_16be, true), + Arguments.of(utf_8, cp1252, true), + + Arguments.of(utf_16be, us_ascii, true), + Arguments.of(utf_16be, iso_8859_1, true), + Arguments.of(utf_16be, iso_8859_15, true), + Arguments.of(utf_16be, utf_8, true), + Arguments.of(utf_16be, utf_16be, true), + Arguments.of(utf_16be, cp1252, true), + + Arguments.of(cp1252, us_ascii, true), + Arguments.of(cp1252, iso_8859_1, false), + Arguments.of(cp1252, iso_8859_15, false), + Arguments.of(cp1252, utf_8, false), + Arguments.of(cp1252, utf_16be, false), + Arguments.of(cp1252, cp1252, true) + ); + } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/EmptyCharsetName.java openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/EmptyCharsetName.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/EmptyCharsetName.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/EmptyCharsetName.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* @test - * @bug 4786884 - * @summary Ensure that passing the empty string to Charset methods and - * constructors causes an IllegalArgumentException to be thrown - */ - -import java.io.*; -import java.nio.*; -import java.nio.charset.*; - - -public class EmptyCharsetName { - - static abstract class Test { - - public abstract void go() throws Exception; - - Test() throws Exception { - try { - go(); - } catch (Exception x) { - if (x instanceof IllegalCharsetNameException) { - System.err.println("Thrown as expected: " + x); - return; - } - throw new Exception("Incorrect exception: " - + x.getClass().getName(), - x); - } - throw new Exception("No exception thrown"); - } - - } - - public static void main(String[] args) throws Exception { - - new Test() { - public void go() throws Exception { - Charset.forName(""); - }}; - new Test() { - public void go() throws Exception { - Charset.isSupported(""); - }}; - new Test() { - public void go() throws Exception { - new Charset("", new String[] { }) { - public CharsetDecoder newDecoder() { - return null; - } - public CharsetEncoder newEncoder() { - return null; - } - public boolean contains(Charset cs) { - return false; - } - }; - }}; - } - -} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/EncDec.java openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/EncDec.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/EncDec.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/EncDec.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,23 +23,42 @@ /* @test * @summary Unit test for encode/decode convenience methods + * @run junit EncDec */ +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.util.stream.Stream; -import java.nio.*; -import java.nio.charset.*; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import static org.junit.jupiter.api.Assertions.assertEquals; public class EncDec { - public static void main(String[] args) throws Exception { - String s = "Hello, world!"; + /** + * Test that the input String is the same after round tripping + * the Charset.encode() and Charset.decode() methods. + */ + @ParameterizedTest + @MethodSource("stringProvider") + public void roundTripTest(String pre) { ByteBuffer bb = ByteBuffer.allocate(100); - bb.put(Charset.forName("ISO-8859-15").encode(s)).flip(); - String t = Charset.forName("UTF-8").decode(bb).toString(); - System.err.println(t); - if (!t.equals(s)) - throw new Exception("Mismatch: " + s + " != " + t); + Charset preCs = Charset.forName("ISO-8859-15"); + if (!preCs.canEncode()) { + throw new RuntimeException("Error: Trying to test encode and " + + "decode methods on a charset that does not support encoding"); + } + bb.put(preCs.encode(pre)).flip(); + String post = Charset.forName("UTF-8").decode(bb).toString(); + assertEquals(pre, post, "Mismatch after encoding + decoding, :"); } + static Stream stringProvider() { + return Stream.of( + "Hello, world!", + "apple, banana, orange", + "car, truck, horse"); + } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/IllegalCharsetName.java openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/IllegalCharsetName.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/IllegalCharsetName.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/IllegalCharsetName.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,46 +22,71 @@ */ /* @test - * @bug 6330020 8184665 + * @bug 4786884 6330020 8184665 * @summary Ensure Charset.forName/isSupport throws the correct exception * if the charset names passed in are illegal. + * @run junit IllegalCharsetName */ -import java.nio.charset.*; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.IllegalCharsetNameException; +import java.util.stream.Stream; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import static org.junit.jupiter.api.Assertions.assertThrows; public class IllegalCharsetName { - public static void main(String[] args) throws Exception { - String[] illegalNames = { - ".", - "_", - ":", - "-", - ".name", - "_name", - ":name", - "-name", - "name*name", - "name?name" - }; - for (int i = 0; i < illegalNames.length; i++) { - try { - Charset.forName(illegalNames[i]); - throw new Exception("Charset.forName(): No exception thrown"); - } catch (IllegalCharsetNameException x) { //expected - } - - try { - Charset.isSupported(illegalNames[i]); - throw new Exception("Charset.isSupported(): No exception thrown"); - } catch (IllegalCharsetNameException x) { //expected - } - } - // Standard charsets may bypass alias checking during startup, test that - // they're all well-behaved as a sanity test - checkAliases(StandardCharsets.ISO_8859_1); - checkAliases(StandardCharsets.US_ASCII); - checkAliases(StandardCharsets.UTF_8); + // Charset.forName and Charset.isSupported should throw an + // IllegalCharsetNameException when passed an illegal name + @ParameterizedTest + @MethodSource("illegalNames") + public void illegalCharsetsTest(String name) { + assertThrows(IllegalCharsetNameException.class, + () -> Charset.forName(name)); + assertThrows(IllegalCharsetNameException.class, + () -> Charset.isSupported(name)); + } + + // Charset.forName, Charset.isSupported, and the Charset constructor should + // throw an IllegalCharsetNameException when passed an empty name + @Test + public void emptyCharsetsTest() { + assertThrows(IllegalCharsetNameException.class, + () -> Charset.forName("")); + assertThrows(IllegalCharsetNameException.class, + () -> Charset.isSupported("")); + assertThrows(IllegalCharsetNameException.class, + () -> new Charset("", new String[]{}) { + @Override + public boolean contains(Charset cs) { + return false; + } + + @Override + public CharsetDecoder newDecoder() { + return null; + } + + @Override + public CharsetEncoder newEncoder() { + return null; + } + }); + } + + // Standard charsets may bypass alias checking during startup, test that + // they're all well-behaved as a sanity test + @Test + public void aliasTest() { + for (Charset cs : Charset.availableCharsets().values()) { + checkAliases(cs); + } } private static void checkAliases(Charset cs) { @@ -70,4 +95,19 @@ Charset.isSupported(alias); } } + + static Stream illegalNames() { + return Stream.of( + ".", + "_", + ":", + "-", + ".name", + "_name", + ":name", + "-name", + "name*name", + "name?name" + ); + } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/NullCharsetName.java openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/NullCharsetName.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/NullCharsetName.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/NullCharsetName.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2023 Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,29 +24,21 @@ /* @test * @bug 4448594 * @summary Ensure passing null to Charset.forName throws the correct exception + * @run junit NullCharsetName */ -import java.io.*; -import java.nio.*; -import java.nio.charset.*; -import java.util.*; +import java.nio.charset.Charset; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertThrows; public class NullCharsetName { - public static void main(String[] args) throws Exception { - try { - Charset.forName(null); - } catch (Exception x) { - if (x instanceof IllegalArgumentException) { - System.err.println("Thrown as expected: " + x); - return; - } - throw new Exception("Incorrect exception: " - + x.getClass().getName(), - x); - } - throw new Exception("No exception thrown"); + // Charset.forName should throw an exception when passed null + @Test + public void nullCharsetTest() { + assertThrows(IllegalArgumentException.class, + () -> Charset.forName(null)); } - } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/RegisteredCharsets.java openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/RegisteredCharsets.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/charset/Charset/RegisteredCharsets.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/charset/Charset/RegisteredCharsets.java 2026-01-15 15:34:19.000000000 +0000 @@ -26,1288 +26,1328 @@ 6911753 8071447 8186751 8242541 8260265 8301119 * @summary Check that registered charsets are actually registered * @modules jdk.charsets - * @run main RegisteredCharsets - * @run main/othervm -Djdk.charset.GB18030=2000 RegisteredCharsets + * @run junit RegisteredCharsets + * @run junit/othervm -Djdk.charset.GB18030=2000 RegisteredCharsets */ -import java.nio.charset.*; +import java.nio.charset.Charset; +import java.nio.charset.UnsupportedCharsetException; +import java.util.stream.Stream; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; -public class RegisteredCharsets { +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; - static String [] ianaRegistered = { - "US-ASCII", "UTF8", "Big5", "EUC-JP", - "GBK", "GB18030", "ISO-2022-KR", "ISO-2022-JP", - "GB2312", // IANA preferred name for "EUC-CN" - "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", - "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", - "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", - "ISO-8859-13", "ISO-8859-15", "ISO-8859-16", - "windows-1251", - "windows-1252", "windows-1253", "windows-1254", - "windows-1255", "windows-1256", "windows-31j", - "Shift_JIS", "JIS_X0201", "JIS_X0212-1990", - "TIS-620", "Big5-HKSCS", - "ISO-2022-CN", - "IBM850", - "IBM852", - "IBM855", - "IBM857", - "IBM860", - "IBM861", - "IBM862", - "IBM863", - "IBM864", - "IBM865", - "IBM866", - "IBM868", - "IBM869", - "IBM437", - "IBM775", - "IBM037", - "IBM1026", - "IBM273", - "IBM277", - "IBM278", - "IBM280", - "IBM284", - "IBM285", - "IBM297", - "IBM420", - "IBM424", - "IBM500", - "IBM-Thai", - "IBM870", - "IBM871", - "IBM918", - "IBM1047", - "IBM01140", - "IBM01141", - "IBM01142", - "IBM01143", - "IBM01144", - "IBM01145", - "IBM01146", - "IBM01147", - "IBM01148", - "IBM01149", - "IBM00858" }; - - static String [] ianaUnRegistered = { - "x-EUC-TW", "x-ISCII91", - "x-windows-949", "x-windows-950", - "x-mswin-936", "x-JIS0208", - "x-ISO-8859-11", - "x-windows-874", - "x-PCK", "x-JISAutoDetect", "x-Johab", - "x-MS950-HKSCS", - "x-Big5-Solaris", - "x-ISO-2022-CN-CNS", - "x-ISO-2022-CN-GB", - "x-MacArabic", - "x-MacCentralEurope", - "x-MacCroatian", - "x-MacCyrillic", - "x-MacDingbat", - "x-MacGreek", - "x-MacHebrew", - "x-MacIceland", - "x-MacRoman", - "x-MacRomania", - "x-MacSymbol", - "x-MacThai", - "x-MacTurkish", - "x-MacUkraine", - "x-IBM942", - "x-IBM942C", - "x-IBM943", - "x-IBM943C", - "x-IBM948", - "x-IBM950", - "x-IBM930", - "x-IBM935", - "x-IBM937", - "x-IBM856", - "x-IBM874", - "x-IBM737", - "x-IBM1006", - "x-IBM1046", - "x-IBM1098", - "x-IBM1025", - "x-IBM1112", - "x-IBM1122", - "x-IBM1123", - "x-IBM1124", - "x-IBM1129", - "x-IBM1166", - "x-IBM875", - "x-IBM921", - "x-IBM922", - "x-IBM1097", - "x-IBM949", - "x-IBM949C", - "x-IBM939", - "x-IBM933", - "x-IBM1381", - "x-IBM1383", - "x-IBM970", - "x-IBM964", - "x-IBM33722", - "x-IBM1006", - "x-IBM1046", - "x-IBM1097", - "x-IBM1098", - "x-IBM1112", - "x-IBM1122", - "x-IBM1123", - "x-IBM1124", - "x-IBM33722", - "x-IBM737", - "x-IBM856", - "x-IBM874", - "x-IBM875", - "x-IBM922", - "x-IBM933", - "x-IBM964" }; +public class RegisteredCharsets { - static void check(String csn, boolean testRegistered) throws Exception { - if (!Charset.forName(csn).isRegistered() && testRegistered) - throw new Exception("Not registered: " + csn); - else if (Charset.forName(csn).isRegistered() && !testRegistered) - throw new Exception("Registered: " + csn + "should be unregistered"); + // Charset.forName should throw an exception when passed "default" + @Test + public void defaultCharsetTest() { + assertThrows(UnsupportedCharsetException.class, + () -> Charset.forName("default")); } - static void aliasCheck(String canonicalName, String[] aliasNames) throws Exception - { - for (int k = 0; k < aliasNames.length; k++ ) { - Charset cs = Charset.forName(aliasNames[k]); - if (!cs.name().equals(canonicalName)) { - throw new Exception("Unexpected Canonical name " + canonicalName); - } + /** + * Tests that the aliases of the input String convert + * to the same Charset. This is validated by ensuring the input String + * and Charset.name() values are equal. + */ + @ParameterizedTest + @MethodSource("aliases") + public void testAliases(String canonicalName, String[] aliasNames) { + for (String aliasName : aliasNames) { + Charset cs = Charset.forName(aliasName); + assertEquals(cs.name(), canonicalName); } } - public static void main(String[] args) throws Exception { + /** + * Tests charsets to ensure that they are registered in the + * IANA Charset Registry. + */ + @ParameterizedTest + @MethodSource("ianaRegistered") + public void registeredTest(String cs) throws Exception { + check(cs, true); + } - for (int i = 0; i < ianaRegistered.length ; i++) - check(ianaRegistered[i], true); + /** + * Tests charsets to ensure that they are NOT registered in the + * IANA Charset Registry. + */ + @ParameterizedTest + @MethodSource("ianaUnregistered") + public void unregisteredTest(String cs) throws Exception { + check(cs, false); + } - for (int i = 0; i < ianaUnRegistered.length ; i++) - check(ianaUnRegistered[i], false); + /** + * Helper method which checks if a charset is registered and whether + * it should be. + */ + static void check(String csn, boolean testRegistered) throws Exception { + if (!Charset.forName(csn).isRegistered() && testRegistered) { + throw new Exception("Not registered: " + csn); + } + else if (Charset.forName(csn).isRegistered() && !testRegistered) { + throw new Exception("Registered: " + csn + "should be unregistered"); + } + } + // See https://www.iana.org/assignments/character-sets/character-sets.xhtml + private static Stream ianaRegistered() { + return Stream.of( + "US-ASCII", "UTF8", "Big5", "EUC-JP", + "GBK", "GB18030", "ISO-2022-KR", "ISO-2022-JP", + "GB2312", // IANA preferred name for "EUC-CN" + "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", + "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", + "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", + "ISO-8859-13", "ISO-8859-15", "ISO-8859-16", + "windows-1251", + "windows-1252", "windows-1253", "windows-1254", + "windows-1255", "windows-1256", "windows-31j", + "Shift_JIS", "JIS_X0201", "JIS_X0212-1990", + "TIS-620", "Big5-HKSCS", + "ISO-2022-CN", + "IBM850", + "IBM852", + "IBM855", + "IBM857", + "IBM860", + "IBM861", + "IBM862", + "IBM863", + "IBM864", + "IBM865", + "IBM866", + "IBM868", + "IBM869", + "IBM437", + "IBM775", + "IBM037", + "IBM1026", + "IBM273", + "IBM277", + "IBM278", + "IBM280", + "IBM284", + "IBM285", + "IBM297", + "IBM420", + "IBM424", + "IBM500", + "IBM-Thai", + "IBM870", + "IBM871", + "IBM918", + "IBM1047", + "IBM01140", + "IBM01141", + "IBM01142", + "IBM01143", + "IBM01144", + "IBM01145", + "IBM01146", + "IBM01147", + "IBM01148", + "IBM01149", + "IBM00858" + ); + } + + private static Stream ianaUnregistered() { + return Stream.of( + "x-EUC-TW", "x-ISCII91", + "x-windows-949", "x-windows-950", + "x-mswin-936", "x-JIS0208", + "x-ISO-8859-11", + "x-windows-874", + "x-PCK", "x-JISAutoDetect", "x-Johab", + "x-MS950-HKSCS", + "x-Big5-Solaris", + "x-ISO-2022-CN-CNS", + "x-ISO-2022-CN-GB", + "x-MacArabic", + "x-MacCentralEurope", + "x-MacCroatian", + "x-MacCyrillic", + "x-MacDingbat", + "x-MacGreek", + "x-MacHebrew", + "x-MacIceland", + "x-MacRoman", + "x-MacRomania", + "x-MacSymbol", + "x-MacThai", + "x-MacTurkish", + "x-MacUkraine", + "x-IBM942", + "x-IBM942C", + "x-IBM943", + "x-IBM943C", + "x-IBM948", + "x-IBM950", + "x-IBM930", + "x-IBM935", + "x-IBM937", + "x-IBM856", + "x-IBM874", + "x-IBM737", + "x-IBM1006", + "x-IBM1046", + "x-IBM1098", + "x-IBM1025", + "x-IBM1112", + "x-IBM1122", + "x-IBM1123", + "x-IBM1124", + "x-IBM1129", + "x-IBM1166", + "x-IBM875", + "x-IBM921", + "x-IBM922", + "x-IBM1097", + "x-IBM949", + "x-IBM949C", + "x-IBM939", + "x-IBM933", + "x-IBM1381", + "x-IBM1383", + "x-IBM970", + "x-IBM964", + "x-IBM33722", + "x-IBM1006", + "x-IBM1046", + "x-IBM1097", + "x-IBM1098", + "x-IBM1112", + "x-IBM1122", + "x-IBM1123", + "x-IBM1124", + "x-IBM33722", + "x-IBM737", + "x-IBM856", + "x-IBM874", + "x-IBM875", + "x-IBM922", + "x-IBM933", + "x-IBM964" + ); + } + + private static Stream aliases() { // Check aliases registered with IANA for all NIO supported // Charset implementations. // // The aliases below are in sync with the IANA registered charset // document at: http://www.iana.org/assignments/character-sets // Last updated 7/25/2002 - - aliasCheck("US-ASCII", - new String[] {"ascii","ANSI_X3.4-1968", - "iso-ir-6","ANSI_X3.4-1986", "ISO_646.irv:1991", - "ASCII", "ISO646-US","us","IBM367","cp367", - "csASCII"}); - - aliasCheck("UTF-8", - new String[] { - "UTF8", - "unicode-1-1-utf-8" - }); - - aliasCheck("UTF-16", - new String[] { - "UTF_16", - "utf16" - }); - - aliasCheck("UTF-16BE", - new String[] { - "UTF_16BE", - "ISO-10646-UCS-2", - "X-UTF-16BE", - "UnicodeBigUnmarked" - }); - - aliasCheck("UTF-16LE", - new String[] { - "UTF_16LE", - "X-UTF-16LE", - "UnicodeLittleUnmarked" - }); - - aliasCheck("Big5", - new String[] { - "csBig5" - }); - - aliasCheck("Big5-HKSCS", - new String[] { - "Big5_HKSCS", - "big5hk", - "big5-hkscs", - "big5hkscs" - }); - - aliasCheck("x-MS950-HKSCS", - new String[] { - "MS950_HKSCS" - }); - - aliasCheck("GB18030", - "2000".equals(System.getProperty("jdk.charset.GB18030")) ? - new String[] { - "gb18030-2000" - } : - new String[] { - "gb18030-2022" - }); - - aliasCheck("ISO-2022-KR", new String[] {"csISO2022KR"}); - aliasCheck("ISO-2022-JP", new String[] {"csISO2022JP"}); - aliasCheck("EUC-KR", new String[] { "csEUCKR"}); - aliasCheck("ISO-8859-1", - new String[] { - - // IANA aliases - "iso-ir-100", - "ISO_8859-1", - "latin1", - "l1", - "IBM819", - "cp819", - "csISOLatin1", - - // JDK historical aliases - "819", - "IBM-819", - "ISO8859_1", - "ISO_8859-1:1987", - "ISO_8859_1", - "8859_1", - "ISO8859-1", - - }); - - aliasCheck("ISO-8859-2", - new String[] { - "ISO_8859-2", - "ISO_8859-2:1987", - "iso-ir-101", - "latin2", - "l2", - "8859_2", - "iso_8859-2:1987", - "iso8859-2", - "ibm912", - "ibm-912", - "cp912", - "912", - "csISOLatin2"}); - - aliasCheck("ISO-8859-3", - new String[] {"latin3", - "ISO_8859-3:1988", - "iso-ir-109", - "l3", - "8859_3", - "iso_8859-3:1988", - "iso8859-3", - "ibm913", - "ibm-913", - "cp913", - "913", - "csISOLatin3"}); - - aliasCheck("ISO-8859-4", - new String[] {"csISOLatin4", - "ISO_8859-4:1988", - "iso-ir-110", - "latin4", - "8859_4", - "iso_8859-4:1988", - "iso8859-4", - "ibm914", - "ibm-914", - "cp914", - "914", - "l4"}); - - aliasCheck("ISO-8859-5", - new String[] { - "iso8859_5", // JDK historical - "8859_5", - "iso-ir-144", - "ISO_8859-5", - "ISO_8859-5:1988", - "ISO8859-5", - "cyrillic", - "ibm915", - "ibm-915", - "915", - "cp915", - "csISOLatinCyrillic" - }); - - aliasCheck("ISO-8859-6", - new String[] {"ISO_8859-6:1987", - "iso-ir-127", - "ISO_8859-6", - "ECMA-114", - "ASMO-708", - "arabic", - "8859_6", - "iso_8859-6:1987", - "iso8859-6", - "ibm1089", - "ibm-1089", - "cp1089", - "1089", - "csISOLatinArabic"}); - - aliasCheck("ISO-8859-7", - new String[] {"ISO_8859-7:1987", - "iso-ir-126", - "ISO_8859-7", - "ELOT_928", - "ECMA-118", - "greek", - "greek8", - "8859_7", - "iso_8859-7:1987", - "iso8859-7", - "ibm813", - "ibm-813", - "cp813", - "813", - "csISOLatinGreek"}); - - aliasCheck("ISO-8859-8", - new String[] { - "ISO_8859-8:1988", - "iso-ir-138", - "ISO_8859-8", - "hebrew", - "8859_8", - "iso_8859-8:1988", - "iso8859-8", - "ibm916", - "ibm-916", - "cp916", - "916", - "csISOLatinHebrew"}); - - aliasCheck("ISO-8859-9", - new String[] {"ISO_8859-9:1989", - "iso-ir-148", - "ISO_8859-9", - "latin5", - "l5", - "8859_9", - "iso8859-9", - "ibm920", - "ibm-920", - "cp920", - "920", - "csISOLatin5"}); - - aliasCheck("ISO-8859-13", - new String[] { - "iso8859_13", // JDK historical - "iso_8859-13", - "8859_13", - "ISO8859-13" - }); - - aliasCheck("ISO-8859-15", - new String[] { - // IANA alias - "ISO_8859-15", - "Latin-9", - "csISO885915", - // JDK historical aliases - "8859_15", - "ISO-8859-15", - "ISO_8859-15", - "ISO8859-15", - "ISO8859_15", - "IBM923", - "IBM-923", - "cp923", - "923", - "LATIN0", - "LATIN9", - "L9", - "csISOlatin0", - "csISOlatin9", - "ISO8859_15_FDIS" - }); - - aliasCheck("ISO-8859-16", - new String[] { - "iso-ir-226", - "ISO_8859-16:2001", - "ISO_8859-16", - "ISO8859_16", - "latin10", - "l10", - "csISO885916" - }); - - aliasCheck("JIS_X0212-1990", - new String[] { - "iso-ir-159", - "csISO159JISX02121990"}); - - aliasCheck("JIS_X0201", - new String[]{ - "X0201", - "csHalfWidthKatakana"}); - - aliasCheck("KOI8-R", - new String[] { - "KOI8_R", - "csKOI8R"}); - - aliasCheck("GBK", - new String[] { - "windows-936"}); - - aliasCheck("Shift_JIS", - new String[] { - "MS_Kanji", - "csShiftJIS"}); - - aliasCheck("EUC-JP", - new String[] { - "Extended_UNIX_Code_Packed_Format_for_Japanese", - "csEUCPkdFmtJapanese"}); - - aliasCheck("Big5", new String[] {"csBig5"}); - - aliasCheck("windows-31j", new String[] {"csWindows31J"}); - - aliasCheck("x-iso-8859-11", - new String[] { "iso-8859-11", "iso8859_11" }); - - aliasCheck("windows-1250", - new String[] { - "cp1250", - "cp5346" - }); - - aliasCheck("windows-1251", - new String[] { - "cp1251", - "cp5347", - "ansi-1251" - }); - - aliasCheck("windows-1252", - new String[] { - "cp1252", - "cp5348" - }); - - aliasCheck("windows-1253", - new String[] { - "cp1253", - "cp5349" - }); - - aliasCheck("windows-1254", - new String[] { - "cp1254", - "cp5350" - }); - - aliasCheck("windows-1255", - new String[] { - "cp1255" - }); - - aliasCheck("windows-1256", - new String[] { - "cp1256" - }); - - aliasCheck("windows-1257", - new String[] { - "cp1257", - "cp5353" - }); - - aliasCheck("windows-1258", - new String[] { - "cp1258" - }); - - aliasCheck("x-windows-874", - new String[] { - "ms874", "ms-874", "windows-874" }); - - aliasCheck("GB2312", - new String[] { - "x-EUC-CN", - "gb2312-80", - "gb2312-1980", - "euc-cn", - "euccn" }); - - aliasCheck("x-IBM942" , - new String[] { - "cp942", // JDK historical - "ibm942", - "ibm-942", - "942" - }); - - aliasCheck("x-IBM942C" , - new String[] { - "cp942C", // JDK historical - "ibm942C", - "ibm-942C", - "942C" - } ); - - aliasCheck("x-IBM943" , - new String[] { - "cp943", // JDK historical - "ibm943", - "ibm-943", - "943" - } ); - - aliasCheck("x-IBM943C" , - new String[] { - "cp943c", // JDK historical - "ibm943C", - "ibm-943C", - "943C" - } ); - - aliasCheck("x-IBM948" , - new String[] { - "cp948", // JDK historical - "ibm948", - "ibm-948", - "948" - } ); - - aliasCheck("x-IBM950" , - new String[] { - "cp950", // JDK historical - "ibm950", - "ibm-950", - "950" - } ); - - aliasCheck("x-IBM930" , - new String[] { - "cp930", // JDK historical - "ibm930", - "ibm-930", - "930" - } ); - - aliasCheck("x-IBM935" , - new String[] { - "cp935", // JDK historical - "ibm935", - "ibm-935", - "935" - } ); - - aliasCheck("x-IBM937" , - new String[] { - "cp937", // JDK historical - "ibm937", - "ibm-937", - "937" - } ); - - aliasCheck("IBM850" , - new String[] { - "cp850", // JDK historical - "ibm-850", - "ibm850", - "850", - "cspc850multilingual" - } ); - - aliasCheck("IBM852" , - new String[] { - "cp852", // JDK historical - "ibm852", - "ibm-852", - "852", - "csPCp852" - } ); - - aliasCheck("IBM855" , - new String[] { - "cp855", // JDK historical - "ibm-855", - "ibm855", - "855", - "cspcp855" - } ); - - aliasCheck("x-IBM856" , - new String[] { - "cp856", // JDK historical - "ibm-856", - "ibm856", - "856" - } ); - - aliasCheck("IBM857" , - new String[] { - "cp857", // JDK historical - "ibm857", - "ibm-857", - "857", - "csIBM857" - } ); - - aliasCheck("IBM860" , - new String[] { - "cp860", // JDK historical - "ibm860", - "ibm-860", - "860", - "csIBM860" - } ); - aliasCheck("IBM861" , - new String[] { - "cp861", // JDK historical - "ibm861", - "ibm-861", - "861", - "csIBM861" - } ); - - aliasCheck("IBM862" , - new String[] { - "cp862", // JDK historical - "ibm862", - "ibm-862", - "862", - "csIBM862" - } ); - - aliasCheck("IBM863" , - new String[] { - "cp863", // JDK historical - "ibm863", - "ibm-863", - "863", - "csIBM863" - } ); - - aliasCheck("IBM864" , - new String[] { - "cp864", // JDK historical - "ibm864", - "ibm-864", - "864", - "csIBM864" - } ); - - aliasCheck("IBM865" , - new String[] { - "cp865", // JDK historical - "ibm865", - "ibm-865", - "865", - "csIBM865" - } ); - - aliasCheck("IBM866" , new String[] { - "cp866", // JDK historical - "ibm866", - "ibm-866", - "866", - "csIBM866" - } ); - aliasCheck("IBM868" , - new String[] { - "cp868", // JDK historical - "ibm868", - "ibm-868", - "868", - "cp-ar", - "csIBM868" - } ); - - aliasCheck("IBM869" , - new String[] { - "cp869", // JDK historical - "ibm869", - "ibm-869", - "869", - "cp-gr", - "csIBM869" - } ); - - aliasCheck("IBM437" , - new String[] { - "cp437", // JDK historical - "ibm437", - "ibm-437", - "437", - "cspc8codepage437", - "windows-437" - } ); - - aliasCheck("x-IBM874" , - new String[] { - "cp874", // JDK historical - "ibm874", - "ibm-874", - "874" - } ); - aliasCheck("x-IBM737" , - new String[] { - "cp737", // JDK historical - "ibm737", - "ibm-737", - "737" - } ); - - aliasCheck("IBM775" , - new String[] { - "cp775", // JDK historical - "ibm775", - "ibm-775", - "775" - } ); - - aliasCheck("x-IBM921" , - new String[] { - "cp921", // JDK historical - "ibm921", - "ibm-921", - "921" - } ); - - aliasCheck("x-IBM1006" , - new String[] { - "cp1006", // JDK historical - "ibm1006", - "ibm-1006", - "1006" - } ); - - aliasCheck("x-IBM1046" , - new String[] { - "cp1046", // JDK historical - "ibm1046", - "ibm-1046", - "1046" - } ); - - aliasCheck("IBM1047" , - new String[] { - "cp1047", // JDK historical - "ibm-1047", - "1047" - } ); - - aliasCheck("x-IBM1098" , - new String[] { - "cp1098", // JDK historical - "ibm1098", - "ibm-1098", - "1098", - } ); - - aliasCheck("IBM037" , - new String[] { - "cp037", // JDK historical - "ibm037", - "csIBM037", - "cs-ebcdic-cp-us", - "cs-ebcdic-cp-ca", - "cs-ebcdic-cp-wt", - "cs-ebcdic-cp-nl", - "ibm-037", - "ibm-37", - "cpibm37", - "037" - } ); - - aliasCheck("x-IBM1025" , - new String[] { - "cp1025", // JDK historical - "ibm1025", - "ibm-1025", - "1025" - } ); - - aliasCheck("IBM1026" , - new String[] { - "cp1026", // JDK historical - "ibm1026", - "ibm-1026", - "1026" - } ); - - aliasCheck("x-IBM1112" , - new String[] { - "cp1112", // JDK historical - "ibm1112", - "ibm-1112", - "1112" - } ); - - aliasCheck("x-IBM1122" , - new String[] { - "cp1122", // JDK historical - "ibm1122", - "ibm-1122", - "1122" - } ); - - aliasCheck("x-IBM1123" , - new String[] { - "cp1123", // JDK historical - "ibm1123", - "ibm-1123", - "1123" - } ); - - aliasCheck("x-IBM1124" , - new String[] { - "cp1124", // JDK historical - "ibm1124", - "ibm-1124", - "1124" - } ); - - aliasCheck("x-IBM1129" , - new String[] { - "cp1129", // JDK historical - "ibm1129", - "ibm-1129", - "1129" - } ); - - aliasCheck("x-IBM1166" , - new String[] { - "cp1166", // JDK historical - "ibm1166", - "ibm-1166", - "1166" - } ); - - aliasCheck("IBM273" , - new String[] { - "cp273", // JDK historical - "ibm273", - "ibm-273", - "273" - } ); - - aliasCheck("IBM277" , - new String[] { - "cp277", // JDK historical - "ibm277", - "ibm-277", - "277" - } ); - - aliasCheck("IBM278" , - new String[] { - "cp278", // JDK historical - "ibm278", - "ibm-278", - "278", - "ebcdic-sv", - "ebcdic-cp-se", - "csIBM278" - } ); - - aliasCheck("IBM280" , - new String[] { - "cp280", // JDK historical - "ibm280", - "ibm-280", - "280" - } ); - - aliasCheck("IBM284" , - new String[] { - "cp284", // JDK historical - "ibm284", - "ibm-284", - "284", - "csIBM284", - "cpibm284" - } ); - - aliasCheck("IBM285" , - new String[] { - "cp285", // JDK historical - "ibm285", - "ibm-285", - "285", - "ebcdic-cp-gb", - "ebcdic-gb", - "csIBM285", - "cpibm285" - } ); - - aliasCheck("IBM297" , - new String[] { - "cp297", // JDK historical - "ibm297", - "ibm-297", - "297", - "ebcdic-cp-fr", - "cpibm297", - "csIBM297", - } ); - - aliasCheck("IBM420" , - new String[] { - "cp420", // JDK historical - "ibm420", - "ibm-420", - "ebcdic-cp-ar1", - "420", - "csIBM420" - } ); - - aliasCheck("IBM424" , - new String[] { - "cp424", // JDK historical - "ibm424", - "ibm-424", - "424", - "ebcdic-cp-he", - "csIBM424" - } ); - - aliasCheck("IBM500" , - new String[] { - "cp500", // JDK historical - "ibm500", - "ibm-500", - "500", - "ebcdic-cp-ch", - "ebcdic-cp-bh", - "csIBM500" - } ); - - aliasCheck("IBM-Thai" , - new String[] { - "cp838", // JDK historical - "ibm838", - "ibm-838", - "ibm838", - "838" - } ); - - aliasCheck("IBM870" , - new String[] { - "cp870", // JDK historical - "ibm870", - "ibm-870", - "870", - "ebcdic-cp-roece", - "ebcdic-cp-yu", - "csIBM870" - } ); - - aliasCheck("IBM871" , - new String[] { - "cp871", // JDK historical - "ibm871", - "ibm-871", - "871", - "ebcdic-cp-is", - "csIBM871" - } ); - - aliasCheck("x-IBM875" , - new String[] { - "cp875", // JDK historical - "ibm875", - "ibm-875", - "875" - } ); - - aliasCheck("IBM918" , - new String[] { - "cp918", // JDK historical - "ibm-918", - "918", - "ebcdic-cp-ar2" - } ); - - aliasCheck("x-IBM922" , - new String[] { - "cp922", // JDK historical - "ibm922", - "ibm-922", - "922" - } ); - - aliasCheck("x-IBM1097" , - new String[] { - "cp1097", // JDK historical - "ibm1097", - "ibm-1097", - "1097" - } ); - - aliasCheck("x-IBM949" , - new String[] { - "cp949", // JDK historical - "ibm949", - "ibm-949", - "949" - } ); - - aliasCheck("x-IBM949C" , - new String[] { - "cp949C", // JDK historical - "ibm949C", - "ibm-949C", - "949C" - } ); - - aliasCheck("x-IBM939" , - new String[] { - "cp939", // JDK historical - "ibm939", - "ibm-939", - "939" - } ); - - aliasCheck("x-IBM933" , - new String[] { - "cp933", // JDK historical - "ibm933", - "ibm-933", - "933" - } ); - - aliasCheck("x-IBM1381" , - new String[] { - "cp1381", // JDK historical - "ibm1381", - "ibm-1381", - "1381" - } ); - - aliasCheck("x-IBM1383" , - new String[] { - "cp1383", // JDK historical - "ibm1383", - "ibm-1383", - "1383" - } ); - - aliasCheck("x-IBM970" , - new String[] { - "cp970", // JDK historical - "ibm970", - "ibm-970", - "ibm-eucKR", - "970" - } ); - - aliasCheck("x-IBM964" , - new String[] { - "cp964", // JDK historical - "ibm964", - "ibm-964", - "964" - } ); - - aliasCheck("x-IBM33722" , - new String[] { - "cp33722", // JDK historical - "ibm33722", - "ibm-33722", - "ibm-5050", // from IBM alias list - "ibm-33722_vascii_vpua", // from IBM alias list - "33722" - } ); - - aliasCheck("IBM01140" , - new String[] { - "cp1140", // JDK historical - "ccsid01140", - "cp01140", - // "ebcdic-us-037+euro" - } ); - - aliasCheck("IBM01141" , - new String[] { - "cp1141", // JDK historical - "ccsid01141", - "cp01141", - // "ebcdic-de-273+euro" - } ); - - aliasCheck("IBM01142" , - new String[] { - "cp1142", // JDK historical - "ccsid01142", - "cp01142", - // "ebcdic-no-277+euro", - // "ebcdic-dk-277+euro" - } ); - - aliasCheck("IBM01143" , - new String[] { - "cp1143", // JDK historical - "ccsid01143", - "cp01143", - // "ebcdic-fi-278+euro", - // "ebcdic-se-278+euro" - } ); - - aliasCheck("IBM01144" , - new String[] { - "cp1144", // JDK historical - "ccsid01144", - "cp01144", - // "ebcdic-it-280+euro" - } ); - - aliasCheck("IBM01145" , - new String[] { - "cp1145", // JDK historical - "ccsid01145", - "cp01145", - // "ebcdic-es-284+euro" - } ); - - aliasCheck("IBM01146" , - new String[] { - "cp1146", // JDK historical - "ccsid01146", - "cp01146", - // "ebcdic-gb-285+euro" - } ); - - aliasCheck("IBM01147" , - new String[] { - "cp1147", // JDK historical - "ccsid01147", - "cp01147", - // "ebcdic-fr-277+euro" - } ); - - aliasCheck("IBM01148" , - new String[] { - "cp1148", // JDK historical - "ccsid01148", - "cp01148", - // "ebcdic-international-500+euro" - } ); - - aliasCheck("IBM01149" , - new String[] { - "cp1149", // JDK historical - "ccsid01149", - "cp01149", - // "ebcdic-s-871+euro" - } ); - - aliasCheck("IBM00858" , - new String[] { - "cp858", // JDK historical - "ccsid00858", - "cp00858", - // "PC-Multilingual-850+euro" - } ); - - aliasCheck("x-MacRoman", - new String[] { - "MacRoman" // JDK historical - }); - - aliasCheck("x-MacCentralEurope", - new String[] { - "MacCentralEurope" // JDK historical - }); - - aliasCheck("x-MacCroatian", - new String[] { - "MacCroatian" // JDK historical - }); - - - aliasCheck("x-MacCroatian", - new String[] { - "MacCroatian" // JDK historical - }); - - - aliasCheck("x-MacGreek", - new String[] { - "MacGreek" // JDK historical - }); - - aliasCheck("x-MacCyrillic", - new String[] { - "MacCyrillic" // JDK historical - }); - - aliasCheck("x-MacUkraine", - new String[] { - "MacUkraine" // JDK historical - }); - - aliasCheck("x-MacTurkish", - new String[] { - "MacTurkish" // JDK historical - }); - - aliasCheck("x-MacArabic", - new String[] { - "MacArabic" // JDK historical - }); - - aliasCheck("x-MacHebrew", - new String[] { - "MacHebrew" // JDK historical - }); - - aliasCheck("x-MacIceland", - new String[] { - "MacIceland" // JDK historical - }); - - aliasCheck("x-MacRomania", - new String[] { - "MacRomania" // JDK historical - }); - - aliasCheck("x-MacThai", - new String[] { - "MacThai" // JDK historical - }); - - aliasCheck("x-MacSymbol", - new String[] { - "MacSymbol" // JDK historical - }); - - aliasCheck("x-MacDingbat", - new String[] { - "MacDingbat" // JDK historical - }); - - // Check UnsupportedCharsetException is thrown for the name "default" - try { - Charset.forName("default"); - throw new RuntimeException("UnsupportedCharsetException was not thrown for Charset.forName(\"default\")"); - } catch (UnsupportedCharsetException uce) { - // success - } + return Stream.of( + Arguments.of("US-ASCII", + new String[] {"ascii","ANSI_X3.4-1968", + "iso-ir-6","ANSI_X3.4-1986", "ISO_646.irv:1991", + "ASCII", "ISO646-US","us","IBM367","cp367", + "csASCII"}), + + Arguments.of("UTF-8", + new String[] { + "UTF8", + "unicode-1-1-utf-8" + }), + + Arguments.of("UTF-16", + new String[] { + "UTF_16", + "utf16" + }), + + Arguments.of("UTF-16BE", + new String[] { + "UTF_16BE", + "ISO-10646-UCS-2", + "X-UTF-16BE", + "UnicodeBigUnmarked" + }), + + Arguments.of("UTF-16LE", + new String[] { + "UTF_16LE", + "X-UTF-16LE", + "UnicodeLittleUnmarked" + }), + + Arguments.of("Big5", + new String[] { + "csBig5" + }), + + Arguments.of("Big5-HKSCS", + new String[] { + "Big5_HKSCS", + "big5hk", + "big5-hkscs", + "big5hkscs" + }), + + Arguments.of("x-MS950-HKSCS", + new String[] { + "MS950_HKSCS" + }), + + Arguments.of("GB18030", + "2000".equals(System.getProperty("jdk.charset.GB18030")) ? + new String[] { + "gb18030-2000" + } : + new String[] { + "gb18030-2022" + }), + + Arguments.of("ISO-2022-KR", new String[] {"csISO2022KR"}), + Arguments.of("ISO-2022-JP", new String[] {"csISO2022JP"}), + Arguments.of("EUC-KR", new String[] { "csEUCKR"}), + Arguments.of("ISO-8859-1", + new String[] { + + // IANA aliases + "iso-ir-100", + "ISO_8859-1", + "latin1", + "l1", + "IBM819", + "cp819", + "csISOLatin1", + + // JDK historical aliases + "819", + "IBM-819", + "ISO8859_1", + "ISO_8859-1:1987", + "ISO_8859_1", + "8859_1", + "ISO8859-1", + + }), + + Arguments.of("ISO-8859-2", + new String[] { + "ISO_8859-2", + "ISO_8859-2:1987", + "iso-ir-101", + "latin2", + "l2", + "8859_2", + "iso_8859-2:1987", + "iso8859-2", + "ibm912", + "ibm-912", + "cp912", + "912", + "csISOLatin2"}), + + Arguments.of("ISO-8859-3", + new String[] {"latin3", + "ISO_8859-3:1988", + "iso-ir-109", + "l3", + "8859_3", + "iso_8859-3:1988", + "iso8859-3", + "ibm913", + "ibm-913", + "cp913", + "913", + "csISOLatin3"}), + + Arguments.of("ISO-8859-4", + new String[] {"csISOLatin4", + "ISO_8859-4:1988", + "iso-ir-110", + "latin4", + "8859_4", + "iso_8859-4:1988", + "iso8859-4", + "ibm914", + "ibm-914", + "cp914", + "914", + "l4"}), + + Arguments.of("ISO-8859-5", + new String[] { + "iso8859_5", // JDK historical + "8859_5", + "iso-ir-144", + "ISO_8859-5", + "ISO_8859-5:1988", + "ISO8859-5", + "cyrillic", + "ibm915", + "ibm-915", + "915", + "cp915", + "csISOLatinCyrillic" + }), + + Arguments.of("ISO-8859-6", + new String[] {"ISO_8859-6:1987", + "iso-ir-127", + "ISO_8859-6", + "ECMA-114", + "ASMO-708", + "arabic", + "8859_6", + "iso_8859-6:1987", + "iso8859-6", + "ibm1089", + "ibm-1089", + "cp1089", + "1089", + "csISOLatinArabic"}), + + Arguments.of("ISO-8859-7", + new String[] {"ISO_8859-7:1987", + "iso-ir-126", + "ISO_8859-7", + "ELOT_928", + "ECMA-118", + "greek", + "greek8", + "8859_7", + "iso_8859-7:1987", + "iso8859-7", + "ibm813", + "ibm-813", + "cp813", + "813", + "csISOLatinGreek"}), + + Arguments.of("ISO-8859-8", + new String[] { + "ISO_8859-8:1988", + "iso-ir-138", + "ISO_8859-8", + "hebrew", + "8859_8", + "iso_8859-8:1988", + "iso8859-8", + "ibm916", + "ibm-916", + "cp916", + "916", + "csISOLatinHebrew"}), + + Arguments.of("ISO-8859-9", + new String[] {"ISO_8859-9:1989", + "iso-ir-148", + "ISO_8859-9", + "latin5", + "l5", + "8859_9", + "iso8859-9", + "ibm920", + "ibm-920", + "cp920", + "920", + "csISOLatin5"}), + + Arguments.of("ISO-8859-13", + new String[] { + "iso8859_13", // JDK historical + "iso_8859-13", + "8859_13", + "ISO8859-13" + }), + + Arguments.of("ISO-8859-15", + new String[] { + // IANA alias + "ISO_8859-15", + "Latin-9", + "csISO885915", + // JDK historical aliases + "8859_15", + "ISO-8859-15", + "ISO_8859-15", + "ISO8859-15", + "ISO8859_15", + "IBM923", + "IBM-923", + "cp923", + "923", + "LATIN0", + "LATIN9", + "L9", + "csISOlatin0", + "csISOlatin9", + "ISO8859_15_FDIS" + }), + + Arguments.of("ISO-8859-16", + new String[] { + "iso-ir-226", + "ISO_8859-16:2001", + "ISO_8859-16", + "ISO8859_16", + "latin10", + "l10", + "csISO885916" + }), + + Arguments.of("JIS_X0212-1990", + new String[] { + "iso-ir-159", + "csISO159JISX02121990"}), + + Arguments.of("JIS_X0201", + new String[]{ + "X0201", + "csHalfWidthKatakana"}), + + Arguments.of("KOI8-R", + new String[] { + "KOI8_R", + "csKOI8R"}), + + Arguments.of("GBK", + new String[] { + "windows-936"}), + + Arguments.of("Shift_JIS", + new String[] { + "MS_Kanji", + "csShiftJIS"}), + + Arguments.of("EUC-JP", + new String[] { + "Extended_UNIX_Code_Packed_Format_for_Japanese", + "csEUCPkdFmtJapanese"}), + + Arguments.of("Big5", new String[] {"csBig5"}), + + Arguments.of("windows-31j", new String[] {"csWindows31J"}), + + Arguments.of("x-iso-8859-11", + new String[] { "iso-8859-11", "iso8859_11" }), + + Arguments.of("windows-1250", + new String[] { + "cp1250", + "cp5346" + }), + + Arguments.of("windows-1251", + new String[] { + "cp1251", + "cp5347", + "ansi-1251" + }), + + Arguments.of("windows-1252", + new String[] { + "cp1252", + "cp5348" + }), + + Arguments.of("windows-1253", + new String[] { + "cp1253", + "cp5349" + }), + + Arguments.of("windows-1254", + new String[] { + "cp1254", + "cp5350" + }), + + Arguments.of("windows-1255", + new String[] { + "cp1255" + }), + + Arguments.of("windows-1256", + new String[] { + "cp1256" + }), + + Arguments.of("windows-1257", + new String[] { + "cp1257", + "cp5353" + }), + + Arguments.of("windows-1258", + new String[] { + "cp1258" + }), + + Arguments.of("x-windows-874", + new String[] { + "ms874", "ms-874", "windows-874" }), + + Arguments.of("GB2312", + new String[] { + "x-EUC-CN", + "gb2312-80", + "gb2312-1980", + "euc-cn", + "euccn" }), + + Arguments.of("x-IBM942" , + new String[] { + "cp942", // JDK historical + "ibm942", + "ibm-942", + "942" + }), + + Arguments.of("x-IBM942C" , + new String[] { + "cp942C", // JDK historical + "ibm942C", + "ibm-942C", + "942C" + } ), + + Arguments.of("x-IBM943" , + new String[] { + "cp943", // JDK historical + "ibm943", + "ibm-943", + "943" + } ), + + Arguments.of("x-IBM943C" , + new String[] { + "cp943c", // JDK historical + "ibm943C", + "ibm-943C", + "943C" + } ), + + Arguments.of("x-IBM948" , + new String[] { + "cp948", // JDK historical + "ibm948", + "ibm-948", + "948" + } ), + + Arguments.of("x-IBM950" , + new String[] { + "cp950", // JDK historical + "ibm950", + "ibm-950", + "950" + } ), + + Arguments.of("x-IBM930" , + new String[] { + "cp930", // JDK historical + "ibm930", + "ibm-930", + "930" + } ), + + Arguments.of("x-IBM935" , + new String[] { + "cp935", // JDK historical + "ibm935", + "ibm-935", + "935" + } ), + + Arguments.of("x-IBM937" , + new String[] { + "cp937", // JDK historical + "ibm937", + "ibm-937", + "937" + } ), + + Arguments.of("IBM850" , + new String[] { + "cp850", // JDK historical + "ibm-850", + "ibm850", + "850", + "cspc850multilingual" + } ), + + Arguments.of("IBM852" , + new String[] { + "cp852", // JDK historical + "ibm852", + "ibm-852", + "852", + "csPCp852" + } ), + + Arguments.of("IBM855" , + new String[] { + "cp855", // JDK historical + "ibm-855", + "ibm855", + "855", + "cspcp855" + } ), + + Arguments.of("x-IBM856" , + new String[] { + "cp856", // JDK historical + "ibm-856", + "ibm856", + "856" + } ), + + Arguments.of("IBM857" , + new String[] { + "cp857", // JDK historical + "ibm857", + "ibm-857", + "857", + "csIBM857" + } ), + + Arguments.of("IBM860" , + new String[] { + "cp860", // JDK historical + "ibm860", + "ibm-860", + "860", + "csIBM860" + } ), + Arguments.of("IBM861" , + new String[] { + "cp861", // JDK historical + "ibm861", + "ibm-861", + "861", + "csIBM861" + } ), + + Arguments.of("IBM862" , + new String[] { + "cp862", // JDK historical + "ibm862", + "ibm-862", + "862", + "csIBM862" + } ), + + Arguments.of("IBM863" , + new String[] { + "cp863", // JDK historical + "ibm863", + "ibm-863", + "863", + "csIBM863" + } ), + + Arguments.of("IBM864" , + new String[] { + "cp864", // JDK historical + "ibm864", + "ibm-864", + "864", + "csIBM864" + } ), + + Arguments.of("IBM865" , + new String[] { + "cp865", // JDK historical + "ibm865", + "ibm-865", + "865", + "csIBM865" + } ), + + Arguments.of("IBM866" , new String[] { + "cp866", // JDK historical + "ibm866", + "ibm-866", + "866", + "csIBM866" + } ), + Arguments.of("IBM868" , + new String[] { + "cp868", // JDK historical + "ibm868", + "ibm-868", + "868", + "cp-ar", + "csIBM868" + } ), + + Arguments.of("IBM869" , + new String[] { + "cp869", // JDK historical + "ibm869", + "ibm-869", + "869", + "cp-gr", + "csIBM869" + } ), + + Arguments.of("IBM437" , + new String[] { + "cp437", // JDK historical + "ibm437", + "ibm-437", + "437", + "cspc8codepage437", + "windows-437" + } ), + + Arguments.of("x-IBM874" , + new String[] { + "cp874", // JDK historical + "ibm874", + "ibm-874", + "874" + } ), + Arguments.of("x-IBM737" , + new String[] { + "cp737", // JDK historical + "ibm737", + "ibm-737", + "737" + } ), + + Arguments.of("IBM775" , + new String[] { + "cp775", // JDK historical + "ibm775", + "ibm-775", + "775" + } ), + + Arguments.of("x-IBM921" , + new String[] { + "cp921", // JDK historical + "ibm921", + "ibm-921", + "921" + } ), + + Arguments.of("x-IBM1006" , + new String[] { + "cp1006", // JDK historical + "ibm1006", + "ibm-1006", + "1006" + } ), + + Arguments.of("x-IBM1046" , + new String[] { + "cp1046", // JDK historical + "ibm1046", + "ibm-1046", + "1046" + } ), + + Arguments.of("IBM1047" , + new String[] { + "cp1047", // JDK historical + "ibm-1047", + "1047" + } ), + + Arguments.of("x-IBM1098" , + new String[] { + "cp1098", // JDK historical + "ibm1098", + "ibm-1098", + "1098", + } ), + + Arguments.of("IBM037" , + new String[] { + "cp037", // JDK historical + "ibm037", + "csIBM037", + "cs-ebcdic-cp-us", + "cs-ebcdic-cp-ca", + "cs-ebcdic-cp-wt", + "cs-ebcdic-cp-nl", + "ibm-037", + "ibm-37", + "cpibm37", + "037" + } ), + + Arguments.of("x-IBM1025" , + new String[] { + "cp1025", // JDK historical + "ibm1025", + "ibm-1025", + "1025" + } ), + + Arguments.of("IBM1026" , + new String[] { + "cp1026", // JDK historical + "ibm1026", + "ibm-1026", + "1026" + } ), + + Arguments.of("x-IBM1112" , + new String[] { + "cp1112", // JDK historical + "ibm1112", + "ibm-1112", + "1112" + } ), + + Arguments.of("x-IBM1122" , + new String[] { + "cp1122", // JDK historical + "ibm1122", + "ibm-1122", + "1122" + } ), + + Arguments.of("x-IBM1123" , + new String[] { + "cp1123", // JDK historical + "ibm1123", + "ibm-1123", + "1123" + } ), + + Arguments.of("x-IBM1124" , + new String[] { + "cp1124", // JDK historical + "ibm1124", + "ibm-1124", + "1124" + } ), + + Arguments.of("x-IBM1129" , + new String[] { + "cp1129", // JDK historical + "ibm1129", + "ibm-1129", + "1129" + } ), + + Arguments.of("x-IBM1166" , + new String[] { + "cp1166", // JDK historical + "ibm1166", + "ibm-1166", + "1166" + } ), + + Arguments.of("IBM273" , + new String[] { + "cp273", // JDK historical + "ibm273", + "ibm-273", + "273" + } ), + + Arguments.of("IBM277" , + new String[] { + "cp277", // JDK historical + "ibm277", + "ibm-277", + "277" + } ), + + Arguments.of("IBM278" , + new String[] { + "cp278", // JDK historical + "ibm278", + "ibm-278", + "278", + "ebcdic-sv", + "ebcdic-cp-se", + "csIBM278" + } ), + + Arguments.of("IBM280" , + new String[] { + "cp280", // JDK historical + "ibm280", + "ibm-280", + "280" + } ), + + Arguments.of("IBM284" , + new String[] { + "cp284", // JDK historical + "ibm284", + "ibm-284", + "284", + "csIBM284", + "cpibm284" + } ), + + Arguments.of("IBM285" , + new String[] { + "cp285", // JDK historical + "ibm285", + "ibm-285", + "285", + "ebcdic-cp-gb", + "ebcdic-gb", + "csIBM285", + "cpibm285" + } ), + + Arguments.of("IBM297" , + new String[] { + "cp297", // JDK historical + "ibm297", + "ibm-297", + "297", + "ebcdic-cp-fr", + "cpibm297", + "csIBM297", + } ), + + Arguments.of("IBM420" , + new String[] { + "cp420", // JDK historical + "ibm420", + "ibm-420", + "ebcdic-cp-ar1", + "420", + "csIBM420" + } ), + + Arguments.of("IBM424" , + new String[] { + "cp424", // JDK historical + "ibm424", + "ibm-424", + "424", + "ebcdic-cp-he", + "csIBM424" + } ), + + Arguments.of("IBM500" , + new String[] { + "cp500", // JDK historical + "ibm500", + "ibm-500", + "500", + "ebcdic-cp-ch", + "ebcdic-cp-bh", + "csIBM500" + } ), + + Arguments.of("IBM-Thai" , + new String[] { + "cp838", // JDK historical + "ibm838", + "ibm-838", + "ibm838", + "838" + } ), + + Arguments.of("IBM870" , + new String[] { + "cp870", // JDK historical + "ibm870", + "ibm-870", + "870", + "ebcdic-cp-roece", + "ebcdic-cp-yu", + "csIBM870" + } ), + + Arguments.of("IBM871" , + new String[] { + "cp871", // JDK historical + "ibm871", + "ibm-871", + "871", + "ebcdic-cp-is", + "csIBM871" + } ), + + Arguments.of("x-IBM875" , + new String[] { + "cp875", // JDK historical + "ibm875", + "ibm-875", + "875" + } ), + + Arguments.of("IBM918" , + new String[] { + "cp918", // JDK historical + "ibm-918", + "918", + "ebcdic-cp-ar2" + } ), + + Arguments.of("x-IBM922" , + new String[] { + "cp922", // JDK historical + "ibm922", + "ibm-922", + "922" + } ), + + Arguments.of("x-IBM1097" , + new String[] { + "cp1097", // JDK historical + "ibm1097", + "ibm-1097", + "1097" + } ), + + Arguments.of("x-IBM949" , + new String[] { + "cp949", // JDK historical + "ibm949", + "ibm-949", + "949" + } ), + + Arguments.of("x-IBM949C" , + new String[] { + "cp949C", // JDK historical + "ibm949C", + "ibm-949C", + "949C" + } ), + + Arguments.of("x-IBM939" , + new String[] { + "cp939", // JDK historical + "ibm939", + "ibm-939", + "939" + } ), + + Arguments.of("x-IBM933" , + new String[] { + "cp933", // JDK historical + "ibm933", + "ibm-933", + "933" + } ), + + Arguments.of("x-IBM1381" , + new String[] { + "cp1381", // JDK historical + "ibm1381", + "ibm-1381", + "1381" + } ), + + Arguments.of("x-IBM1383" , + new String[] { + "cp1383", // JDK historical + "ibm1383", + "ibm-1383", + "1383" + } ), + + Arguments.of("x-IBM970" , + new String[] { + "cp970", // JDK historical + "ibm970", + "ibm-970", + "ibm-eucKR", + "970" + } ), + + Arguments.of("x-IBM964" , + new String[] { + "cp964", // JDK historical + "ibm964", + "ibm-964", + "964" + } ), + + Arguments.of("x-IBM33722" , + new String[] { + "cp33722", // JDK historical + "ibm33722", + "ibm-33722", + "ibm-5050", // from IBM alias list + "ibm-33722_vascii_vpua", // from IBM alias list + "33722" + } ), + + Arguments.of("IBM01140" , + new String[] { + "cp1140", // JDK historical + "ccsid01140", + "cp01140", + // "ebcdic-us-037+euro" + } ), + + Arguments.of("IBM01141" , + new String[] { + "cp1141", // JDK historical + "ccsid01141", + "cp01141", + // "ebcdic-de-273+euro" + } ), + + Arguments.of("IBM01142" , + new String[] { + "cp1142", // JDK historical + "ccsid01142", + "cp01142", + // "ebcdic-no-277+euro", + // "ebcdic-dk-277+euro" + } ), + + Arguments.of("IBM01143" , + new String[] { + "cp1143", // JDK historical + "ccsid01143", + "cp01143", + // "ebcdic-fi-278+euro", + // "ebcdic-se-278+euro" + } ), + + Arguments.of("IBM01144" , + new String[] { + "cp1144", // JDK historical + "ccsid01144", + "cp01144", + // "ebcdic-it-280+euro" + } ), + + Arguments.of("IBM01145" , + new String[] { + "cp1145", // JDK historical + "ccsid01145", + "cp01145", + // "ebcdic-es-284+euro" + } ), + + Arguments.of("IBM01146" , + new String[] { + "cp1146", // JDK historical + "ccsid01146", + "cp01146", + // "ebcdic-gb-285+euro" + } ), + + Arguments.of("IBM01147" , + new String[] { + "cp1147", // JDK historical + "ccsid01147", + "cp01147", + // "ebcdic-fr-277+euro" + } ), + + Arguments.of("IBM01148" , + new String[] { + "cp1148", // JDK historical + "ccsid01148", + "cp01148", + // "ebcdic-international-500+euro" + } ), + + Arguments.of("IBM01149" , + new String[] { + "cp1149", // JDK historical + "ccsid01149", + "cp01149", + // "ebcdic-s-871+euro" + } ), + + Arguments.of("IBM00858" , + new String[] { + "cp858", // JDK historical + "ccsid00858", + "cp00858", + // "PC-Multilingual-850+euro" + } ), + + Arguments.of("x-MacRoman", + new String[] { + "MacRoman" // JDK historical + }), + + Arguments.of("x-MacCentralEurope", + new String[] { + "MacCentralEurope" // JDK historical + }), + + Arguments.of("x-MacCroatian", + new String[] { + "MacCroatian" // JDK historical + }), + + + Arguments.of("x-MacCroatian", + new String[] { + "MacCroatian" // JDK historical + }), + + + Arguments.of("x-MacGreek", + new String[] { + "MacGreek" // JDK historical + }), + + Arguments.of("x-MacCyrillic", + new String[] { + "MacCyrillic" // JDK historical + }), + + Arguments.of("x-MacUkraine", + new String[] { + "MacUkraine" // JDK historical + }), + + Arguments.of("x-MacTurkish", + new String[] { + "MacTurkish" // JDK historical + }), + + Arguments.of("x-MacArabic", + new String[] { + "MacArabic" // JDK historical + }), + + Arguments.of("x-MacHebrew", + new String[] { + "MacHebrew" // JDK historical + }), + + Arguments.of("x-MacIceland", + new String[] { + "MacIceland" // JDK historical + }), + + Arguments.of("x-MacRomania", + new String[] { + "MacRomania" // JDK historical + }), + + Arguments.of("x-MacThai", + new String[] { + "MacThai" // JDK historical + }), + + Arguments.of("x-MacSymbol", + new String[] { + "MacSymbol" // JDK historical + }), + + Arguments.of("x-MacDingbat", + new String[] { + "MacDingbat" // JDK historical + }) + ); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/nio/file/Files/ReadWriteString.java openjdk-21-21.0.10+7/test/jdk/java/nio/file/Files/ReadWriteString.java --- openjdk-21-21.0.9+10/test/jdk/java/nio/file/Files/ReadWriteString.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/nio/file/Files/ReadWriteString.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,8 +29,10 @@ import java.nio.charset.UnmappableCharacterException; import static java.nio.charset.StandardCharsets.ISO_8859_1; import static java.nio.charset.StandardCharsets.US_ASCII; -import static java.nio.charset.StandardCharsets.UTF_16; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.nio.charset.StandardCharsets.UTF_16; +import static java.nio.charset.StandardCharsets.UTF_16BE; +import static java.nio.charset.StandardCharsets.UTF_16LE; import java.nio.file.Files; import java.nio.file.OpenOption; import java.nio.file.Path; @@ -40,15 +42,15 @@ import java.util.Arrays; import java.util.Random; import java.util.concurrent.Callable; +import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; -import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /* @test - * @bug 8201276 8205058 8209576 8287541 8288589 + * @bug 8201276 8205058 8209576 8287541 8288589 8325590 * @build ReadWriteString PassThroughFileSystem * @run testng ReadWriteString * @summary Unit test for methods for Files readString and write methods. @@ -61,10 +63,15 @@ // data for text files final String TEXT_UNICODE = "\u201CHello\u201D"; final String TEXT_ASCII = "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n abcdefghijklmnopqrstuvwxyz\n 1234567890\n"; + final static String TEXT_PERSON_CART_WHEELING = "\ud83e\udd38"; private static final String JA_STRING = "\u65e5\u672c\u8a9e\u6587\u5b57\u5217"; private static final Charset WINDOWS_1252 = Charset.forName("windows-1252"); private static final Charset WINDOWS_31J = Charset.forName("windows-31j"); + private static final Charset UTF_32 = Charset.forName("utf-32"); + private static final Charset UTF_32BE = Charset.forName("utf-32be"); + private static final Charset UTF_32LE = Charset.forName("utf-32le"); + static byte[] data = getData(); static byte[] getData() { @@ -154,7 +161,16 @@ {testFiles[1], TEXT_ASCII, US_ASCII, US_ASCII}, {testFiles[1], TEXT_ASCII, US_ASCII, UTF_8}, {testFiles[1], TEXT_UNICODE, UTF_8, null}, - {testFiles[1], TEXT_UNICODE, UTF_8, UTF_8} + {testFiles[1], TEXT_UNICODE, UTF_8, UTF_8}, + {testFiles[1], TEXT_ASCII, US_ASCII, ISO_8859_1}, + {testFiles[1], TEXT_PERSON_CART_WHEELING, UTF_16, UTF_16}, + {testFiles[1], TEXT_PERSON_CART_WHEELING, UTF_16BE, UTF_16BE}, + {testFiles[1], TEXT_PERSON_CART_WHEELING, UTF_16LE, UTF_16LE}, + {testFiles[1], TEXT_PERSON_CART_WHEELING, UTF_32, UTF_32}, + {testFiles[1], TEXT_PERSON_CART_WHEELING, UTF_32BE, UTF_32BE}, + {testFiles[1], TEXT_PERSON_CART_WHEELING, UTF_32LE, UTF_32LE}, + {testFiles[1], TEXT_PERSON_CART_WHEELING, WINDOWS_1252, WINDOWS_1252}, + {testFiles[1], TEXT_PERSON_CART_WHEELING, WINDOWS_31J, WINDOWS_31J} }; } @@ -304,6 +320,21 @@ throw new RuntimeException("An instance of " + expected + " should be thrown"); } + // Verify File.readString with UTF16 to confirm proper string length and contents. + // A regression test for 8325590 + @Test + public void testSingleUTF16() throws IOException { + String original = "🤸"; // "\ud83e\udd38"; + Files.writeString(testFiles[0], original, UTF_16); + String actual = Files.readString(testFiles[0], UTF_16); + if (!actual.equals(original)) { + System.out.printf("expected (%s), was (%s)\n", original, actual); + System.out.printf("expected UTF_16 bytes: %s\n", Arrays.toString(original.getBytes(UTF_16))); + System.out.printf("actual UTF_16 bytes: %s\n", Arrays.toString(actual.getBytes(UTF_16))); + } + assertEquals(actual, original, "Round trip string mismatch with multi-byte encoding"); + } + private void checkNullPointerException(Callable c) { try { c.call(); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java openjdk-21-21.0.10+7/test/jdk/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java --- openjdk-21-21.0.9+10/test/jdk/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -54,12 +54,11 @@ import java.rmi.*; import java.rmi.server.*; -import sun.rmi.transport.*; -import sun.rmi.*; import java.util.Map; import java.io.*; import java.lang.reflect.*; import java.rmi.registry.*; +import sun.rmi.transport.*; public class CheckLeaseLeak extends UnicastRemoteObject implements LeaseLeak { public CheckLeaseLeak() throws RemoteException { } @@ -102,8 +101,6 @@ System.err.println("Created client: " + i); JavaVM jvm = new JavaVM("LeaseLeakClient", - " -Djava.security.policy=" + - TestParams.defaultPolicy + " -Drmi.registry.port=" + registryPort, ""); @@ -128,8 +125,8 @@ } } - /* numLeft should be 2 - if 11 there is a problem. */ - if (numLeft > 2) { + /* numLeft should be 4 - if 11 there is a problem. */ + if (numLeft > 4) { TestLibrary.bomb("Too many objects in DGCImpl.leaseTable: "+ numLeft); } else { @@ -156,57 +153,51 @@ Field f; try { - f = (Field) java.security.AccessController.doPrivileged - (new java.security.PrivilegedExceptionAction() { - public Object run() throws Exception { - - ObjID dgcID = new ObjID(DGC_ID); - - /* - * Construct an ObjectEndpoint containing DGC's - * ObjID. - */ - Class oeClass = - Class.forName("sun.rmi.transport.ObjectEndpoint"); - Class[] constrParams = - new Class[]{ ObjID.class, Transport.class }; - Constructor oeConstructor = - oeClass.getDeclaredConstructor(constrParams); - oeConstructor.setAccessible(true); - Object oe = - oeConstructor.newInstance( - new Object[]{ dgcID, null }); - - /* - * Get Target that contains DGCImpl in ObjectTable - */ - Class objTableClass = - Class.forName("sun.rmi.transport.ObjectTable"); - Class getTargetParams[] = new Class[] { oeClass }; - Method objTableGetTarget = - objTableClass.getDeclaredMethod("getTarget", - getTargetParams); - objTableGetTarget.setAccessible(true); - Target dgcTarget = (Target) - objTableGetTarget.invoke(null, new Object[]{ oe }); - - /* get the DGCImpl from its Target */ - Method targetGetImpl = - dgcTarget.getClass().getDeclaredMethod + ObjID dgcID = new ObjID(DGC_ID); + /* + * Construct an ObjectEndpoint containing DGC's + * ObjID. + */ + Class oeClass = + Class.forName("sun.rmi.transport.ObjectEndpoint"); + Class[] constrParams = + new Class[]{ ObjID.class, Transport.class }; + Constructor oeConstructor = + oeClass.getDeclaredConstructor(constrParams); + oeConstructor.setAccessible(true); + Object oe = + oeConstructor.newInstance( + new Object[]{ dgcID, null }); + + /* + * Get Target that contains DGCImpl in ObjectTable + */ + Class objTableClass = + Class.forName("sun.rmi.transport.ObjectTable"); + Class getTargetParams[] = new Class[] { oeClass }; + Method objTableGetTarget = + objTableClass.getDeclaredMethod("getTarget", + getTargetParams); + objTableGetTarget.setAccessible(true); + Target dgcTarget = (Target) + objTableGetTarget.invoke(null, new Object[]{ oe }); + + /* get the DGCImpl from its Target */ + Method targetGetImpl = + dgcTarget.getClass().getDeclaredMethod ("getImpl", null); - targetGetImpl.setAccessible(true); - dgcImpl[0] = - (Remote) targetGetImpl.invoke(dgcTarget, null); - - /* Get the lease table from the DGCImpl. */ - Field reflectedLeaseTable = - dgcImpl[0].getClass().getDeclaredField + targetGetImpl.setAccessible(true); + dgcImpl[0] = + (Remote) targetGetImpl.invoke(dgcTarget, null); + + /* Get the lease table from the DGCImpl. */ + Field reflectedLeaseTable = + dgcImpl[0].getClass().getDeclaredField ("leaseTable"); - reflectedLeaseTable.setAccessible(true); + reflectedLeaseTable.setAccessible(true); + + f = reflectedLeaseTable; - return reflectedLeaseTable; - } - }); /** * This is the leaseTable that will fill up with LeaseInfo @@ -217,9 +208,6 @@ numLeaseInfosLeft = leaseTable.size(); } catch(Exception e) { - if (e instanceof java.security.PrivilegedActionException) - e = ((java.security.PrivilegedActionException) e). - getException(); TestLibrary.bomb(e); } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java openjdk-21-21.0.10+7/test/jdk/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java --- openjdk-21-21.0.9+10/test/jdk/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,7 +27,6 @@ public class LeaseLeakClient { public static void main(String args[]) { - TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); try { LeaseLeak leaseLeak = null; diff -Nru openjdk-21-21.0.9+10/test/jdk/java/security/Security/SecurityPropFile/TEST.properties openjdk-21-21.0.10+7/test/jdk/java/security/Security/SecurityPropFile/TEST.properties --- openjdk-21-21.0.9+10/test/jdk/java/security/Security/SecurityPropFile/TEST.properties 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/security/Security/SecurityPropFile/TEST.properties 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -# disabled till JDK-8219408 is fixed -allowSmartActionArgs=false diff -Nru openjdk-21-21.0.9+10/test/jdk/java/text/Format/ChoiceFormat/ParseTest.java openjdk-21-21.0.10+7/test/jdk/java/text/Format/ChoiceFormat/ParseTest.java --- openjdk-21-21.0.9+10/test/jdk/java/text/Format/ChoiceFormat/ParseTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/text/Format/ChoiceFormat/ParseTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8353585 + * @summary Basic parse tests. Enforce regular behavior, no match, and multi match. + * @run junit ParseTest + */ + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.text.ChoiceFormat; +import java.text.ParsePosition; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ParseTest { + + // Ensure that the parsed text produces the expected number + // i.e. return limit corresponding to format matched + @ParameterizedTest + @MethodSource + void parseTest(String pattern, String text, Double expected, int index) { + var pp = new ParsePosition(index); + var fmt = new ChoiceFormat(pattern); + assertEquals(expected, fmt.parse(text, pp), "Incorrect limit returned"); + if (expected.equals(Double.NaN)) { // AKA failed parse + assertEquals(index, pp.getErrorIndex(), + "Failed parse produced incorrect error index"); + } else { + assertEquals(-1, pp.getErrorIndex(), + "Error index should remain -1 on match"); + } + } + + private static Stream parseTest() { + return Stream.of( + Arguments.of("1#foo", "foo", Double.NaN, -1), + Arguments.of("1#baz", "foo bar baz", Double.NaN, 20), + Arguments.of("1#baz", "foo bar baz", 1d, 8), + Arguments.of("1#baz", "foo baz quux", Double.NaN, 8), + Arguments.of("1#a", "", Double.NaN, 0), + Arguments.of("1#a", "a", 1d, 0), + Arguments.of("1# ", " ", 1d, 0), + Arguments.of("1#a|2#a", "a", 1d, 0), + Arguments.of("1#a|2#aa", "aa", 2d, 0), + Arguments.of("1#a|2#aa", "aabb", 2d, 0), + Arguments.of("1#a|2#aa", "bbaa", Double.NaN, 0), + Arguments.of("1#aa|2#aaa", "a", Double.NaN, 0) + ); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/text/Format/DateFormat/DateFormatRegression.java openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/DateFormatRegression.java --- openjdk-21-21.0.9+10/test/jdk/java/text/Format/DateFormat/DateFormatRegression.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/DateFormatRegression.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,7 +34,7 @@ * @bug 4029195 4052408 4056591 4059917 4060212 4061287 4065240 4071441 4073003 * 4089106 4100302 4101483 4103340 4103341 4104136 4104522 4106807 4108407 * 4134203 4138203 4148168 4151631 4151706 4153860 4162071 4182066 4209272 4210209 - * 4213086 4250359 4253490 4266432 4406615 4413980 8008577 8305853 + * 4213086 4250359 4253490 4266432 4406615 4413980 8008577 8305853 8347841 * @library /java/text/testlib * @run junit/othervm -Djava.locale.providers=COMPAT,SPI DateFormatRegression */ @@ -274,7 +274,7 @@ try { Locale curLocale = Locale.GERMANY; Locale.setDefault(curLocale); - TimeZone.setDefault(TimeZone.getTimeZone("EST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Panama")); curDate = new Date(98, 0, 1); shortdate = DateFormat.getDateInstance(DateFormat.SHORT); fulldate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG @@ -453,7 +453,7 @@ TimeZone savedTimeZone = TimeZone.getDefault(); try { boolean pass = true; - String[] IDs = new String[] {"Undefined", "PST", "US/Pacific", + String[] IDs = new String[] {"Undefined", "America/Los_Angeles", "US/Pacific", "GMT+3:00", "GMT-01:30"}; for (int i = 0; i < IDs.length; i++) { TimeZone tz = TimeZone.getTimeZone(IDs[i]); @@ -543,7 +543,7 @@ public void Test4103341() { TimeZone saveZone =TimeZone.getDefault(); try { - TimeZone.setDefault(TimeZone.getTimeZone("CST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Chicago")); SimpleDateFormat simple = new SimpleDateFormat("MM/dd/yyyy HH:mm"); if (!simple.getTimeZone().equals(TimeZone.getDefault())) fail("Fail: SimpleDateFormat not using default zone"); @@ -794,7 +794,7 @@ Locale savedLocale = Locale.getDefault(); TimeZone savedTimeZone = TimeZone.getDefault(); Locale.setDefault(Locale.US); - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); Date d1, d2; String dt = "Mon, 1 Jan 2001 00:00:00"; @@ -1096,7 +1096,7 @@ // XXX: Test assumes "PST" is not TimeZoneNames_ja. Need to // pick up another time zone when L10N is done to that file. - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); SimpleDateFormat fmt = new SimpleDateFormat("yy/MM/dd hh:ss zzz", Locale.JAPAN); @SuppressWarnings("deprecation") String result = fmt.format(new Date(1999 - 1900, 0, 1)); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/text/Format/DateFormat/DateFormatTest.java openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/DateFormatTest.java --- openjdk-21-21.0.9+10/test/jdk/java/text/Format/DateFormat/DateFormatTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/DateFormatTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,14 +24,16 @@ /** * @test * @bug 4052223 4089987 4469904 4326988 4486735 8008577 8045998 8140571 - * 8190748 8216969 + * 8190748 8216969 8347841 * @summary test DateFormat and SimpleDateFormat. * @modules jdk.localedata * @run junit/othervm -Djava.locale.providers=COMPAT,SPI DateFormatTest */ -import java.util.*; +import java.time.ZoneId; import java.text.*; +import java.util.*; +import java.util.function.Predicate; import static java.util.GregorianCalendar.*; import org.junit.jupiter.api.Test; @@ -89,7 +91,9 @@ /* * A String array for the time zone ids. */ - String[] ids = TimeZone.getAvailableIDs(); + String[] ids = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); /* * How many ids do we have? */ @@ -179,7 +183,7 @@ //logln(fmt.format(date)); // This shows what the current locale format is //logln(((SimpleDateFormat)fmt).toPattern()); TimeZone save = TimeZone.getDefault(); - TimeZone PST = TimeZone.getTimeZone("PST"); + TimeZone PST = TimeZone.getTimeZone("America/Los_Angeles"); String s = "03-Apr-04 2:20:47 o'clock AM PST"; int hour = 2; try { @@ -271,7 +275,7 @@ "0034", "0012", "0513", "Pacific Daylight Time", }; Date someDate = new Date(871508052513L); - TimeZone PST = TimeZone.getTimeZone("PST"); + TimeZone PST = TimeZone.getTimeZone("America/Los_Angeles"); for (int j = 0, exp = 0; j < dateFormats.length; ++j) { DateFormat df = dateFormats[j]; if (!(df instanceof SimpleDateFormat)) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/text/Format/DateFormat/SDFTCKZoneNamesTest.java openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/SDFTCKZoneNamesTest.java --- openjdk-21-21.0.9+10/test/jdk/java/text/Format/DateFormat/SDFTCKZoneNamesTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/SDFTCKZoneNamesTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,12 +23,13 @@ /** * @test - * @bug 8218948 + * @bug 8218948 8347841 * @summary TCK tests that check the time zone names between DFS.getZoneStrings() * and SDF.format("z*") * @run main SDFTCKZoneNamesTest */ import java.text.*; +import java.time.ZoneId; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -325,6 +326,9 @@ SimpleDateFormat sdf = new SimpleDateFormat(); Date date = new Date(1234567890); for (String[] tz : sdf.getDateFormatSymbols().getZoneStrings()) { + if (ZoneId.SHORT_IDS.containsKey(tz[0])) { + continue; + } sdf.setTimeZone(TimeZone.getTimeZone(tz[0])); for (int i = 0; i < patterns.length && passed; i++) { StringBuffer result = new StringBuffer("qwerty"); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/text/Format/DateFormat/bug4358730.java openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/bug4358730.java --- openjdk-21-21.0.9+10/test/jdk/java/text/Format/DateFormat/bug4358730.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/text/Format/DateFormat/bug4358730.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,7 +31,7 @@ /** * @test - * @bug 4358730 + * @bug 4358730 8347841 * @summary test that confirms Zero-Padding on year. * @run junit bug4358730 */ @@ -56,7 +56,7 @@ Locale saveLocale = Locale.getDefault(); try { - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); Locale.setDefault(Locale.US); SimpleDateFormat sdf = new SimpleDateFormat(); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Calendar/CalendarRegression.java openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/CalendarRegression.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Calendar/CalendarRegression.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/CalendarRegression.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,7 +30,7 @@ * 4174361 4177484 4197699 4209071 4288792 4328747 4413980 4546637 4623997 * 4685354 4655637 4683492 4080631 4080631 4167995 4340146 4639407 * 4652815 4652830 4740554 4936355 4738710 4633646 4846659 4822110 4960642 - * 4973919 4980088 4965624 5013094 5006864 8152077 + * 4973919 4980088 4965624 5013094 5006864 8152077 8347841 * @library /java/text/testlib * @run junit CalendarRegression */ @@ -42,6 +42,8 @@ import java.text.DateFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; +import java.time.ZoneId; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -50,6 +52,7 @@ import java.util.Map; import java.util.SimpleTimeZone; import java.util.TimeZone; +import java.util.function.Predicate; import static java.util.Calendar.*; @@ -75,7 +78,9 @@ public void Test4031502() { // This bug actually occurs on Windows NT as well, and doesn't // require the host zone to be set; it can be set in Java. - String[] ids = TimeZone.getAvailableIDs(); + String[] ids = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); boolean bad = false; for (int i = 0; i < ids.length; ++i) { TimeZone zone = TimeZone.getTimeZone(ids[i]); @@ -489,7 +494,7 @@ @Test public void Test4096231() { TimeZone GMT = TimeZone.getTimeZone("GMT"); - TimeZone PST = TimeZone.getTimeZone("PST"); + TimeZone PST = TimeZone.getTimeZone("America/Los_Angeles"); int sec = 0, min = 0, hr = 0, day = 1, month = 10, year = 1997; Calendar cal1 = new GregorianCalendar(PST); @@ -838,7 +843,7 @@ TimeZone saveZone = TimeZone.getDefault(); boolean fail = false; try { - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); Calendar cal = Calendar.getInstance(); long onset = new Date(98, APRIL, 5, 1, 0).getTime() + ONE_HOUR; long cease = new Date(98, OCTOBER, 25, 0, 0).getTime() + 2 * ONE_HOUR; @@ -1163,8 +1168,8 @@ @Test public void Test4149677() { TimeZone[] zones = {TimeZone.getTimeZone("GMT"), - TimeZone.getTimeZone("PST"), - TimeZone.getTimeZone("EAT")}; + TimeZone.getTimeZone("America/Los_Angeles"), + TimeZone.getTimeZone("Africa/Addis_Ababa")}; for (int i = 0; i < zones.length; ++i) { GregorianCalendar calendar = new GregorianCalendar(zones[i]); @@ -1197,7 +1202,7 @@ @Test public void Test4162587() { TimeZone savedTz = TimeZone.getDefault(); - TimeZone tz = TimeZone.getTimeZone("PST"); + TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); TimeZone.setDefault(tz); GregorianCalendar cal = new GregorianCalendar(tz); Date d; @@ -1511,8 +1516,8 @@ */ @Test public void Test4177484() { - TimeZone PST = TimeZone.getTimeZone("PST"); - TimeZone EST = TimeZone.getTimeZone("EST"); + TimeZone PST = TimeZone.getTimeZone("America/Los_Angeles"); + TimeZone EST = TimeZone.getTimeZone("America/Panama"); Calendar cal = Calendar.getInstance(PST, Locale.US); cal.clear(); @@ -1770,7 +1775,7 @@ TimeZone savedTimeZone = TimeZone.getDefault(); try { boolean pass = true; - String[] IDs = new String[]{"Undefined", "PST", "US/Pacific", + String[] IDs = new String[]{"Undefined", "America/Los_Angeles", "US/Pacific", "GMT+3:00", "GMT-01:30"}; for (int i = 0; i < IDs.length; i++) { TimeZone tz = TimeZone.getTimeZone(IDs[i]); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Calendar/JavatimeTest.java openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/JavatimeTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Calendar/JavatimeTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/JavatimeTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* *@test - *@bug 8007520 8008254 + *@bug 8007520 8008254 8347841 *@summary Test those bridge methods to/from java.time date/time classes * @key randomness */ @@ -107,23 +107,22 @@ ///////////// java.util.TimeZone ///////////////////////// for (String zidStr : TimeZone.getAvailableIDs()) { - // TBD: tzdt intergration + if (ZoneId.SHORT_IDS.containsKey(zidStr)) { + continue; + } + // TBD: tzdt integration if (zidStr.startsWith("SystemV") || zidStr.contains("Riyadh8") - || zidStr.equals("US/Pacific-New") - || zidStr.equals("EST") - || zidStr.equals("HST") - || zidStr.equals("MST")) { + || zidStr.equals("US/Pacific-New")) { continue; } - ZoneId zid = ZoneId.of(zidStr, ZoneId.SHORT_IDS); + ZoneId zid = ZoneId.of(zidStr); if (!zid.equals(TimeZone.getTimeZone(zid).toZoneId())) { throw new RuntimeException("FAILED: zid -> tz -> zid :" + zidStr); } TimeZone tz = TimeZone.getTimeZone(zidStr); // no round-trip for alias and "GMT" if (!tz.equals(TimeZone.getTimeZone(tz.toZoneId())) - && !ZoneId.SHORT_IDS.containsKey(zidStr) && !zidStr.startsWith("GMT")) { throw new RuntimeException("FAILED: tz -> zid -> tz :" + zidStr); } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Calendar/bug4316678.java openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/bug4316678.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Calendar/bug4316678.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/bug4316678.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 4316678 + * @bug 4316678 8347841 * @summary test that Calendar's Serialization works correctly. * @run junit bug4316678 */ @@ -53,7 +53,7 @@ // Set custom JVM default TimeZone @BeforeAll static void initAll() { - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); } // Restore JVM default Locale and TimeZone diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Calendar/bug4372743.java openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/bug4372743.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Calendar/bug4372743.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Calendar/bug4372743.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 4372743 + * @bug 4372743 8347841 * @summary test that checks transitions of ERA and YEAR which are caused by add(MONTH). * @run junit bug4372743 */ @@ -67,7 +67,7 @@ // Set custom JVM default timezone @BeforeAll static void initAll() { - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); } // Restore JVM default timezone diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Date/Bug4955000.java openjdk-21-21.0.10+7/test/jdk/java/util/Date/Bug4955000.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Date/Bug4955000.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Date/Bug4955000.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 4955000 + * @bug 4955000 8347841 * @summary Make sure that a Date and a GregorianCalendar produce the * same date/time. Both are new implementations in 1.5. */ @@ -42,7 +42,7 @@ public static void main(String[] args) { TimeZone defaultTZ = TimeZone.getDefault(); try { - TimeZone.setDefault(TimeZone.getTimeZone("NST")); + TimeZone.setDefault(TimeZone.getTimeZone("Pacific/Auckland")); GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("UTC")); // Date1025 int[] years1 = { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Date/DateRegression.java openjdk-21-21.0.10+7/test/jdk/java/util/Date/DateRegression.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Date/DateRegression.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Date/DateRegression.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,8 @@ /* * @test - * @bug 4023247 4027685 4032037 4072029 4073003 4118010 4120606 4133833 4136916 6274757 6314387 + * @bug 4023247 4027685 4032037 4072029 4073003 4118010 4120606 4133833 + * 4136916 6274757 6314387 8347841 * @run junit DateRegression */ @@ -106,7 +107,7 @@ TimeZone saveZone = TimeZone.getDefault(); try { - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); Date now = new Date(); String s = now.toString(); Date now2 = new Date(now.toString()); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Date/DateTest.java openjdk-21-21.0.10+7/test/jdk/java/util/Date/DateTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Date/DateTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Date/DateTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 4143459 + * @bug 4143459 8347841 * @summary test Date * @run junit DateTest */ @@ -56,7 +56,7 @@ d.setMonth(Calendar.JANUARY); d.setDate(1); d.setHours(6); - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); if (d.getHours() != 22) { fail("Fail: Date.setHours()/getHours() ignoring default zone"); } @@ -79,7 +79,7 @@ Date ref = new Date(883634400000L); // This is Thu Jan 1 1998 6:00 am GMT String refstr = "Jan 1 1998 6:00"; TimeZone GMT = TimeZone.getTimeZone("GMT"); - TimeZone PST = TimeZone.getTimeZone("PST"); + TimeZone PST = TimeZone.getTimeZone("America/Los_Angeles"); String[] names = { "year", "month", "date", "day of week", "hour", "offset" }; int[] GMT_EXP = { 98, Calendar.JANUARY, 1, Calendar.THURSDAY - Calendar.SUNDAY, 6, 0 }; @@ -207,7 +207,7 @@ { TimeZone save = TimeZone.getDefault(); try { - TimeZone.setDefault(TimeZone.getTimeZone("PST")); + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); Date d1=new java.util.Date(97,8,13,10,8,13); System.out.println("d = "+d1); Date d2=new java.util.Date(97,8,13,30,8,13); // 20 hours later diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Locale/UserRegionTest.java openjdk-21-21.0.10+7/test/jdk/java/util/Locale/UserRegionTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Locale/UserRegionTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Locale/UserRegionTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8342582 + * @summary Test if "user.region" system property successfully overrides + * other locale related system properties at startup + * @modules jdk.localedata + * @run junit/othervm + * -Duser.region=DE + * -Duser.language=en + * -Duser.script=Latn + * -Duser.country=US + * -Duser.variant=FOO UserRegionTest + * @run junit/othervm + * -Duser.region=DE_POSIX + * -Duser.language=en + * -Duser.script=Latn + * -Duser.country=US + * -Duser.variant=FOO UserRegionTest + * @run junit/othervm + * -Duser.region=_POSIX + * -Duser.language=en + * -Duser.script=Latn + * -Duser.country=US + * -Duser.variant=FOO UserRegionTest + */ + +import java.util.Locale; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class UserRegionTest { + @Test + public void testDefaultLocale() { + var region = System.getProperty("user.region").split("_"); + var expected = Locale.of(System.getProperty("user.language"), + region[0], region.length > 1 ? region[1] : ""); + assertEquals(expected, Locale.getDefault()); + assertEquals(expected, Locale.getDefault(Locale.Category.FORMAT)); + assertEquals(expected, Locale.getDefault(Locale.Category.DISPLAY)); + } + + @Test + public void testNumberFormat() { + if (System.getProperty("user.region").startsWith("DE")) { + assertEquals("0,50000", String.format("%.5f", 0.5f)); + } else { + assertEquals("0.50000", String.format("%.5f", 0.5f)); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/PluggableLocale/LocaleNameProviderTest.java openjdk-21-21.0.10+7/test/jdk/java/util/PluggableLocale/LocaleNameProviderTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/PluggableLocale/LocaleNameProviderTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/PluggableLocale/LocaleNameProviderTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 4052440 8000273 8062588 8210406 + * @bug 4052440 8000273 8062588 8210406 8356040 * @summary LocaleNameProvider tests * @library providersrc/foobarutils * providersrc/barprovider @@ -31,97 +31,112 @@ * java.base/sun.util.resources * @build com.foobar.Utils * com.bar.* - * @run main/othervm -Djava.locale.providers=JRE,SPI LocaleNameProviderTest + * @run junit/othervm -Djava.locale.providers=JRE,SPI LocaleNameProviderTest */ +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.MissingResourceException; +import java.util.ResourceBundle; import com.bar.LocaleNameProviderImpl; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import sun.util.locale.provider.LocaleProviderAdapter; import sun.util.locale.provider.ResourceBundleBasedAdapter; import sun.util.resources.OpenListResourceBundle; public class LocaleNameProviderTest extends ProviderTest { - public static void main(String[] s) { - new LocaleNameProviderTest(); - } + private static final LocaleNameProviderImpl LNP = new LocaleNameProviderImpl(); + + /* + * This is not an exhaustive test. Such a test would require iterating (1000x1000)+ + * inputs. Instead, we check against Japanese lang locales which guarantees + * we will run into cases where the CLDR is not the preferred provider as the + * SPI has defined variants of the Japanese locale (E.g. osaka). + * See LocaleNameProviderImpl and LocaleNames ResourceBundle. + */ + @ParameterizedTest + @MethodSource + void checkAvailLocValidityTest(Locale target, Locale test, ResourceBundle rb, + boolean jreSupports, boolean spiSupports) { + // codes + String lang = test.getLanguage(); + String ctry = test.getCountry(); + String vrnt = test.getVariant(); + + // the localized name + String langresult = test.getDisplayLanguage(target); + String ctryresult = test.getDisplayCountry(target); + String vrntresult = test.getDisplayVariant(target); + + // provider's name (if any) + String providerslang = null; + String providersctry = null; + String providersvrnt = null; + if (spiSupports) { + providerslang = LNP.getDisplayLanguage(lang, target); + providersctry = LNP.getDisplayCountry(ctry, target); + providersvrnt = LNP.getDisplayVariant(vrnt, target); + } + + // JRE's name + String jreslang = null; + String jresctry = null; + String jresvrnt = null; + if (!lang.isEmpty()) { + try { + jreslang = rb.getString(lang); + } catch (MissingResourceException mre) {} + } + if (!ctry.isEmpty()) { + try { + jresctry = rb.getString(ctry); + } catch (MissingResourceException mre) {} + } + if (!vrnt.isEmpty()) { + try { + jresvrnt = rb.getString("%%"+vrnt); + } catch (MissingResourceException mre) {} + } - LocaleNameProviderTest() { - checkAvailLocValidityTest(); - variantFallbackTest(); + checkValidity(target, jreslang, providerslang, langresult, + jreSupports && jreslang != null); + checkValidity(target, jresctry, providersctry, ctryresult, + jreSupports && jresctry != null); + checkValidity(target, jresvrnt, providersvrnt, vrntresult, + jreSupports && jresvrnt != null); } - void checkAvailLocValidityTest() { - LocaleNameProviderImpl lnp = new LocaleNameProviderImpl(); - Locale[] availloc = Locale.getAvailableLocales(); - Locale[] testloc = availloc.clone(); - List jreimplloc = Arrays.asList(LocaleProviderAdapter.forJRE().getLocaleNameProvider().getAvailableLocales()); - List providerloc = Arrays.asList(lnp.getAvailableLocales()); + public static List checkAvailLocValidityTest() { + var args = new ArrayList(); + Locale[] availloc = Locale.availableLocales() + .filter(l -> l.getLanguage().equals("ja")) + .toArray(Locale[]::new); + List jreimplloc = Arrays.stream(LocaleProviderAdapter.forJRE().getLocaleNameProvider().getAvailableLocales()) + .filter(l -> l.getLanguage().equals("ja")) + .toList(); + List providerloc = Arrays.asList(LNP.getAvailableLocales()); - for (Locale target: availloc) { + for (Locale target : availloc) { // pure JRE implementation - OpenListResourceBundle rb = ((ResourceBundleBasedAdapter)LocaleProviderAdapter.forJRE()).getLocaleData().getLocaleNames(target); + OpenListResourceBundle rb = ((ResourceBundleBasedAdapter) LocaleProviderAdapter.forJRE()).getLocaleData().getLocaleNames(target); boolean jreSupportsTarget = jreimplloc.contains(target); - - for (Locale test: testloc) { - // codes - String lang = test.getLanguage(); - String ctry = test.getCountry(); - String vrnt = test.getVariant(); - - // the localized name - String langresult = test.getDisplayLanguage(target); - String ctryresult = test.getDisplayCountry(target); - String vrntresult = test.getDisplayVariant(target); - - // provider's name (if any) - String providerslang = null; - String providersctry = null; - String providersvrnt = null; - if (providerloc.contains(target)) { - providerslang = lnp.getDisplayLanguage(lang, target); - providersctry = lnp.getDisplayCountry(ctry, target); - providersvrnt = lnp.getDisplayVariant(vrnt, target); - } - - // JRE's name - String jreslang = null; - String jresctry = null; - String jresvrnt = null; - if (!lang.equals("")) { - try { - jreslang = rb.getString(lang); - } catch (MissingResourceException mre) {} - } - if (!ctry.equals("")) { - try { - jresctry = rb.getString(ctry); - } catch (MissingResourceException mre) {} - } - if (!vrnt.equals("")) { - try { - jresvrnt = rb.getString("%%"+vrnt); - } catch (MissingResourceException mre) {} - } - - System.out.print("For key: "+lang+" "); - checkValidity(target, jreslang, providerslang, langresult, - jreSupportsTarget && jreslang != null); - System.out.print("For key: "+ctry+" "); - checkValidity(target, jresctry, providersctry, ctryresult, - jreSupportsTarget && jresctry != null); - System.out.print("For key: "+vrnt+" "); - checkValidity(target, jresvrnt, providersvrnt, vrntresult, - jreSupportsTarget && jresvrnt != null); + boolean providerSupportsTarget = providerloc.contains(target); + for (Locale test : availloc) { + args.add(Arguments.of(target, test, rb, jreSupportsTarget, providerSupportsTarget)); } } + return args; } + @Test void variantFallbackTest() { Locale YY = Locale.of("yy", "YY", "YYYY"); Locale YY_suffix = Locale.of("yy", "YY", "YYYY_suffix"); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/PluggableLocale/TimeZoneNameProviderTest.java openjdk-21-21.0.10+7/test/jdk/java/util/PluggableLocale/TimeZoneNameProviderTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/PluggableLocale/TimeZoneNameProviderTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/PluggableLocale/TimeZoneNameProviderTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 4052440 8003267 8062588 8210406 + * @bug 4052440 8003267 8062588 8210406 8327434 8347841 * @summary TimeZoneNameProvider tests * @library providersrc/foobarutils * providersrc/barprovider @@ -37,6 +37,7 @@ import java.text.DateFormatSymbols; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.ZoneId; import java.time.format.TextStyle; import java.util.Arrays; import java.util.Calendar; @@ -45,6 +46,8 @@ import java.util.Locale; import java.util.MissingResourceException; import java.util.TimeZone; +import java.util.function.Predicate; +import java.util.stream.Stream; import com.bar.TimeZoneNameProviderImpl; @@ -69,12 +72,14 @@ } void test1() { - Locale[] available = Locale.getAvailableLocales(); List jreimplloc = Arrays.asList(LocaleProviderAdapter.forJRE().getTimeZoneNameProvider().getAvailableLocales()); List providerLocales = Arrays.asList(tznp.getAvailableLocales()); - String[] ids = TimeZone.getAvailableIDs(); + String[] ids = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); - for (Locale target: available) { + // Sampling relevant locales + Stream.concat(Stream.of(Locale.ROOT, Locale.US, Locale.JAPAN), providerLocales.stream()).forEach(target -> { // pure JRE implementation OpenListResourceBundle rb = ((ResourceBundleBasedAdapter)LocaleProviderAdapter.forJRE()).getLocaleData().getTimeZoneNames(target); boolean jreSupportsTarget = jreimplloc.contains(target); @@ -111,7 +116,7 @@ jreSupportsTarget && jresname != null); } } - } + }); } final String pattern = "z"; @@ -175,7 +180,7 @@ df.parse(DISPLAY_NAMES_KYOTO[i]); } } catch (ParseException pe) { - throw new RuntimeException("parse error occured" + pe); + throw new RuntimeException("parse error occurred" + pe); } finally { // restore the reserved locale and time zone Locale.setDefault(defaultLocale); @@ -185,8 +190,8 @@ void test3() { final String[] TZNAMES = { - LATIME, PST, PST8PDT, US_PACIFIC, - TOKYOTIME, JST, JAPAN, + LATIME, PST8PDT, US_PACIFIC, + TOKYOTIME, JAPAN, }; for (String tzname : TZNAMES) { TimeZone tz = TimeZone.getTimeZone(tzname); @@ -207,17 +212,13 @@ } final String LATIME = "America/Los_Angeles"; - final String PST = "PST"; final String PST8PDT = "PST8PDT"; final String US_PACIFIC = "US/Pacific"; final String LATIME_IN_OSAKA = tznp.getDisplayName(LATIME, false, TimeZone.LONG, OSAKA); final String TOKYOTIME = "Asia/Tokyo"; - final String JST = "JST"; final String JAPAN = "Japan"; - final String JST_IN_OSAKA = - tznp.getDisplayName(JST, false, TimeZone.LONG, OSAKA); void aliasTest() { // Check that provider's name for a standard id (America/Los_Angeles) is @@ -227,32 +228,10 @@ throw new RuntimeException("Could not get provider's localized name. result: "+latime+" expected: "+LATIME_IN_OSAKA); } - String pst = TimeZone.getTimeZone(PST).getDisplayName(OSAKA); - if (!LATIME_IN_OSAKA.equals(pst)) { - throw new RuntimeException("Provider's localized name is not available for an alias ID: "+PST+". result: "+pst+" expected: "+LATIME_IN_OSAKA); - } - String us_pacific = TimeZone.getTimeZone(US_PACIFIC).getDisplayName(OSAKA); if (!LATIME_IN_OSAKA.equals(us_pacific)) { throw new RuntimeException("Provider's localized name is not available for an alias ID: "+US_PACIFIC+". result: "+us_pacific+" expected: "+LATIME_IN_OSAKA); } - - // Check that provider's name for an alias id (JST) is - // propagated to its standard id and alias ids. - String jstime = TimeZone.getTimeZone(JST).getDisplayName(OSAKA); - if (!JST_IN_OSAKA.equals(jstime)) { - throw new RuntimeException("Could not get provider's localized name. result: "+jstime+" expected: "+JST_IN_OSAKA); - } - - String tokyotime = TimeZone.getTimeZone(TOKYOTIME).getDisplayName(OSAKA); - if (!JST_IN_OSAKA.equals(tokyotime)) { - throw new RuntimeException("Provider's localized name is not available for a standard ID: "+TOKYOTIME+". result: "+tokyotime+" expected: "+JST_IN_OSAKA); - } - - String japan = TimeZone.getTimeZone(JAPAN).getDisplayName(OSAKA); - if (!JST_IN_OSAKA.equals(japan)) { - throw new RuntimeException("Provider's localized name is not available for an alias ID: "+JAPAN+". result: "+japan+" expected: "+JST_IN_OSAKA); - } } /* diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/Properties/StoreDeadlock.java openjdk-21-21.0.10+7/test/jdk/java/util/Properties/StoreDeadlock.java --- openjdk-21-21.0.9+10/test/jdk/java/util/Properties/StoreDeadlock.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/Properties/StoreDeadlock.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 6199320 + * @bug 6199320 8347841 * @summary Properties.store() causes deadlock when concurrently calling TimeZone apis * @run main/timeout=20 StoreDeadlock * @author Xueming Shen @@ -59,7 +59,7 @@ } class Thread2 extends Thread { public void run() { - System.out.println("tz=" + TimeZone.getTimeZone("PST")); + System.out.println("tz=" + TimeZone.getTimeZone("America/Los_Angeles")); } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/Bug5097350.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug5097350.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/Bug5097350.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug5097350.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,16 +23,19 @@ /* * @test - * @bug 5097350 + * @bug 5097350 8347841 * @summary Make sure that TimeZone.getTimeZone returns a clone of a cached TimeZone instance. */ +import java.time.ZoneId; import java.util.*; -import java.text.*; +import java.util.function.Predicate; public class Bug5097350 { public static void main(String[] args) { - String[] tzids = TimeZone.getAvailableIDs(); + String[] tzids = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); List ids = new ArrayList<>(tzids.length + 10); ids.addAll(Arrays.asList(tzids)); // add some custom ids diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/Bug6329116.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug6329116.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/Bug6329116.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug6329116.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,14 +25,16 @@ * @test * @bug 6329116 6756569 6757131 6758988 6764308 6796489 6834474 6609737 6507067 * 7039469 7090843 7103108 7103405 7158483 8008577 8059206 8064560 8072042 - * 8077685 8151876 8166875 8169191 8170316 8176044 + * 8077685 8151876 8166875 8169191 8170316 8176044 8347841 * @summary Make sure that timezone short display names are idenical to Olson's data. * @run junit/othervm -Djava.locale.providers=COMPAT,SPI Bug6329116 */ import java.io.*; import java.text.*; +import java.time.ZoneId; import java.util.*; +import java.util.function.Predicate; import org.junit.jupiter.api.Test; @@ -41,7 +43,9 @@ public class Bug6329116 { static Locale[] locales = Locale.getAvailableLocales(); - static String[] timezones = TimeZone.getAvailableIDs(); + static String[] timezones = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); @Test public void bug6329116() throws IOException { @@ -98,6 +102,9 @@ tzs[0] = timezoneID; for (int j = 0; j < tzs.length; j++) { + if (ZoneId.SHORT_IDS.containsKey(tzs[j])) { + continue; + } tz = TimeZone.getTimeZone(tzs[j]); if (!tzs[j].equals(tz.getID())) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/Bug6772689.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug6772689.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/Bug6772689.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/Bug6772689.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,15 +23,18 @@ /* * @test - * @bug 6772689 + * @bug 6772689 8347841 * @summary Test for standard-to-daylight transitions at midnight: * date stays on the given day. */ +import java.time.ZoneId; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; +import java.util.function.Predicate; import static java.util.GregorianCalendar.*; public class Bug6772689 { @@ -43,7 +46,9 @@ int errors = 0; Calendar cal = new GregorianCalendar(BEGIN_YEAR, MARCH, 1); - String[] tzids = TimeZone.getAvailableIDs(); + String[] tzids = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); try { for (String id : tzids) { TimeZone tz = TimeZone.getTimeZone(id); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/DaylightTimeTest.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/DaylightTimeTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/DaylightTimeTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/DaylightTimeTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,17 +23,21 @@ /* * @test - * @bug 6936350 + * @bug 6936350 8347841 * @summary Test case for TimeZone.observesDaylightTime() */ +import java.time.ZoneId; import java.util.*; +import java.util.function.Predicate; import static java.util.GregorianCalendar.*; public class DaylightTimeTest { private static final int ONE_HOUR = 60 * 60 * 1000; // one hour private static final int INTERVAL = 24 * ONE_HOUR; // one day - private static final String[] ZONES = TimeZone.getAvailableIDs(); + private static final String[] ZONES = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); private static int errors = 0; public static void main(String[] args) { diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/IDTest.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/IDTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/IDTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/IDTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,24 +23,30 @@ /* * @test - * @bug 4509255 5055567 6176318 7090844 + * @bug 4509255 5055567 6176318 7090844 8347841 * @summary Tests consistencies of time zone IDs. */ +import java.time.ZoneId; import java.util.Arrays; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.TimeZone; import java.util.TreeMap; +import java.util.function.Predicate; public class IDTest { public static void main(String[] args) { Set ids = new HashSet<>(); Map> tree = new TreeMap<>(); - String[] tzs = TimeZone.getAvailableIDs(); - String[] tzs2 = TimeZone.getAvailableIDs(); + String[] tzs = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); + String[] tzs2 = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); if (tzs.length != tzs2.length) { throw new RuntimeException("tzs.length(" + tzs.length + ") != tzs2.length(" + tzs2.length + ")"); @@ -83,8 +89,12 @@ // Check the getAvailableIDs(int) call to return the same // set of IDs int offset = key.intValue(); - tzs = TimeZone.getAvailableIDs(offset); - tzs2 = TimeZone.getAvailableIDs(offset); + tzs = Arrays.stream(TimeZone.getAvailableIDs(offset)) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); + tzs2 = Arrays.stream(TimeZone.getAvailableIDs(offset)) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); if (!Arrays.equals(tzs, tzs2)) { throw new RuntimeException("inconsistent tzs from getAvailableIDs("+offset+")"); } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/ListTimeZones.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/ListTimeZones.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/ListTimeZones.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/ListTimeZones.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,17 +23,21 @@ /** * @test - * @bug 6851214 + * @bug 6851214 8347841 * @summary Allow 24:00 as a valid end/start DST time stamp * @run main ListTimeZones */ +import java.time.ZoneId; import java.util.*; +import java.util.function.Predicate; public class ListTimeZones{ public static void main(String[] args){ Date date = new Date(); - String TimeZoneIds[] = TimeZone.getAvailableIDs(); + String[] TimeZoneIds = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); for(int i = 0; i < TimeZoneIds.length; i++){ TimeZone tz = TimeZone.getTimeZone(TimeZoneIds[i]); Calendar calendar = new GregorianCalendar(tz); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/NegativeDSTTest.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/NegativeDSTTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/NegativeDSTTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/NegativeDSTTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ /** * @test - * @bug 8212970 + * @bug 8212970 8324065 * @summary Test whether the savings are positive in time zones that have * negative savings in the source TZ files. * @run testng NegativeDSTTest @@ -81,7 +81,10 @@ {CASABLANCA, LocalDate.of(2019, 5, 6), 0, false}, {CASABLANCA, LocalDate.of(2037, 10, 5), 0, false}, {CASABLANCA, LocalDate.of(2037, 11, 16), ONE_HOUR, true}, + {CASABLANCA, LocalDate.of(2038, 9, 27), 0, false}, {CASABLANCA, LocalDate.of(2038, 11, 1), ONE_HOUR, true}, + {CASABLANCA, LocalDate.of(2087, 3, 31), 0, false}, + {CASABLANCA, LocalDate.of(2087, 5, 12), ONE_HOUR, true}, }; } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/SimpleTimeZoneEqualsHashCodeTest.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/SimpleTimeZoneEqualsHashCodeTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/SimpleTimeZoneEqualsHashCodeTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/SimpleTimeZoneEqualsHashCodeTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8369184 + * @summary Checks if equals()/hashCode() of SimpleTimeZone works correctly + * @run junit SimpleTimeZoneEqualsHashCodeTest + */ + +import java.util.SimpleTimeZone; +import static java.util.Calendar.MARCH; +import static java.util.Calendar.NOVEMBER; +import static java.util.Calendar.SUNDAY; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class SimpleTimeZoneEqualsHashCodeTest { + private static final SimpleTimeZone STZ_WITH_DST = + new SimpleTimeZone(-288_000_000, "America/Los_Angeles", + MARCH, 8, -SUNDAY, 7_200_000, + NOVEMBER, 1, -SUNDAY, 7_200_000); + private static final SimpleTimeZone STZ_WITHOUT_DST = + new SimpleTimeZone(0, "foo"); + + @Test + void withDSTTest() { + var stz = (SimpleTimeZone)STZ_WITH_DST.clone(); + assertEquals(STZ_WITH_DST, stz); + assertEquals(STZ_WITH_DST.hashCode(), stz.hashCode()); + + stz.setEndRule(NOVEMBER, 8, -SUNDAY, 7_200_000); + assertNotEquals(STZ_WITH_DST, stz); + // From the contract point, hash codes may be the same. + // This tests the implementation which considers DST + // related fields for calculating the hash code. + assertNotEquals(STZ_WITH_DST.hashCode(), stz.hashCode()); + } + + @Test + void withoutDSTTest() { + var stz = (SimpleTimeZone)STZ_WITHOUT_DST.clone(); + + // Only setting start rule. Still considered non-DST zone + stz.setStartRule(MARCH, 8, -SUNDAY, 7_200_000); + assertTrue(!stz.useDaylightTime()); + assertEquals(STZ_WITHOUT_DST, stz); + assertEquals(STZ_WITHOUT_DST.hashCode(), stz.hashCode()); + + // Setting end rule as well. Now it is considered DST zone + stz.setEndRule(NOVEMBER, 8, -SUNDAY, 7_200_000); + assertTrue(stz.useDaylightTime()); + assertNotEquals(STZ_WITHOUT_DST, stz); + // From the contract point, hash codes may be the same. + // This tests the implementation which considers DST + // related fields for calculating the hash code. + assertNotEquals(STZ_WITHOUT_DST.hashCode(), stz.hashCode()); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/TimeZoneBoundaryTest.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/TimeZoneBoundaryTest.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/TimeZoneBoundaryTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/TimeZoneBoundaryTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ /* * @test + * @bug 8347841 * @summary test Time Zone Boundary * @run junit TimeZoneBoundaryTest */ @@ -251,7 +252,7 @@ @Test public void TestBoundaries() { - TimeZone pst = TimeZone.getTimeZone("PST"); + TimeZone pst = TimeZone.getTimeZone("America/Los_Angeles"); TimeZone save = TimeZone.getDefault(); try { TimeZone.setDefault(pst); @@ -410,11 +411,8 @@ @Test public void TestStepwise() { - findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("ACT"), 0); - // "EST" is disabled because its behavior depends on the mapping property. (6466476). - //findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("EST"), 2); - findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("HST"), 0); - findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("PST"), 2); + findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("Australia/Darwin"), 0); + findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("Pacific/Honolulu"), 0); findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("PST8PDT"), 2); findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("SystemV/PST"), 0); findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("SystemV/PST8PDT"), 2); diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/TimeZoneRegression.java openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/TimeZoneRegression.java --- openjdk-21-21.0.9+10/test/jdk/java/util/TimeZone/TimeZoneRegression.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/TimeZone/TimeZoneRegression.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +25,7 @@ * @test * @bug 4052967 4073209 4073215 4084933 4096952 4109314 4126678 4151406 4151429 * 4154525 4154537 4154542 4154650 4159922 4162593 4173604 4176686 4184229 4208960 - * 4966229 6433179 6851214 8007520 8008577 + * 4966229 6433179 6851214 8007520 8008577 8347841 * @library /java/text/testlib * @run junit/othervm -Djava.locale.providers=COMPAT,SPI TimeZoneRegression */ @@ -42,8 +42,8 @@ @Test public void Test4073209() { - TimeZone z1 = TimeZone.getTimeZone("PST"); - TimeZone z2 = TimeZone.getTimeZone("PST"); + TimeZone z1 = TimeZone.getTimeZone("America/Los_Angeles"); + TimeZone z2 = TimeZone.getTimeZone("America/Los_Angeles"); if (z1 == z2) { fail("Fail: TimeZone should return clones"); } @@ -81,7 +81,7 @@ // test both SimpleTimeZone and ZoneInfo objects. // @since 1.4 sub4084933(getPST()); - sub4084933(TimeZone.getTimeZone("PST")); + sub4084933(TimeZone.getTimeZone("America/Los_Angeles")); } private void sub4084933(TimeZone tz) { @@ -122,7 +122,7 @@ @Test public void Test4096952() { - String[] ZONES = { "GMT", "MET", "IST" }; + String[] ZONES = { "GMT", "MET", "Asia/Kolkata" }; boolean pass = true; try { for (int i=0; i expected) { + var bytes = ser(expected); + var actual = deSer(bytes); + assertEquals(CopyOnWriteArraySet.class, actual.getClass()); + assertEquals(expected, actual); + } + + private static Stream> roundTripTest() { + return Stream.of( + new CopyOnWriteArraySet<>(), + new CopyOnWriteArraySet<>(List.of(1, 2, 3)), + new CopyOnWriteArraySet<>(Set.of("Foo", "Bar", "Baz")) + ); + } + + private static byte[] ser(Object obj) { + return assertDoesNotThrow(() -> { + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(byteArrayOutputStream)) { + oos.writeObject(obj); + return byteArrayOutputStream.toByteArray(); + } + }, "Unexpected error during serialization"); + } + + private static Object deSer(byte[] bytes) { + return assertDoesNotThrow(() -> { + try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); + ObjectInputStream ois = new ObjectInputStream(byteArrayInputStream)) { + return ois.readObject(); + } + }, "Unexpected error during de-serialization"); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/concurrent/Executors/AutoShutdown.java openjdk-21-21.0.10+7/test/jdk/java/util/concurrent/Executors/AutoShutdown.java --- openjdk-21-21.0.9+10/test/jdk/java/util/concurrent/Executors/AutoShutdown.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/concurrent/Executors/AutoShutdown.java 2026-01-15 15:34:19.000000000 +0000 @@ -23,23 +23,32 @@ /* * @test - * @bug 6399443 8302899 + * @bug 6399443 8302899 8362123 * @summary Test that Executors.newSingleThreadExecutor wraps an ExecutorService that * automatically shuts down and terminates when the wrapper is GC'ed + * @library /test/lib/ * @modules java.base/java.util.concurrent:+open * @run junit AutoShutdown */ +import java.lang.ref.PhantomReference; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; import java.lang.reflect.Field; import java.time.Duration; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Stream; import java.util.stream.IntStream; +import jdk.test.lib.Utils; +import jdk.test.lib.util.ForceGC; + import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -61,6 +70,13 @@ .mapToObj(i -> Arguments.of(s, i))); } + private static Stream shutdownMethods() { + return Stream.>of( + e -> e.shutdown(), + e -> e.shutdownNow() + ).map(Arguments::of); + } + /** * SingleThreadExecutor with no worker threads. */ @@ -110,6 +126,28 @@ assertEquals(ntasks, completedTaskCount.get()); } + @ParameterizedTest + @MethodSource("shutdownMethods") + void testShutdownUnlinksCleaner(Consumer shutdown) throws Exception { + ClassLoader classLoader = + Utils.getTestClassPathURLClassLoader(ClassLoader.getPlatformClassLoader()); + + ReferenceQueue queue = new ReferenceQueue<>(); + Reference reference = new PhantomReference(classLoader, queue); + try { + Class isolatedClass = classLoader.loadClass("AutoShutdown$IsolatedClass"); + assertSame(isolatedClass.getClassLoader(), classLoader); + isolatedClass.getDeclaredMethod("shutdown", Consumer.class).invoke(null, shutdown); + + isolatedClass = null; + classLoader = null; + + assertTrue(ForceGC.wait(() -> queue.poll() != null)); + } finally { + Reference.reachabilityFence(reference); + } + } + /** * Returns the delegate for the given ExecutorService. The given ExecutorService * must be a Executors$DelegatedExecutorService. @@ -132,5 +170,22 @@ terminated = executor.awaitTermination(100, TimeUnit.MILLISECONDS); } } -} + public static class IsolatedClass { + + private static final ExecutorService executor = + Executors.newSingleThreadExecutor(new IsolatedThreadFactory()); + + public static void shutdown(Consumer shutdown) { + shutdown.accept(executor); + } + } + + public static class IsolatedThreadFactory implements ThreadFactory { + + @Override + public Thread newThread(Runnable r) { + return new Thread(r); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/jar/Manifest/ValueUtf8Coding.java openjdk-21-21.0.10+7/test/jdk/java/util/jar/Manifest/ValueUtf8Coding.java --- openjdk-21-21.0.9+10/test/jdk/java/util/jar/Manifest/ValueUtf8Coding.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/jar/Manifest/ValueUtf8Coding.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ /** * @test - * @bug 8066619 + * @bug 8066619 8351567 * @run testng ValueUtf8Coding * @summary Tests encoding and decoding manifest header values to and from * UTF-8 with the complete Unicode character set. @@ -201,10 +201,6 @@ mf.write(out); byte[] mfBytes = out.toByteArray(); - System.out.println("-".repeat(72)); - System.out.print(new String(mfBytes, UTF_8)); - System.out.println("-".repeat(72)); - ByteArrayInputStream in = new ByteArrayInputStream(mfBytes); return new Manifest(in); } diff -Nru openjdk-21-21.0.9+10/test/jdk/java/util/logging/LocalizedLevelName.java openjdk-21-21.0.10+7/test/jdk/java/util/logging/LocalizedLevelName.java --- openjdk-21-21.0.9+10/test/jdk/java/util/logging/LocalizedLevelName.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/java/util/logging/LocalizedLevelName.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -52,6 +52,7 @@ public static void main(String args[]) throws Exception { Locale defaultLocale = Locale.getDefault(); for (int i=0; i list = new ArrayList<>(); byte[] buf1 = new byte[1024]; @@ -84,16 +92,17 @@ } } - int n = 10; - long cnt = list.size(); - while (n-- > 0 && cnt != 0) { - Thread.sleep(100); - System.gc(); - cnt = list.stream().filter(o -> addrOf(o) != 0).count(); + final AtomicLong numNotYetCleaned = new AtomicLong(); + // trigger GC + final boolean resourcesCleaned = ForceGC.wait(() -> { + final long remaining = list.stream().filter(o -> addrOf(o) != 0).count(); + numNotYetCleaned.set(remaining); + return remaining == 0; + }); + if (!resourcesCleaned) { + throw new RuntimeException(numNotYetCleaned.get() + + " resources haven't yet been cleaned"); } - if (cnt != 0) - throw new RuntimeException("cleaner failed to clean : " + cnt); - } @DontInline @@ -139,17 +148,18 @@ if (zsrc != null) { Field zfileField = zsrc.getClass().getDeclaredField("zfile"); if (!zfileField.trySetAccessible()) { - throw new RuntimeException("'ZipFile.Source.zfile' is not accesible"); - } - //System.out.println("zffile: " + zfileField.get(zsrc)); - int n = 10; - while (n-- > 0 && zfileField.get(zsrc) != null) { - System.out.println("waiting gc ... " + n); - System.gc(); - Thread.sleep(100); + throw new RuntimeException("'ZipFile.Source.zfile' is not accessible"); } - if (zfileField.get(zsrc) != null) { - throw new RuntimeException("cleaner failed to clean zipfile."); + final boolean resourceCleaned = ForceGC.wait(() -> { + try { + return zfileField.get(zsrc) == null; + } catch (IllegalAccessException e) { + // shouldn't happen + throw new RuntimeException(e); + } + }); + if (!resourceCleaned) { + throw new RuntimeException("cleaner failed to clean zipfile " + zip); } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/imageio/plugins/jpeg/WriteJPEGThumbnailTest.java openjdk-21-21.0.10+7/test/jdk/javax/imageio/plugins/jpeg/WriteJPEGThumbnailTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/imageio/plugins/jpeg/WriteJPEGThumbnailTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/imageio/plugins/jpeg/WriteJPEGThumbnailTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8351110 + * @summary Test verifies that when a JFIF thumbnail may exceed 65535 bytes + * we still write a valid JPEG file by clipping the thumbnail. + * @run main WriteJPEGThumbnailTest + */ + +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import javax.imageio.ImageWriter; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.ImageOutputStream; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.awt.Color; +import java.awt.Graphics2D; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Iterator; +import java.util.List; + +public class WriteJPEGThumbnailTest { + + private static void assertEquals(int expected, int observed) { + if (expected != observed) { + throw new Error("expected " + expected + ", but observed " + observed); + } + } + + public static void main(String[] args) throws Exception { + // this always passed. 21800 * 3 = 65400, which fits in a 65535-byte segment. + boolean b1 = new WriteJPEGThumbnailTest(100, 218).run(); + + // this failed prior to resolving 8351110. 21900 * 3 = 65700, which is too large + // for a JPEG segment. Now we clip the thumbnail to make it fit. (Previously + // we wrote a corrupt JPEG file.) + boolean b2 = new WriteJPEGThumbnailTest(100, 219).run(); + + if (!(b1 && b2)) { + System.err.println("Test failed"); + throw new Error("Test failed"); + } + } + + final int thumbWidth; + final int thumbHeight; + + public WriteJPEGThumbnailTest(int thumbWidth, int thumbHeight) { + this.thumbWidth = thumbWidth; + this.thumbHeight = thumbHeight; + } + + public boolean run() throws Exception { + System.out.println("Testing thumbnail " + thumbWidth + "x" + thumbHeight + "..."); + try { + ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); + BufferedImage thumbnail = writeImage(byteOut); + byte[] jpegData = byteOut.toByteArray(); + ImageReader reader = getJPEGImageReader(); + ImageInputStream stream = ImageIO.createImageInputStream(new ByteArrayInputStream(jpegData)); + reader.setInput(stream); + assertEquals(1, reader.getNumThumbnails(0)); + + // we may have a subset of our original thumbnail, that's OK + BufferedImage readThumbnail = reader.readThumbnail(0, 0); + for (int y = 0; y < readThumbnail.getHeight(); y++) { + for (int x = 0; x < readThumbnail.getWidth(); x++) { + int rgb1 = thumbnail.getRGB(x, y); + int rgb2 = readThumbnail.getRGB(x, y); + assertEquals(rgb1, rgb2); + } + } + System.out.println("\tTest passed"); + } catch (Throwable e) { + e.printStackTrace(); + return false; + } + return true; + } + + private BufferedImage writeImage(OutputStream out) throws IOException { + BufferedImage thumbnail = createImage(thumbWidth, thumbHeight); + BufferedImage bi = createImage(thumbnail.getWidth() * 10, thumbnail.getHeight() * 10); + + ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next(); + + try (ImageOutputStream outputStream = ImageIO.createImageOutputStream(out)) { + writer.setOutput(outputStream); + + // Write the main image + IIOImage img = new IIOImage(bi, List.of(thumbnail), null); + writer.write(null, img, null); + } finally { + writer.dispose(); + } + return thumbnail; + } + + private static BufferedImage createImage(int width, int height) { + BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics2D g = bi.createGraphics(); + double sx = ((double)width) / 1000.0; + double sy = ((double)height) / 1000.0; + g.transform(AffineTransform.getScaleInstance(sx, sy)); + g.setColor(Color.RED); + g.fillRect(0, 0, 100, 100); + g.setColor(Color.GREEN); + g.fillRect(900, 0, 900, 100); + g.setColor(Color.ORANGE); + g.fillRect(0, 900, 100, 100); + g.setColor(Color.MAGENTA); + g.fillRect(900, 900, 100, 100); + g.dispose(); + return bi; + } + + private static ImageReader getJPEGImageReader() { + Iterator readers = ImageIO.getImageReadersByFormatName("jpeg"); + ImageReader reader; + while (readers.hasNext()) { + reader = readers.next(); + if (reader.canReadRaster()) { + return reader; + } + } + return null; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/management/security/SecurityTest.java openjdk-21-21.0.10+7/test/jdk/javax/management/security/SecurityTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/management/security/SecurityTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/management/security/SecurityTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -142,6 +142,9 @@ * map (argName, value) format, then calls original test's run method. */ public static void main(String args[]) throws Exception { + // Disable default KeyManager's certificate checking so we can use + // a certificate signed with MD5withRSA algorithm. + System.setProperty("jdk.tls.SunX509KeyManager.certChecking", "false"); System.out.println("================================================="); @@ -399,6 +402,8 @@ opts.add(JDKToolFinder.getJDKTool("java")); opts.addAll(Arrays.asList(jdk.test.lib.Utils.getTestJavaOpts())); + opts.add("-Djdk.rmi.ssl.client.enableEndpointIdentification=false"); + // We need to forward some properties to the client side opts.add("-Dtest.src=" + System.getProperty("test.src")); @@ -529,6 +534,10 @@ private MBeanServerConnection mbsc = null; public static void main(String args[]) throws Exception { + // Disable default KeyManager's certificate checking so we can use + // a certificate signed with MD5withRSA algorithm. + System.setProperty("jdk.tls.SunX509KeyManager.certChecking", + "false"); // Parses parameters Utils.parseDebugProperties(); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/CipherSuite.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/CipherSuite.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/CipherSuite.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/CipherSuite.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,16 +33,16 @@ * jdk.crypto.ec * @library /test/lib * @build DTLSOverDatagram - * @run main/othervm CipherSuite TLS_RSA_WITH_AES_128_CBC_SHA + * @run main/othervm CipherSuite TLS_RSA_WITH_AES_128_CBC_SHA re-enable * @run main/othervm CipherSuite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - * @run main/othervm CipherSuite TLS_RSA_WITH_AES_128_CBC_SHA256 + * @run main/othervm CipherSuite TLS_RSA_WITH_AES_128_CBC_SHA256 re-enable * @run main/othervm CipherSuite TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 * @run main/othervm CipherSuite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA * @run main/othervm CipherSuite TLS_DHE_RSA_WITH_AES_128_CBC_SHA * @run main/othervm CipherSuite TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA re-enable * @run main/othervm CipherSuite TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * @run main/othervm CipherSuite TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - * @run main/othervm CipherSuite TLS_RSA_WITH_AES_128_GCM_SHA256 + * @run main/othervm CipherSuite TLS_RSA_WITH_AES_128_GCM_SHA256 re-enable * @run main/othervm CipherSuite TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 re-enable * @run main/othervm CipherSuite TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 * @run main/othervm CipherSuite TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/DTLSNamedGroups.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSNamedGroups.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/DTLSNamedGroups.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSNamedGroups.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -140,4 +140,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/DTLSOverDatagram.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSOverDatagram.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/DTLSOverDatagram.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSOverDatagram.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -52,7 +52,6 @@ */ public class DTLSOverDatagram { - private static final int SOCKET_TIMEOUT = 10 * 1000; // in millis private static final int BUFFER_SIZE = 1024; private static final int MAXIMUM_PACKET_SIZE = 1024; @@ -78,6 +77,7 @@ private final AtomicBoolean exceptionOccurred = new AtomicBoolean(false); private final CountDownLatch serverStarted = new CountDownLatch(1); + private int socketTimeout = 10 * 1000; // in millis /* * ============================================================= * The test case @@ -476,6 +476,10 @@ return null; } + public void setSocketTimeout(int socketTimeout) { + this.socketTimeout = socketTimeout; + } + // run delegated tasks void runDelegatedTasks(SSLEngine engine) throws Exception { Runnable runnable; @@ -529,8 +533,8 @@ try (DatagramSocket serverSocket = new DatagramSocket(serverSocketAddress); DatagramSocket clientSocket = new DatagramSocket(clientSocketAddress)) { - serverSocket.setSoTimeout(SOCKET_TIMEOUT); - clientSocket.setSoTimeout(SOCKET_TIMEOUT); + serverSocket.setSoTimeout(socketTimeout); + clientSocket.setSoTimeout(socketTimeout); InetSocketAddress serverSocketAddr = new InetSocketAddress( InetAddress.getLoopbackAddress(), serverSocket.getLocalPort()); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/DTLSSignatureSchemes.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSSignatureSchemes.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/DTLSSignatureSchemes.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/DTLSSignatureSchemes.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -134,4 +134,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/FragmentedFinished.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/FragmentedFinished.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/FragmentedFinished.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/FragmentedFinished.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +// SunJSSE does not support dynamic system properties, no way to re-use +// system properties in samevm/agentvm mode. + +/* + * @test + * @bug 8367133 + * @summary Verify that handshake succeeds when Finished message is fragmented + * @modules java.base/sun.security.util + * @library /test/lib + * @build DTLSOverDatagram + * @run main/othervm FragmentedFinished + */ + +import javax.net.ssl.SSLEngine; +import javax.net.ssl.SSLParameters; +import java.net.DatagramPacket; +import java.net.SocketAddress; +import java.util.ArrayList; +import java.util.List; + +public class FragmentedFinished extends DTLSOverDatagram { + private SSLEngine serverSSLEngine; + public static void main(String[] args) throws Exception { + FragmentedFinished testCase = new FragmentedFinished(); + testCase.runTest(testCase); + } + + @Override + SSLEngine createSSLEngine(boolean isClient) throws Exception { + SSLEngine sslEngine = super.createSSLEngine(isClient); + if (!isClient) { + serverSSLEngine = sslEngine; + } + return sslEngine; + } + + @Override + DatagramPacket createHandshakePacket(byte[] ba, SocketAddress socketAddr) { + if (ba.length < 30) { // detect ChangeCipherSpec + // Reduce the maximumPacketSize to force fragmentation + // of the Finished message + SSLParameters params = serverSSLEngine.getSSLParameters(); + params.setMaximumPacketSize(53); + serverSSLEngine.setSSLParameters(params); + } + + return super.createHandshakePacket(ba, socketAddr); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/PacketLossRetransmission.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/PacketLossRetransmission.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/DTLS/PacketLossRetransmission.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/DTLS/PacketLossRetransmission.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,37 +32,16 @@ * @library /test/lib * @build DTLSOverDatagram * - * @run main/othervm PacketLossRetransmission client 0 hello_request * @run main/othervm PacketLossRetransmission client 1 client_hello - * @run main/othervm PacketLossRetransmission client 2 server_hello - * @run main/othervm PacketLossRetransmission client 3 hello_verify_request - * @run main/othervm -Djdk.tls.client.enableSessionTicketExtension=false PacketLossRetransmission client 4 new_session_ticket - * @run main/othervm PacketLossRetransmission client 11 certificate - * @run main/othervm PacketLossRetransmission client 12 server_key_exchange - * @run main/othervm PacketLossRetransmission client 13 certificate_request - * @run main/othervm PacketLossRetransmission client 14 server_hello_done - * @run main/othervm PacketLossRetransmission client 15 certificate_verify * @run main/othervm PacketLossRetransmission client 16 client_key_exchange * @run main/othervm PacketLossRetransmission client 20 finished - * @run main/othervm PacketLossRetransmission client 21 certificate_url - * @run main/othervm PacketLossRetransmission client 22 certificate_status - * @run main/othervm PacketLossRetransmission client 23 supplemental_data * @run main/othervm PacketLossRetransmission client -1 change_cipher_spec - * @run main/othervm PacketLossRetransmission server 0 hello_request - * @run main/othervm PacketLossRetransmission server 1 client_hello * @run main/othervm PacketLossRetransmission server 2 server_hello * @run main/othervm PacketLossRetransmission server 3 hello_verify_request - * @run main/othervm -Djdk.tls.client.enableSessionTicketExtension=false PacketLossRetransmission server 4 new_session_ticket * @run main/othervm PacketLossRetransmission server 11 certificate * @run main/othervm PacketLossRetransmission server 12 server_key_exchange - * @run main/othervm PacketLossRetransmission server 13 certificate_request * @run main/othervm PacketLossRetransmission server 14 server_hello_done - * @run main/othervm PacketLossRetransmission server 15 certificate_verify - * @run main/othervm PacketLossRetransmission server 16 client_key_exchange * @run main/othervm PacketLossRetransmission server 20 finished - * @run main/othervm PacketLossRetransmission server 21 certificate_url - * @run main/othervm PacketLossRetransmission server 22 certificate_status - * @run main/othervm PacketLossRetransmission server 23 supplemental_data * @run main/othervm PacketLossRetransmission server -1 change_cipher_spec */ @@ -79,6 +58,7 @@ public class PacketLossRetransmission extends DTLSOverDatagram { private static boolean isClient; private static byte handshakeType; + private static final int TIMEOUT = 500; private boolean needPacketLoss = true; @@ -87,6 +67,7 @@ handshakeType = Byte.parseByte(args[1]); PacketLossRetransmission testCase = new PacketLossRetransmission(); + testCase.setSocketTimeout(TIMEOUT); testCase.runTest(testCase); } @@ -102,7 +83,7 @@ if (packet != null) { needPacketLoss = false; - System.out.println("Loss a packet of handshake messahe"); + System.out.println("Loss a packet of handshake message"); packets.remove(packet); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLEngine/Basics.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLEngine/Basics.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLEngine/Basics.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLEngine/Basics.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -57,7 +57,8 @@ "/" + TRUSTSTORE_FILE; public static void main(String[] args) throws Exception { - SecurityUtils.removeFromDisabledTlsAlgs("TLSv1.1"); + // Re-enable TLSv1.1 and TLS_RSA_* since test depends on it. + SecurityUtils.removeFromDisabledTlsAlgs("TLSv1.1", "TLS_RSA_*"); runTest("TLSv1.3", "TLS_AES_256_GCM_SHA384"); runTest("TLSv1.2", "TLS_RSA_WITH_AES_256_GCM_SHA384"); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLEngine/EngineCloseOnAlert.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLEngine/EngineCloseOnAlert.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLEngine/EngineCloseOnAlert.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLEngine/EngineCloseOnAlert.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,8 @@ * @bug 8133632 * @summary javax.net.ssl.SSLEngine does not properly handle received * SSL fatal alerts - * @run main EngineCloseOnAlert + * @library /test/lib + * @run main/othervm EngineCloseOnAlert */ import java.io.FileInputStream; @@ -36,6 +37,7 @@ import java.util.*; import java.security.*; import static javax.net.ssl.SSLEngineResult.HandshakeStatus.*; +import jdk.test.lib.security.SecurityUtils; public class EngineCloseOnAlert { @@ -61,6 +63,8 @@ } public static void main(String[] args) throws Exception { + // Re-enable TLS_RSA_* since test depends on it. + SecurityUtils.removeFromDisabledTlsAlgs("TLS_RSA_*"); int failed = 0; List testMatrix = new LinkedList() {{ add(clientReceivesAlert); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLException/CheckSSLHandshakeException.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLHandshakeException.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLException/CheckSSLHandshakeException.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLHandshakeException.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLException/CheckSSLKeyException.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLKeyException.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLException/CheckSSLKeyException.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLKeyException.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLException/CheckSSLPeerUnverifiedException.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLPeerUnverifiedException.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLException/CheckSSLPeerUnverifiedException.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLPeerUnverifiedException.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLException/CheckSSLProtocolException.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLProtocolException.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLException/CheckSSLProtocolException.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLException/CheckSSLProtocolException.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLParameters/NamedGroups.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/NamedGroups.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLParameters/NamedGroups.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/NamedGroups.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLParameters/NamedGroupsSpec.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/NamedGroupsSpec.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLParameters/NamedGroupsSpec.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/NamedGroupsSpec.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLParameters/SignatureSchemes.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/SignatureSchemes.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/SSLParameters/SignatureSchemes.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/SSLParameters/SignatureSchemes.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/ServerName/EndingDotHostname.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/ServerName/EndingDotHostname.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/ServerName/EndingDotHostname.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/ServerName/EndingDotHostname.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -248,4 +248,3 @@ sslIS.read(); } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/TLSCommon/TLSTest.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSCommon/TLSTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/TLSCommon/TLSTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSCommon/TLSTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -50,91 +50,91 @@ * @test * @bug 8205111 * @summary Test TLS with different types of supported keys. - * @run main/othervm TLSTest TLSv1.3 rsa_pkcs1_sha1 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pkcs1_sha256 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pkcs1_sha384 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pkcs1_sha512 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 ec_rsa_pkcs1_sha256 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 ecdsa_sha1 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 ecdsa_secp384r1_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pkcs1_sha1 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pkcs1_sha256 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pkcs1_sha384 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pkcs1_sha512 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 ec_rsa_pkcs1_sha256 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 ecdsa_sha1 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 ecdsa_secp384r1_sha384 * TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 ecdsa_secp521r1_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 ecdsa_secp521r1_sha512 * TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_rsae_sha256 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_rsae_sha384 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_rsae_sha512 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_pss_sha256 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_pss_sha384 TLS_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_pss_sha512 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_rsae_sha256 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_rsae_sha384 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_rsae_sha512 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_pss_sha256 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_pss_sha384 TLS_AES_128_GCM_SHA256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_pss_sha512 TLS_AES_128_GCM_SHA256 * - * @run main/othervm TLSTest TLSv1.3 rsa_pkcs1_sha1 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pkcs1_sha256 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pkcs1_sha384 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pkcs1_sha512 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 ec_rsa_pkcs1_sha256 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 ecdsa_sha1 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 ecdsa_secp384r1_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pkcs1_sha1 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pkcs1_sha256 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pkcs1_sha384 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pkcs1_sha512 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 ec_rsa_pkcs1_sha256 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 ecdsa_sha1 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 ecdsa_secp384r1_sha384 * TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 ecdsa_secp521r1_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 ecdsa_secp521r1_sha512 * TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_rsae_sha256 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_rsae_sha384 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_rsae_sha512 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_pss_sha256 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_pss_sha384 TLS_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.3 rsa_pss_pss_sha512 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_rsae_sha256 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_rsae_sha384 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_rsae_sha512 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_pss_sha256 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_pss_sha384 TLS_AES_256_GCM_SHA384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.3 rsa_pss_pss_sha512 TLS_AES_256_GCM_SHA384 * - * @run main/othervm TLSTest TLSv1.2 rsa_pkcs1_sha1 TLS_RSA_WITH_AES_128_CBC_SHA - * @run main/othervm TLSTest TLSv1.2 rsa_pkcs1_sha256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pkcs1_sha1 TLS_RSA_WITH_AES_128_CBC_SHA + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pkcs1_sha256 * TLS_RSA_WITH_AES_128_CBC_SHA - * @run main/othervm TLSTest TLSv1.2 rsa_pkcs1_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pkcs1_sha384 * TLS_RSA_WITH_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.2 rsa_pkcs1_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pkcs1_sha512 * TLS_RSA_WITH_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.2 ec_rsa_pkcs1_sha256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 ec_rsa_pkcs1_sha256 * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - * @run main/othervm TLSTest TLSv1.2 ecdsa_sha1 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 ecdsa_sha1 * TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.2 ecdsa_secp384r1_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 ecdsa_secp384r1_sha384 * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - * @run main/othervm TLSTest TLSv1.2 ecdsa_secp521r1_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 ecdsa_secp521r1_sha512 * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA - * @run main/othervm TLSTest TLSv1.2 rsa_pss_rsae_sha256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pss_rsae_sha256 * TLS_RSA_WITH_AES_256_CBC_SHA256 - * @run main/othervm TLSTest TLSv1.2 rsa_pss_rsae_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pss_rsae_sha384 * TLS_RSA_WITH_AES_256_CBC_SHA - * @run main/othervm TLSTest TLSv1.2 rsa_pss_rsae_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pss_rsae_sha512 * TLS_RSA_WITH_AES_128_CBC_SHA256 - * @run main/othervm TLSTest TLSv1.2 rsa_pss_pss_sha256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pss_pss_sha256 * TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - * @run main/othervm TLSTest TLSv1.2 rsa_pss_pss_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pss_pss_sha384 * TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - * @run main/othervm TLSTest TLSv1.2 rsa_pss_pss_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.2 rsa_pss_pss_sha512 * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 * - * @run main/othervm TLSTest TLSv1.1 rsa_pkcs1_sha1 TLS_RSA_WITH_AES_128_CBC_SHA - * @run main/othervm TLSTest TLSv1.1 rsa_pkcs1_sha256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.1 rsa_pkcs1_sha1 TLS_RSA_WITH_AES_128_CBC_SHA + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.1 rsa_pkcs1_sha256 * TLS_RSA_WITH_AES_256_CBC_SHA - * @run main/othervm TLSTest TLSv1.1 rsa_pkcs1_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.1 rsa_pkcs1_sha384 * TLS_RSA_WITH_AES_128_CBC_SHA - * @run main/othervm TLSTest TLSv1.1 rsa_pkcs1_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.1 rsa_pkcs1_sha512 * TLS_RSA_WITH_AES_256_CBC_SHA - * @run main/othervm TLSTest TLSv1.1 rsa_pss_rsae_sha256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.1 rsa_pss_rsae_sha256 * TLS_RSA_WITH_AES_128_CBC_SHA - * @run main/othervm TLSTest TLSv1.1 rsa_pss_rsae_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.1 rsa_pss_rsae_sha384 * TLS_RSA_WITH_AES_256_CBC_SHA - * @run main/othervm TLSTest TLSv1.1 rsa_pss_rsae_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1.1 rsa_pss_rsae_sha512 * TLS_RSA_WITH_AES_128_CBC_SHA * - * @run main/othervm TLSTest TLSv1 rsa_pkcs1_sha1 TLS_RSA_WITH_AES_128_CBC_SHA - * @run main/othervm TLSTest TLSv1 rsa_pkcs1_sha256 TLS_RSA_WITH_AES_256_CBC_SHA - * @run main/othervm TLSTest TLSv1 rsa_pkcs1_sha384 TLS_RSA_WITH_AES_128_CBC_SHA - * @run main/othervm TLSTest TLSv1 rsa_pkcs1_sha512 TLS_RSA_WITH_AES_256_CBC_SHA - * @run main/othervm TLSTest TLSv1 rsa_pss_rsae_sha256 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1 rsa_pkcs1_sha1 TLS_RSA_WITH_AES_128_CBC_SHA + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1 rsa_pkcs1_sha256 TLS_RSA_WITH_AES_256_CBC_SHA + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1 rsa_pkcs1_sha384 TLS_RSA_WITH_AES_128_CBC_SHA + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1 rsa_pkcs1_sha512 TLS_RSA_WITH_AES_256_CBC_SHA + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1 rsa_pss_rsae_sha256 * TLS_RSA_WITH_AES_128_CBC_SHA - * @run main/othervm TLSTest TLSv1 rsa_pss_rsae_sha384 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1 rsa_pss_rsae_sha384 * TLS_RSA_WITH_AES_256_CBC_SHA - * @run main/othervm TLSTest TLSv1 rsa_pss_rsae_sha512 + * @run main/othervm -Djavax.net.debug=ssl,handshake TLSTest TLSv1 rsa_pss_rsae_sha512 * TLS_RSA_WITH_AES_128_CBC_SHA */ public class TLSTest { @@ -279,7 +279,7 @@ keyType.getTrustedCert(), null, null, keyType.getKeyType()); SSLSocketFactory sslsf = ctx.getSocketFactory(); try (SSLSocket sslSocket - = (SSLSocket) sslsf.createSocket("localhost", serverPort)) { + = (SSLSocket) sslsf.createSocket(InetAddress.getLoopbackAddress(), serverPort)) { // Specify the client cipher suites sslSocket.setEnabledCipherSuites(new String[]{this.cipher}); sslSocket.setEnabledProtocols(new String[]{this.tlsProtocol}); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/TLSv11/GenericBlockCipher.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSv11/GenericBlockCipher.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/TLSv11/GenericBlockCipher.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSv11/GenericBlockCipher.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -172,8 +172,8 @@ volatile Exception clientException = null; public static void main(String[] args) throws Exception { - // Re-enable TLSv1.1 since test depends on it. - SecurityUtils.removeFromDisabledTlsAlgs("TLSv1.1"); + // Re-enable TLSv1.1 and TLS_RSA_* since test depends on it. + SecurityUtils.removeFromDisabledTlsAlgs("TLSv1.1", "TLS_RSA_*"); String keyFilename = System.getProperty("test.src", ".") + "/" + pathToStores + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/TLSv12/ProtocolFilter.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSv12/ProtocolFilter.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/TLSv12/ProtocolFilter.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/TLSv12/ProtocolFilter.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ * @test * @bug 8052406 * @summary SSLv2Hello protocol may be filter out unexpectedly + * @library /test/lib * @run main/othervm ProtocolFilter */ @@ -35,6 +36,8 @@ import java.net.*; import javax.net.ssl.*; +import jdk.test.lib.security.SecurityUtils; + public class ProtocolFilter { /* @@ -156,6 +159,8 @@ volatile Exception clientException = null; public static void main(String[] args) throws Exception { + // Re-enable TLS_RSA_* since test depends on it. + SecurityUtils.removeFromDisabledTlsAlgs("TLS_RSA_*"); String keyFilename = System.getProperty("test.src", ".") + "/" + pathToStores + "/" + keyStoreFile; diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/ciphersuites/DisabledAlgorithms.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/ciphersuites/DisabledAlgorithms.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/ciphersuites/DisabledAlgorithms.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/ciphersuites/DisabledAlgorithms.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 8076221 8211883 8163327 8279164 + * @bug 8076221 8211883 8163327 8279164 8245545 * @summary Check if weak cipher suites are disabled * @library /javax/net/ssl/templates * @modules jdk.crypto.ec @@ -124,7 +124,13 @@ "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", - "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA" + "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", + "TLS_RSA_WITH_AES_256_GCM_SHA384", + "TLS_RSA_WITH_AES_128_GCM_SHA256", + "TLS_RSA_WITH_AES_256_CBC_SHA256", + "TLS_RSA_WITH_AES_128_CBC_SHA256", + "TLS_RSA_WITH_AES_256_CBC_SHA", + "TLS_RSA_WITH_AES_128_CBC_SHA" }; public static void main(String[] args) throws Exception { diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/sanity/ciphersuites/CheckCipherSuites.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/CheckCipherSuites.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/sanity/ciphersuites/CheckCipherSuites.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/CheckCipherSuites.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 4750141 4895631 8217579 8163326 8279164 + * @bug 4750141 4895631 8217579 8163326 8279164 8245545 * @summary Check enabled and supported ciphersuites are correct * @run main/othervm CheckCipherSuites default * @run main/othervm CheckCipherSuites limited @@ -99,12 +99,6 @@ "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", // deprecated - "TLS_RSA_WITH_AES_256_GCM_SHA384", - "TLS_RSA_WITH_AES_128_GCM_SHA256", - "TLS_RSA_WITH_AES_256_CBC_SHA256", - "TLS_RSA_WITH_AES_128_CBC_SHA256", - "TLS_RSA_WITH_AES_256_CBC_SHA", - "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_EMPTY_RENEGOTIATION_INFO_SCSV" }; @@ -124,9 +118,6 @@ "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", - "TLS_RSA_WITH_AES_128_GCM_SHA256", - "TLS_RSA_WITH_AES_128_CBC_SHA256", - "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_EMPTY_RENEGOTIATION_INFO_SCSV" }; @@ -194,12 +185,6 @@ "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", // deprecated - "TLS_RSA_WITH_AES_256_GCM_SHA384", - "TLS_RSA_WITH_AES_128_GCM_SHA256", - "TLS_RSA_WITH_AES_256_CBC_SHA256", - "TLS_RSA_WITH_AES_128_CBC_SHA256", - "TLS_RSA_WITH_AES_256_CBC_SHA", - "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_EMPTY_RENEGOTIATION_INFO_SCSV" }; @@ -219,9 +204,6 @@ "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", - "TLS_RSA_WITH_AES_128_GCM_SHA256", - "TLS_RSA_WITH_AES_128_CBC_SHA256", - "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_EMPTY_RENEGOTIATION_INFO_SCSV" }; diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/sanity/ciphersuites/SystemPropCipherSuitesOrder.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/SystemPropCipherSuitesOrder.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/sanity/ciphersuites/SystemPropCipherSuitesOrder.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/SystemPropCipherSuitesOrder.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -21,6 +21,7 @@ * questions. */ import java.util.Arrays; +import java.util.stream.Stream; import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLSocket; @@ -86,8 +87,20 @@ clientcipherSuites = toArray(System.getProperty("jdk.tls.client.cipherSuites")); System.out.printf("SYSTEM PROPERTIES: ServerProp:%s - ClientProp:%s%n", - Arrays.deepToString(servercipherSuites), - Arrays.deepToString(clientcipherSuites)); + Arrays.deepToString(servercipherSuites), + Arrays.deepToString(clientcipherSuites)); + + // Re-enable TLS_RSA_* cipher suites if needed since test depends on it. + if (Stream.concat( + Arrays.stream( + servercipherSuites == null + ? new String[0] : servercipherSuites), + Arrays.stream( + clientcipherSuites == null + ? new String[0] : clientcipherSuites)) + .anyMatch(s -> s.startsWith("TLS_RSA_"))) { + SecurityUtils.removeFromDisabledTlsAlgs("TLS_RSA_*"); + } try { new SystemPropCipherSuitesOrder(args[0]).run(); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/sanity/ciphersuites/TLSCipherSuitesOrder.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/TLSCipherSuitesOrder.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/sanity/ciphersuites/TLSCipherSuitesOrder.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/sanity/ciphersuites/TLSCipherSuitesOrder.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -58,6 +58,8 @@ private final String[] clientcipherSuites; public static void main(String[] args) { + // Re-enable TLS_RSA_* since test depends on it. + SecurityUtils.removeFromDisabledTlsAlgs("TLS_RSA_*"); PROTOCOL protocol = PROTOCOL.valueOf(args[0]); try { new TLSCipherSuitesOrder(protocol.getProtocol(), diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/templates/SSLExampleCert.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/templates/SSLExampleCert.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/templates/SSLExampleCert.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/templates/SSLExampleCert.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/templates/SSLSocketTemplate.java openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/templates/SSLSocketTemplate.java --- openjdk-21-21.0.9+10/test/jdk/javax/net/ssl/templates/SSLSocketTemplate.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/net/ssl/templates/SSLSocketTemplate.java 2026-01-15 15:34:19.000000000 +0000 @@ -168,7 +168,7 @@ /* * What's the server address? null means binding to the wildcard. */ - protected volatile InetAddress serverAddress = null; + protected volatile InetAddress serverAddress = InetAddress.getLoopbackAddress(); /* * Define the server side of the test. @@ -177,13 +177,8 @@ // kick start the server side service SSLContext context = createServerSSLContext(); SSLServerSocketFactory sslssf = context.getServerSocketFactory(); - InetAddress serverAddress = this.serverAddress; - SSLServerSocket sslServerSocket = serverAddress == null ? - (SSLServerSocket)sslssf.createServerSocket(serverPort) - : (SSLServerSocket)sslssf.createServerSocket(); - if (serverAddress != null) { - sslServerSocket.bind(new InetSocketAddress(serverAddress, serverPort)); - } + SSLServerSocket sslServerSocket = (SSLServerSocket)sslssf.createServerSocket( + serverPort, 0, serverAddress); configureServerSocket(sslServerSocket); serverPort = sslServerSocket.getLocalPort(); @@ -271,10 +266,8 @@ try (SSLSocket sslSocket = (SSLSocket)sslsf.createSocket()) { try { configureClientSocket(sslSocket); - InetAddress serverAddress = this.serverAddress; - InetSocketAddress connectAddress = serverAddress == null - ? new InetSocketAddress(InetAddress.getLoopbackAddress(), serverPort) - : new InetSocketAddress(serverAddress, serverPort); + InetSocketAddress connectAddress = new InetSocketAddress(serverAddress, + serverPort); sslSocket.connect(connectAddress, 15000); } catch (IOException ioe) { // The server side may be impacted by naughty test cases or diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/print/PrintServiceLookup/CountPrintServices.java openjdk-21-21.0.10+7/test/jdk/javax/print/PrintServiceLookup/CountPrintServices.java --- openjdk-21-21.0.9+10/test/jdk/javax/print/PrintServiceLookup/CountPrintServices.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/print/PrintServiceLookup/CountPrintServices.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,25 +25,21 @@ import java.io.InputStreamReader; import javax.print.PrintService; import javax.print.PrintServiceLookup; -import javax.print.attribute.AttributeSet; -import javax.print.attribute.HashAttributeSet; -import javax.print.attribute.standard.PrinterName; +import java.io.IOException; + +import jtreg.SkippedException; /* * @test * @bug 8032693 * @key printer + * @library /test/lib/ + * @requires (os.family == "linux") * @summary Test that lpstat and JDK agree whether there are printers. */ public class CountPrintServices { public static void main(String[] args) throws Exception { - String os = System.getProperty("os.name").toLowerCase(); - System.out.println("OS is " + os); - if (!os.equals("linux")) { - System.out.println("Linux specific test. No need to continue"); - return; - } PrintService services[] = PrintServiceLookup.lookupPrintServices(null, null); if (services.length > 0) { @@ -51,7 +47,16 @@ return; } String[] lpcmd = { "lpstat", "-a" }; - Process proc = Runtime.getRuntime().exec(lpcmd); + Process proc; + try { + proc = Runtime.getRuntime().exec(lpcmd); + } catch (IOException e) { + if (e.getMessage().contains("No such file or directory")) { + throw new SkippedException("Cannot find lpstat"); + } else { + throw e; + } + } proc.waitFor(); InputStreamReader ir = new InputStreamReader(proc.getInputStream()); BufferedReader br = new BufferedReader(ir); @@ -66,4 +71,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.java openjdk-21-21.0.10+7/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -134,6 +134,7 @@ } public static void main(String[] args) throws Exception { + System.setProperty("jdk.rmi.ssl.client.enableEndpointIdentification", "false"); // Set keystore properties (server-side) // final String keystore = System.getProperty("test.src") + @@ -153,4 +154,4 @@ SSLSocketParametersTest test = new SSLSocketParametersTest(); test.runTest(Integer.parseInt(args[0])); } -} \ No newline at end of file +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/security/auth/callback/PasswordCallback/CheckCleanerBound.java openjdk-21-21.0.10+7/test/jdk/javax/security/auth/callback/PasswordCallback/CheckCleanerBound.java --- openjdk-21-21.0.9+10/test/jdk/javax/security/auth/callback/PasswordCallback/CheckCleanerBound.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/security/auth/callback/PasswordCallback/CheckCleanerBound.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,4 +55,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/security/auth/callback/PasswordCallback/PasswordCleanup.java openjdk-21-21.0.10+7/test/jdk/javax/security/auth/callback/PasswordCallback/PasswordCleanup.java --- openjdk-21-21.0.9+10/test/jdk/javax/security/auth/callback/PasswordCallback/PasswordCleanup.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/security/auth/callback/PasswordCallback/PasswordCleanup.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,4 +49,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/security/auth/login/TEST.properties openjdk-21-21.0.10+7/test/jdk/javax/security/auth/login/TEST.properties --- openjdk-21-21.0.9+10/test/jdk/javax/security/auth/login/TEST.properties 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/security/auth/login/TEST.properties 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -# disabled till JDK-8219408 is fixed -allowSmartActionArgs=false diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/sound/midi/BulkSoundBank/BulkSoundBank.java openjdk-21-21.0.10+7/test/jdk/javax/sound/midi/BulkSoundBank/BulkSoundBank.java --- openjdk-21-21.0.9+10/test/jdk/javax/sound/midi/BulkSoundBank/BulkSoundBank.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/sound/midi/BulkSoundBank/BulkSoundBank.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.sound.midi.InvalidMidiDataException; +import javax.sound.midi.MidiSystem; +import java.io.ByteArrayInputStream; +import java.io.IOException; + +/** + * @test + * @bug 8350813 + * @summary Rendering of bulky sound bank from MIDI sequence can cause OutOfMemoryError. + * @run main/othervm -Xmx1g BulkSoundBank + */ + +public class BulkSoundBank { + static final byte[] midi = {77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 1, 1, + -32, 77, 84, 114, 107, 0, 0, 0, 50, 0, -1, 88, 4, 4, 2, 24, 8, 0, -1, + 81, 3, 7, -95, 32, 0, -112, 60, 64, -125, 96, -128, 60, 64, -125, -44, + -51, 32, -112, 48, 64, 1, -128, 48, 64, -127, -64, -45, 127, -112, 60, + 64, 1, -128, 60, 64, 0, -1, 47, 0}; + + public static void main(String[] args) throws IOException { + try (ByteArrayInputStream bis = new ByteArrayInputStream(midi)) { + MidiSystem.getSoundbank(bis); + throw new RuntimeException("Test should throw InvalidMidiDataException" + + " but it did not."); + } catch (InvalidMidiDataException imda) { + System.out.println("Caught InvalidMidiDataException as expected"); + } + } +} + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JButton/bug4151763.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4151763.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JButton/bug4151763.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4151763.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4151763 + * @summary Tests that button icon is not drawn upon button border + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame jtreg.SkippedException + * @run main/manual bug4151763 + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.UIManager; +import javax.swing.border.CompoundBorder; +import javax.swing.border.EmptyBorder; +import javax.swing.border.LineBorder; +import jtreg.SkippedException; + +public class bug4151763 { + private static final int IMAGE_SIZE = 150; + private static final String INSTRUCTIONS = """ + Verify that image icon is NOT painted outside + the black rectangle. + + If above is true press PASS else FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4151763::createAndShowUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createAndShowUI() { + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + } catch (Exception e) { + throw new SkippedException("Unsupported LaF", e); + } + + JFrame frame = new JFrame("bug4151763"); + final JButton b = new JButton(createImageIcon()); + b.setBorder(new CompoundBorder( + new EmptyBorder(20, 20, 20, 20), + new LineBorder(Color.BLACK))); + b.setPreferredSize(new Dimension(100, 100)); + + frame.setLayout(new FlowLayout()); + frame.add(b); + frame.setSize(400, 300); + return frame; + } + + private static ImageIcon createImageIcon() { + BufferedImage redImg = new BufferedImage(IMAGE_SIZE, IMAGE_SIZE, + BufferedImage.TYPE_INT_RGB); + Graphics2D g = redImg.createGraphics(); + g.setColor(Color.RED); + g.fillRect(0, 0, IMAGE_SIZE, IMAGE_SIZE); + g.dispose(); + return new ImageIcon(redImg); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JButton/bug4415505.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4415505.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JButton/bug4415505.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4415505.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4415505 + * @requires (os.family == "windows") + * @summary Tests JButton appearance under Windows LAF + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4415505 + */ + +import java.awt.FlowLayout; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JToggleButton; +import javax.swing.UIManager; + +public class bug4415505 { + private static final String INSTRUCTIONS = """ + +

This test is for Windows LaF. + Press the button named "Button" using mouse and check that it has + "pressed" look. It should look like the selected toggle button + near it.

+ +

If above is true press PASS else FAIL.

+ + """; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .rows(5) + .columns(40) + .testUI(bug4415505::createAndShowUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createAndShowUI() { + JButton button = new JButton("Button"); + button.setFocusPainted(false); + JToggleButton tbutton = new JToggleButton("ToggleButton"); + tbutton.setSelected(true); + + JFrame jFrame = new JFrame("bug4415505"); + jFrame.setLayout(new FlowLayout(FlowLayout.CENTER)); + jFrame.add(button); + jFrame.add(tbutton); + jFrame.setSize(300, 100); + return jFrame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JButton/bug4978274.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4978274.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JButton/bug4978274.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JButton/bug4978274.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4978274 + * @summary Tests that JButton is painted with same visible height + * as toggle buttons + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4978274 + */ + +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JToggleButton; +import javax.swing.UIManager; +import javax.swing.border.EmptyBorder; +import javax.swing.plaf.metal.MetalLookAndFeel; +import javax.swing.plaf.metal.OceanTheme; + +public class bug4978274 { + private static final String INSTRUCTIONS = """ + The toggle buttons must be painted to the same visible + height as button. In addition to that verify the following: + + a) All three buttons - "Button", "Toggle Btn" and + "Selected Toggle Btn" have the same border. + + b) Verify that when "Button" is pressed and moused over + it has the EXACT same border as "Toggle Btn" and + "Selected Toggle Btn" on press & mouse over. + + c) Click to the test window (panel) to disable/enable all + three buttons. In disabled state verify that all three + buttons have the exact same border. + + If all of the above conditions are true press PASS, else FAIL. + """; + + public static void main(String[] args) throws Exception { + MetalLookAndFeel.setCurrentTheme(new OceanTheme()); + UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(createAndShowUI()) + .build() + .awaitAndCheck(); + } + + private static JFrame createAndShowUI() { + JFrame frame = new JFrame("bug4978274"); + frame.setLayout(new BorderLayout()); + + JPanel panel = new JPanel(); + panel.setLayout(new FlowLayout()); + panel.setBorder(new EmptyBorder(12, 12, 12, 12)); + JButton jButton = new JButton("Button"); + JToggleButton jToggleButton = new JToggleButton("Selected Toggle Btn"); + jToggleButton.setSelected(true); + + panel.add(jButton); + panel.add(new JToggleButton("Toggle Btn")); + panel.add(jToggleButton); + + panel.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent event) { + jButton.setEnabled(!jButton.isEnabled()); + jToggleButton.setEnabled(jButton.isEnabled()); + for(int i = 0; i < panel.getComponentCount(); i++) { + panel.getComponent(i).setEnabled(jButton.isEnabled()); + } + } + }); + + frame.add(panel); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JCheckBox/4449413/bug4449413.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JCheckBox/4449413/bug4449413.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JCheckBox/4449413/bug4449413.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JCheckBox/4449413/bug4449413.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,6 @@ /* @test * @bug 4449413 * @summary Tests that checkbox and radiobuttons' check marks are visible when background is black - * @author Ilya Boyandin * @run main/manual bug4449413 */ @@ -56,8 +55,16 @@ public class bug4449413 extends JFrame { + private static boolean isWindowsLF; + + private static String INSTRUCTIONS_WINDOWSLF = + "There are eight controls, JCheckBox/JRadioButton with black background\n" + + "and JRadioButtonMenuItem/JCheckboxMenuItem with gray background\n"; + private static final String INSTRUCTIONS = - "There are eight controls with black backgrounds.\n" + + "There are eight controls with black backgrounds.\n"; + + private static final String INSTRUCTIONS_COMMON = "Four enabled (on the left side) and four disabled (on the right side)\n" + "checkboxes and radiobuttons.\n\n" + "1. If at least one of the controls' check marks is not visible:\n" + @@ -82,6 +89,8 @@ } public static void main(String[] args) throws Exception { + isWindowsLF = "Windows".equals(UIManager.getLookAndFeel().getID()); + SwingUtilities.invokeLater(() -> { instance = new bug4449413(); instance.createAndShowGUI(); @@ -150,8 +159,10 @@ JTextArea instructionArea = new JTextArea( isMetalLookAndFeel() - ? INSTRUCTIONS + INSTRUCTIONS_ADDITIONS_METAL - : INSTRUCTIONS + ? INSTRUCTIONS + INSTRUCTIONS_COMMON + INSTRUCTIONS_ADDITIONS_METAL + : isWindowsLF + ? (INSTRUCTIONS_WINDOWSLF + INSTRUCTIONS_COMMON) + : (INSTRUCTIONS + INSTRUCTIONS_COMMON) ); instructionArea.setEditable(false); @@ -189,7 +200,13 @@ }; b.setOpaque(true); - b.setBackground(Color.black); + if (isWindowsLF + && ((b instanceof JRadioButtonMenuItem) + || (b instanceof JCheckBoxMenuItem))) { + b.setBackground(Color.lightGray); + } else { + b.setBackground(Color.black); + } b.setForeground(Color.white); b.setEnabled(enabled == 1); b.setSelected(true); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4139900.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4139900.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4139900.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4139900.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,119 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4139900 + * @summary height of combobox may differ + * @key headful + * @run main bug4139900 +*/ + +import java.awt.Dimension; +import java.awt.Robot; +import java.awt.event.ActionListener; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; + +public class bug4139900 { + static JButton button; + static JFrame frame; + static JComboBox comboBox; + static int initialHeight; + + public static void main(String[] args) throws Exception { + try { + SwingUtilities.invokeAndWait(bug4139900::init); + test(); + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + private static void test() throws Exception { + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(500); + + SwingUtilities.invokeAndWait(() -> initialHeight = comboBox.getHeight()); + + for (int i = 0; i < 10; i++) { + SwingUtilities.invokeAndWait(() -> button.doClick()); + robot.waitForIdle(); + robot.delay(200); + SwingUtilities.invokeAndWait(() -> { + if (comboBox.getHeight() != initialHeight) { + throw new RuntimeException( + "Test failed: height differs from initial %d != %d" + .formatted(comboBox.getHeight(), initialHeight) + ); + } + }); + } + } + + public static void init() { + frame = new JFrame("bug4139900"); + + DefaultComboBoxModel model = + new DefaultComboBoxModel<>(new String[]{ + "Coma Berenices", + "Triangulum", + "Camelopardis", + "Cassiopea" + }); + + comboBox = new JComboBox<>(); + comboBox.setEditable(true); + + button = new JButton("Add/Remove Items"); + + ActionListener actionListener = e -> { + if (comboBox.getModel() == model) { + comboBox.setModel(new DefaultComboBoxModel<>()); + } else { + comboBox.setModel(model); + } + }; + + button.addActionListener(actionListener); + + JPanel panel = new JPanel(); + panel.setPreferredSize(new Dimension(300, 100)); + panel.add(comboBox); + panel.add(button); + + frame.add(panel); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4166593.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4166593.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4166593.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4166593.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Robot; +import java.awt.event.ActionListener; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; + +/* + * @test + * @bug 4166593 + * @summary Tests that JComboBox fires action events every time the user does an action + * @key headful + * @run main bug4166593 + */ + +public class bug4166593 { + static JFrame frame; + static JComboBox comboBox; + static volatile int numberOfActionEvents = 0; + + public static void main(String[] args) throws Exception { + try { + Robot robot = new Robot(); + SwingUtilities.invokeAndWait(() -> createTestUI()); + robot.waitForIdle(); + robot.delay(250); + + // change selected index 3 times + SwingUtilities.invokeAndWait(() -> { + comboBox.setSelectedIndex(1); + comboBox.setSelectedIndex(3); + comboBox.setSelectedIndex(2); + }); + robot.waitForIdle(); + robot.delay(250); + + if (numberOfActionEvents != 3) { + throw new RuntimeException("Unexpected number of Action Events!\n" + + "Expected: 3\nActual: " + numberOfActionEvents); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void createTestUI() { + comboBox = new JComboBox(new Object[]{ + "Bob", "Fred", "Hank", "Joe", "Mildred", "Agatha", "Buffy" + }); + JPanel panel = new JPanel(); + JLabel label = new JLabel("0"); + frame = new JFrame("bug4166593"); + comboBox.setEditable(true); + + ActionListener actionCounter = e -> { + ++numberOfActionEvents; + label.setText(Integer.toString(numberOfActionEvents)); + }; + + comboBox.addActionListener(actionCounter); + + panel.add(comboBox); + panel.add(label); + + frame.add(panel); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4174876.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4174876.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4174876.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4174876.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4174876 + * @summary JComboBox tooltips do not work properly + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4174876 + */ + +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JPanel; + +public class bug4174876 { + private static final String INSTRUCTIONS = """ + Hold the mouse over both combo boxes. + A tool tip should appear over every area of both of them. + Notably, if you hold the mouse over the button on the right one, + a tool tip should appear. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("TransparentTitleTest Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .splitUIBottom(bug4174876::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JComponent createTestUI() { + JComboBox comboBox1 = new JComboBox<>(new String[]{ + "Coma Berenices", + "Triangulum", + "Camelopardis", + "Cassiopea" + }); + JComboBox comboBox2 = new JComboBox<>(new String[]{ + "Coma Berenices", + "Triangulum", + "Camelopardis", + "Cassiopea" + }); + + comboBox1.setToolTipText("Combo Box #1"); + comboBox2.setToolTipText("Combo Box #2"); + comboBox2.setEditable(true); + + JPanel panel = new JPanel(); + panel.add(comboBox1); + panel.add(comboBox2); + return panel; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4180054.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4180054.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4180054.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4180054.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,112 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Robot; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.event.ListDataEvent; +import javax.swing.event.ListDataListener; + +/* + * @test + * @bug 4180054 + * @summary Tests that DefaultComboBoxModel doesn't fire a "contents changed" unnecessarily + * @key headful + * @run main bug4180054 + */ + +public class bug4180054 { + static JFrame frame; + static JComboBox comboBox; + static volatile int numberOfContentsChangedEvents = 0; + + public static void main(String[] args) throws Exception { + try { + Robot robot = new Robot(); + SwingUtilities.invokeAndWait(() -> createTestUI()); + robot.waitForIdle(); + robot.delay(250); + + // change selected index 3 times + SwingUtilities.invokeAndWait(() -> { + comboBox.setSelectedIndex(1); + comboBox.setSelectedIndex(3); + comboBox.setSelectedIndex(2); + comboBox.setSelectedIndex(2); + }); + robot.waitForIdle(); + robot.delay(250); + + if (numberOfContentsChangedEvents != 3) { + throw new RuntimeException("Unexpected number of Contents Changed Events!\n" + + "Expected: 3\nActual: " + numberOfContentsChangedEvents); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void createTestUI() { + frame = new JFrame("bug4180054"); + JPanel panel = new JPanel(); + JLabel label = new JLabel("0"); + + DefaultComboBoxModel model = new DefaultComboBoxModel(); + for (int i = 0; i < 100; ++i) { + model.addElement(Integer.toString(i)); + } + comboBox = new JComboBox(model); + comboBox.setEditable(true); + + ListDataListener contentsCounter = new ListDataListener() { + public void contentsChanged(ListDataEvent e) { + ++numberOfContentsChangedEvents; + label.setText(Integer.toString(numberOfContentsChangedEvents)); + } + + public void intervalAdded(ListDataEvent e) { + } + + public void intervalRemoved(ListDataEvent e) { + } + }; + + comboBox.getModel().addListDataListener(contentsCounter); + + panel.add(comboBox); + panel.add(label); + + frame.add(panel); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4185024.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4185024.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4185024.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4185024.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,109 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import java.awt.Point; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JPanel; + +/* + * @test + * @bug 4185024 + * @summary Tests that Heavyweight combo boxes on JDesktop work correctly + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4185024 + */ + +public class bug4185024 { + private static final String INSTRUCTIONS = """ + Click on the JComboBox button inside the JInternalFrame to bring up the menu. + Select one of the menu items and verify that the choice is highlighted correctly. + Click and drag the menu's scroll bar down and verify that it causes the menu to scroll down. + + Inside JInternalFrame: + This test is for the JComboBox in the JInternalFrame. + To test, please click on the combobox and check the following: + Does the selection in the popup list follow the mouse? + Does the popup list respond to clicking and dragging the scroll bar? + If so, press PASS, otherwise, press FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4185024::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4185024"); + JPanel p = new JPanel(); + p.setLayout(new BorderLayout()); + JDesktopPane desktop = new JDesktopPane(); + p.add(desktop); + frame.add(p); + + JComboBox months = new JComboBox(); + months.addItem("January"); + months.addItem("February"); + months.addItem("March"); + months.addItem("April"); + months.addItem("May"); + months.addItem("June"); + months.addItem("July"); + months.addItem("August"); + months.addItem("September"); + months.addItem("October"); + months.addItem("November"); + months.addItem("December"); + months.getAccessibleContext().setAccessibleName("Months"); + months.getAccessibleContext().setAccessibleDescription("Choose a month of the year"); + + // Set this to true and the popup works correctly... + months.setLightWeightPopupEnabled(false); + + addFrame("Months", desktop, months); + + frame.setSize(300, 300); + return frame; + } + + private static void addFrame(String title, JDesktopPane desktop, JComponent component) { + JInternalFrame jf = new JInternalFrame(title); + Point newPos = new Point(20, 20); + jf.setResizable(true); + jf.add(component); + jf.setLocation(newPos); + desktop.add(jf); + + jf.pack(); + jf.show(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4201964.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4201964.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4201964.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4201964.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.UIManager; + +/* + * @test + * @bug 4201964 + * @summary Tests that JComboBox's arrow button isn't drawn too wide in Windows Look&Feel + * @requires (os.family == "windows") + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4201964 + */ + +public class bug4201964 { + private static final String INSTRUCTIONS = """ + Does the arrow look too large? If not, it passes. + """; + + public static void main(String[] args) throws Exception { + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + } catch (Exception e) { + PassFailJFrame.forceFail("Couldn't load the Windows look and feel."); + } + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .rows(8) + .columns(30) + .testUI(bug4201964::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4201964"); + JPanel panel = new JPanel(); + JComboBox comboBox; + + comboBox = new JComboBox(new Object[]{ + "Coma Berenices", + "Triangulum", + "Camelopardis", + "Cassiopea"}); + + panel.add(comboBox); + + frame.add(panel); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4249732.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4249732.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4249732.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4249732.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.UIManager; + +/* + * @test + * @bug 4249732 + * @requires (os.family == "windows") + * @summary Tests that Windows editable combo box selects text picked from its list + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4249732 + */ + +public class bug4249732 { + private static final String INSTRUCTIONS = """ + Click on combo box arrow button to open its dropdown list, and + select an item from there. The text in the combo box editor should + be selected, otherwise test fails. + """; + + public static void main(String[] args) throws Exception { + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + } catch (Exception e) { + PassFailJFrame.forceFail("Couldn't load the Windows look and feel."); + } + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .rows(8) + .columns(40) + .testUI(bug4249732::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4249732"); + + JComboBox cb = new JComboBox(new Object[]{"foo", "bar", "baz"}); + cb.setEditable(true); + + frame.add(cb, BorderLayout.NORTH); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4368848.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4368848.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4368848.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4368848.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.AbstractTableModel; + +/* + * @test + * @bug 4368848 + * @summary Tests that mouse wheel events cancel popups + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4368848 + */ + +public class bug4368848 { + static final String[] names = {"First Name", "Last Name", "Veggy"}; + static Object[][] data = { + {"Mark", "Andrews", false}, + {"Tom", "Ball", false}, + {"Alan", "Chung", false}, + {"Jeff", "Dinkins", false}, + {"Amy", "Fowler", false}, + {"Brian", "Gerhold", false}, + {"James", "Gosling", false}, + {"David", "Karlton", false}, + {"Dave", "Kloba", false}, + {"Peter", "Korn", false}, + {"Phil", "Milne", false}, + {"Dave", "Moore", false}, + {"Hans", "Muller", false}, + {"Rick", "Levenson", false}, + {"Tim", "Prinzing", false}, + {"Chester", "Rose", false}, + {"Ray", "Ryan", false}, + {"Georges", "Saab", false}, + {"Willie", "Walker", false}, + {"Kathy", "Walrath", false}, + {"Arnaud", "Weber", false} + }; + + private static final String INSTRUCTIONS = """ + Click any cell in the 'Veggy' column, so that combo box appears. + Make sure mouse pointer is over the table, but _not_ over the combo + box. Try scrolling the table using the mouse wheel. The combo popup + should disappear. If it stays visible, test fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4368848::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4368848"); + ExampleTableModel dataModel = new ExampleTableModel(); + + JComboBox _editor = new JComboBox(); + _editor.addItem(false); + _editor.addItem(true); + + JTable tableView = new JTable(dataModel); + tableView.setDefaultEditor(Boolean.class, new DefaultCellEditor(_editor)); + + frame.add(new JScrollPane(tableView)); + frame.setSize(200, 200); + return frame; + } + + static class ExampleTableModel extends AbstractTableModel { + // These methods always need to be implemented. + @Override + public int getColumnCount() { + return names.length; + } + + @Override + public int getRowCount() { + return data.length; + } + + public Object getValueAt(int row, int col) { + return data[row][col]; + } + + @Override + public boolean isCellEditable(int row, int col) { + return true; + } + + @Override + public String getColumnName(int column) { + return names[column]; + } + + @Override + public Class getColumnClass(int col) { + return getValueAt(0, col).getClass(); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4474400.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4474400.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4474400.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4474400.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4474400 + * @summary Tests JTextArea wrapping with font change + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4474400 + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Font; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JTextArea; + +public class bug4474400 { + private static final String INSTRUCTIONS = """ + Press the "Change Font" button. The two lines of text should be + properly drawn using the larger font, there should be empty line + between them. If display is garbled, test fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4474400 Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .splitUIRight(bug4474400::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JComponent createTestUI() { + Font smallFont = new Font("SansSerif", Font.PLAIN, 12); + Font largeFont = new Font("SansSerif", Font.PLAIN, 36); + + JTextArea textArea = new JTextArea("This is the first line\n\nThis is the third line"); + textArea.setFont(smallFont); + textArea.setEditable(false); + textArea.setLineWrap(true); + textArea.setWrapStyleWord(true); + + JButton b = new JButton("Change Font"); + b.addActionListener((e) -> textArea.setFont(largeFont)); + + JPanel panel = new JPanel(new BorderLayout()); + panel.setPreferredSize(new Dimension(200, 300)); + panel.add(textArea, BorderLayout.CENTER); + panel.add(b, BorderLayout.SOUTH); + + return panel; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4530952.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4530952.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4530952.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4530952.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.ActionListener; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; + +/* + * @test + * @bug 4530952 + * @summary Tests that double mouse clicks invoke Event + * @key headful + * @run main bug4530952 + */ + +public class bug4530952 { + static JFrame frame; + static JButton btnAction; + static JComboBox cmbAction; + static volatile Point loc; + static volatile Dimension btnSize; + + private static volatile boolean flag; + + public static void main(String[] args) throws Exception { + try { + Robot robot = new Robot(); + SwingUtilities.invokeAndWait(() -> createTestUI()); + robot.waitForIdle(); + robot.delay(1000); + + // enter some text in combo box + robot.keyPress(KeyEvent.VK_A); + robot.keyRelease(KeyEvent.VK_A); + robot.keyPress(KeyEvent.VK_A); + robot.keyRelease(KeyEvent.VK_A); + robot.waitForIdle(); + robot.delay(250); + + // find and click action button + SwingUtilities.invokeAndWait(() -> { + loc = btnAction.getLocationOnScreen(); + btnSize = btnAction.getSize(); + }); + robot.waitForIdle(); + robot.delay(250); + + robot.mouseMove(loc.x + btnSize.width / 2, + loc.y + btnSize.height / 2); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + robot.delay(1000); + + if (!flag) { + throw new RuntimeException("Failed: button action was not fired"); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void createTestUI() { + frame = new JFrame("bug4530952"); + frame.setLayout(new FlowLayout()); + + btnAction = new JButton("Action"); + cmbAction = new JComboBox(); + + flag = false; + + ActionListener al = e -> flag = true; + DocumentListener dl = new DocumentListener() { + @Override + public void changedUpdate(DocumentEvent evt) { + resetButtons(); + } + + @Override + public void insertUpdate(DocumentEvent evt) { + resetButtons(); + } + + @Override + public void removeUpdate(DocumentEvent evt) { + resetButtons(); + } + }; + + // Add an editable combo box + cmbAction.setEditable(true); + frame.add(cmbAction); + + btnAction.setEnabled(false); + frame.add(btnAction); + + btnAction.addActionListener(al); + ((JTextField) cmbAction.getEditor().getEditorComponent()). + getDocument().addDocumentListener(dl); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + public static void resetButtons() { + int length = ((JTextField) cmbAction.getEditor().getEditorComponent()). + getDocument().getLength(); + btnAction.setEnabled(length > 0); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4530953.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4530953.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComboBox/bug4530953.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComboBox/bug4530953.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.FlowLayout; +import java.awt.Robot; +import java.awt.event.KeyEvent; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.SwingUtilities; + +/* + * @test + * @bug 4530953 + * @summary Tests that highlighted Item appears after automatically scrolling to the item + * @key headful + * @run main bug4530953 + */ + +public class bug4530953 { + static JFrame frame; + static JComboBox combo; + static String[] data = {"Apple", "Orange", "Cherry"}; + + public static void main(String[] args) throws Exception { + try { + Robot robot = new Robot(); + SwingUtilities.invokeAndWait(() -> createTestUI()); + robot.waitForIdle(); + robot.delay(250); + + // enter some text in combo box editor + robot.keyPress(KeyEvent.VK_A); + robot.keyRelease(KeyEvent.VK_A); + robot.keyPress(KeyEvent.VK_A); + robot.keyRelease(KeyEvent.VK_A); + robot.keyPress(KeyEvent.VK_ENTER); + robot.keyRelease(KeyEvent.VK_ENTER); + robot.waitForIdle(); + robot.delay(250); + + // select orange in combo box + robot.keyPress(KeyEvent.VK_DOWN); + robot.keyRelease(KeyEvent.VK_DOWN); + robot.keyPress(KeyEvent.VK_DOWN); + robot.keyRelease(KeyEvent.VK_DOWN); + robot.keyPress(KeyEvent.VK_DOWN); + robot.keyRelease(KeyEvent.VK_DOWN); + robot.keyPress(KeyEvent.VK_ENTER); + robot.keyRelease(KeyEvent.VK_ENTER); + robot.waitForIdle(); + robot.delay(250); + + String currSelection = (String) combo.getEditor().getItem(); + if (!currSelection.equals("Orange")) { + throw new RuntimeException("Unexpected Selection.\n" + + "Expected: Orange\nActual: " + currSelection); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void createTestUI() { + frame = new JFrame("bug4530953"); + combo = new JComboBox(data); + combo.setEditable(true); + combo.setSelectedIndex(1); + frame.setLayout(new FlowLayout()); + frame.add(combo); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComponent/bug4235215.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4235215.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComponent/bug4235215.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4235215.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4235215 + * @summary Tests that Toolkit.getPrintJob() do not throw NPE + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4235215 + */ + +import java.awt.Toolkit; +import javax.swing.JButton; +import javax.swing.JFrame; + +public class bug4235215 { + + private static final String INSTRUCTIONS = """ + Press "Print Dialog" button. + If you see a print dialog, test passes. + Click "Cancel" button to close it."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4235215 Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(bug4235215::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + JFrame frame = new JFrame("bug4235215"); + JButton button = new JButton("Print Dialog"); + button.addActionListener(ev -> { + Toolkit.getDefaultToolkit().getPrintJob(frame, "Test Printing", null); + }); + frame.add(button); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComponent/bug4247610.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4247610.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComponent/bug4247610.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4247610.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4247610 + * @summary Tests an unnecessary repaint issue + * @key headful + * @run main bug4247610 + */ + +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Graphics; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.InputEvent; +import javax.swing.JButton; +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.Random; + +public class bug4247610 { + + private static JFrame frame; + private static JButton damager; + private static volatile Point loc; + private static volatile Dimension size; + private static volatile boolean traced; + private static volatile boolean failed; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + SwingUtilities.invokeAndWait(() -> { + frame = new JFrame("bug4247610"); + JDesktopPane pane = new JDesktopPane(); + + JInternalFrame jif = new JInternalFrame( + "Damager", true, true, true, true); + InternalFramePanel ifp = new InternalFramePanel(); + damager = new JButton("Damage!"); + ifp.add(damager); + jif.setContentPane(ifp); + jif.setBounds(0, 0, 300, 300); + jif.setVisible(true); + pane.add(jif); + + jif = new JInternalFrame("Damagee", true, true, true, true); + JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + final JLabel damagee = new JLabel(""); + panel.add(damagee); + jif.setContentPane(panel); + jif.setBounds(60, 220, 300, 100); + jif.setVisible(true); + pane.add(jif); + + final Random random = new Random(); + + damager.addActionListener((e) -> { + System.out.println("trace paints enabled"); + traced = true; + damagee.setText(Integer.toString(random.nextInt())); + }); + frame.setContentPane(pane); + frame.setSize(500, 500); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + SwingUtilities.invokeAndWait(() -> { + loc = damager.getLocationOnScreen(); + size = damager.getSize(); + }); + robot.mouseMove(loc.x + size.width / 2, loc.y + size.height / 2); + robot.waitForIdle(); + robot.delay(200); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + if (failed) { + throw new RuntimeException("Failed: unnecessary repaint occured"); + } + } + + + static class InternalFramePanel extends JPanel { + final AtomicInteger repaintCounter = new AtomicInteger(0); + InternalFramePanel() { + super(new FlowLayout()); + setOpaque(true); + } + + public synchronized void paintComponent(Graphics g) { + super.paintComponent(g); + repaintCounter.incrementAndGet(); + System.out.println("repaintCounter " + repaintCounter.intValue()); + if (traced) { + failed = true; + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JComponent/bug4254995.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4254995.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JComponent/bug4254995.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JComponent/bug4254995.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4254995 + * @summary Tests that html in renderer works correctly + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4254995 + */ + +import javax.swing.JFrame; +import javax.swing.JList; +import javax.swing.JScrollPane; + +public class bug4254995 { + + private static final String INSTRUCTIONS = """ + If you see a list containing digits from one to seven, test passes. + Otherwise it fails."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4254995 Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(bug4254995::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + JFrame frame = new JFrame("bug4254995"); + String[] data = { "1", "2", "3", "4", "5", "6", "7" }; + frame.add(new JScrollPane(new JList(data))); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/ScrollToReferenceTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/ScrollToReferenceTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/ScrollToReferenceTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/ScrollToReferenceTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4194428 + * @summary Checks that scrolling an href to visible scrolls it to the top of the page. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ScrollToReferenceTest + */ + +import java.awt.Container; +import java.awt.Dimension; +import java.io.IOException; +import java.net.URL; +import javax.swing.JEditorPane; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; + +public class ScrollToReferenceTest { + + static final String INSTRUCTIONS = """ + Wait for the html document to finish loading, click on the anchor + with text 'CLICK ME'. If 'should be at top of editor pane' is + scrolled to the top of the visible region of the text, click PASS, + otherwise click FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(ScrollToReferenceTest::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame frame = new JFrame("ScrollToReferenceTest"); + JEditorPane pane = new JEditorPane(); + + try { + pane.setPage(ScrollToReferenceTest.class.getResource("test.html")); + } catch (IOException ioe) { + PassFailJFrame.forceFail("Couldn't find html file"); + } + + + pane.addHyperlinkListener(new HyperlinkListener() { + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED && + e.getURL() != null) { + try { + pane.setPage(e.getURL()); + } catch (IOException ioe) { + pane.setText("error finding url, click fail!"); + } + } + } + }); + pane.setEditable(false); + JScrollPane sp = new JScrollPane(pane); + sp.setPreferredSize(new Dimension(400, 400)); + frame.add(sp); + frame.setSize(400, 400); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/test.html openjdk-21-21.0.10+7/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/test.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/test.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JEditorPane/ScrollToReferenceTest/test.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,93 @@ + + +

Click ME! +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

should be at top of editor pane +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

a +

TEST! +

a + + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/6798062/bug6798062.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/6798062/bug6798062.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/6798062/bug6798062.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/6798062/bug6798062.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,230 +0,0 @@ -/* - * Copyright (c) 2009, 2024, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 6798062 - * @requires (os.family == "windows") - * @summary Memory Leak on using getFiles of FileSystemView - * @library /java/awt/regtesthelpers - * @build PassFailJFrame - * @modules java.desktop/sun.awt - * java.desktop/sun.awt.shell - * @run main/manual bug6798062 - */ - -import sun.awt.OSInfo; -import sun.awt.shell.ShellFolder; - -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.io.FileNotFoundException; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JSlider; -import javax.swing.JTextField; - -public class bug6798062 { - - private static final String INSTRUCTIONS = """ - The test is suitable only for Windows. - - 1. Create a shortcut (.lnk) file - 2. Copy path to the shortcut (.lnk file) into TextField - 3. Run the Windows Task Manager. Select the Processes tab and find the java process - 4. Press the Start button in the test window - 5. Wait several minutes and observe in the Windows Task Manager - that Memory Usage of java process is not increasing - If memory usage is increasing, click Fail else click Pass."""; - - private static JSlider slider; - private static JTextField tfLink; - private static JButton btnStart; - private static JButton btnStop; - private static JButton btnGC; - - private ShellFolder folder; - private Thread thread; - - public static void main(String[] args) throws Exception { - PassFailJFrame.builder() - .title("JFileChooser Instructions") - .instructions(INSTRUCTIONS) - .testTimeOut(10) - .rows(10) - .columns(35) - .testUI(bug6798062::createUI) - .build() - .awaitAndCheck(); - } - - private static JFrame createUI() { - slider = new JSlider(0, 100); - tfLink = new JTextField(); - btnStart = new JButton("Start"); - btnStop = new JButton("Stop"); - btnGC = new JButton("Run System.gc()"); - JFrame frame = new JFrame("bug6798062"); - - frame.setSize(400, 300); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.add(new bug6798062().initialize()); - - return frame; - } - - private JComponent initialize() { - if (OSInfo.getOSType() != OSInfo.OSType.WINDOWS) { - return new JLabel("The test is suitable only for Windows"); - } - - String tempDir = System.getProperty("java.io.tmpdir"); - - if (tempDir.length() == 0) { // 'java.io.tmpdir' isn't guaranteed to be defined - tempDir = System.getProperty("user.home"); - } - - System.out.println("Temp directory: " + tempDir); - - try { - folder = ShellFolder.getShellFolder(new File(tempDir)); - } catch (FileNotFoundException e) { - fail("Directory not found"); - } - - slider.setMajorTickSpacing(10); - slider.setPaintTicks(true); - slider.setPaintLabels(true); - slider.setSnapToTicks(true); - slider.setValue(10); - - btnStart.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - setEnabledState(false); - - thread = new MyThread(slider.getValue(), tfLink.getText()); - thread.start(); - } - }); - - btnStop.setEnabled(false); - - btnStop.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - thread.interrupt(); - thread = null; - - setEnabledState(true); - } - }); - - btnGC.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - System.gc(); - } - }); - - setEnabledState(true); - - JPanel pnButtons = new JPanel(); - - pnButtons.setLayout(new BoxLayout(pnButtons, BoxLayout.X_AXIS)); - - pnButtons.add(btnStart); - pnButtons.add(btnStop); - pnButtons.add(btnGC); - - tfLink.setMaximumSize(new Dimension(300, 20)); - - JPanel pnContent = new JPanel(); - - pnContent.setLayout(new BoxLayout(pnContent, BoxLayout.Y_AXIS)); - pnContent.add(new JLabel("Delay between listFiles() invocation (ms):")); - pnContent.add(slider); - pnContent.add(new JLabel("Provide link here:")); - pnContent.add(tfLink); - pnContent.add(pnButtons); - - return pnContent; - } - - private void setEnabledState(boolean enabled) { - slider.setEnabled(enabled); - btnStart.setEnabled(enabled); - btnStop.setEnabled(!enabled); - } - - private static void fail(String msg) { - PassFailJFrame.forceFail(msg); - } - - private class MyThread extends Thread { - private final int delay; - - private final ShellFolder link; - - private MyThread(int delay, String link) { - this.delay = delay; - - ShellFolder linkFolder; - - try { - linkFolder = ShellFolder.getShellFolder(new File(link)); - } catch (FileNotFoundException e) { - fail("File not found"); - - linkFolder = null; - } - - this.link = linkFolder; - } - - public void run() { - while (!isInterrupted()) { - folder.listFiles(); - if (link != null) { - try { - link.getLinkLocation(); - } catch (FileNotFoundException e) { - fail("File not found"); - } - } - - if (delay > 0) { - try { - Thread.sleep(delay); - } catch (InterruptedException e1) { - // The thread was interrupted - return; - } - } - } - } - } -} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/FileFilterDescription/FileFilterDescription.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/FileFilterDescription/FileFilterDescription.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/FileFilterDescription/FileFilterDescription.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/FileFilterDescription/FileFilterDescription.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -import java.io.File; -import java.awt.BorderLayout; -import javax.swing.JFileChooser; -import javax.swing.JFrame; -import javax.swing.SwingUtilities; -import javax.swing.UIManager; -import javax.swing.UnsupportedLookAndFeelException; -import javax.swing.filechooser.FileFilter; - -/* - * @test - * @bug 8029536 - * @library /java/awt/regtesthelpers - * @build PassFailJFrame - * @run main/manual FileFilterDescription - */ -public final class FileFilterDescription { - - private static final String INSTRUCTIONS = """ - 1) Check that current filter in the opened JFileChooser is a "CustomFileFilter". - 2) Close the JFileChooser. - 3) Test will repeat steps 1 - 2 for all supported look and feels. - 4) If it's true for all look and feels then click Pass else click Fail. """; - - public static void main(String[] args) throws Exception { - PassFailJFrame passFailJFrame = PassFailJFrame.builder() - .title("JFileChooser Filefilter Instructions") - .instructions(INSTRUCTIONS) - .rows(10) - .columns(35) - .position(PassFailJFrame.Position.TOP_LEFT_CORNER) - .build(); - - final UIManager.LookAndFeelInfo[] infos = UIManager - .getInstalledLookAndFeels(); - for (final UIManager.LookAndFeelInfo info : infos) { - SwingUtilities.invokeAndWait(() -> { - setLookAndFeel(info); - JFrame frame = new JFrame("JFileChooser FileFilter test"); - final JFileChooser chooser = new JFileChooser(); - chooser.setAcceptAllFileFilterUsed(false); - chooser.setFileFilter(new CustomFileFilter()); - SwingUtilities.updateComponentTreeUI(chooser); - frame.add(chooser, BorderLayout.CENTER); - frame.pack(); - PassFailJFrame.addTestWindow(frame); - PassFailJFrame.positionTestWindow(frame, PassFailJFrame.Position.TOP_LEFT_CORNER); - chooser.showDialog(null, "Open"); - }); - } - passFailJFrame.awaitAndCheck(); - } - - private static void setLookAndFeel(final UIManager.LookAndFeelInfo info) { - try { - UIManager.setLookAndFeel(info.getClassName()); - } catch (ClassNotFoundException | InstantiationException | - UnsupportedLookAndFeelException | IllegalAccessException e) { - throw new RuntimeException(e); - } - } - - private static class CustomFileFilter extends FileFilter { - - @Override - public boolean accept(final File f) { - return false; - } - - @Override - public String getDescription() { - return "CustomFileFilter"; - } - } -} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/FileFilterDescription.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/FileFilterDescription.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/FileFilterDescription.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/FileFilterDescription.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.File; +import java.awt.BorderLayout; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; +import javax.swing.filechooser.FileFilter; + +/* + * @test + * @bug 8029536 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual FileFilterDescription + */ +public final class FileFilterDescription { + + private static final String INSTRUCTIONS = """ + 1) Check that current filter in the opened JFileChooser is a "CustomFileFilter". + 2) Close the JFileChooser. + 3) Test will repeat steps 1 - 2 for all supported look and feels. + 4) If it's true for all look and feels then click Pass else click Fail. """; + + public static void main(String[] args) throws Exception { + PassFailJFrame passFailJFrame = PassFailJFrame.builder() + .title("JFileChooser Filefilter Instructions") + .instructions(INSTRUCTIONS) + .rows(10) + .columns(35) + .position(PassFailJFrame.Position.TOP_LEFT_CORNER) + .build(); + + final UIManager.LookAndFeelInfo[] infos = UIManager + .getInstalledLookAndFeels(); + for (final UIManager.LookAndFeelInfo info : infos) { + SwingUtilities.invokeAndWait(() -> { + setLookAndFeel(info); + JFrame frame = new JFrame("JFileChooser FileFilter test"); + final JFileChooser chooser = new JFileChooser(); + chooser.setAcceptAllFileFilterUsed(false); + chooser.setFileFilter(new CustomFileFilter()); + SwingUtilities.updateComponentTreeUI(chooser); + frame.add(chooser, BorderLayout.CENTER); + frame.pack(); + PassFailJFrame.addTestWindow(frame); + PassFailJFrame.positionTestWindow(frame, PassFailJFrame.Position.TOP_LEFT_CORNER); + chooser.showDialog(null, "Open"); + }); + } + passFailJFrame.awaitAndCheck(); + } + + private static void setLookAndFeel(final UIManager.LookAndFeelInfo info) { + try { + UIManager.setLookAndFeel(info.getClassName()); + } catch (ClassNotFoundException | InstantiationException | + UnsupportedLookAndFeelException | IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + private static class CustomFileFilter extends FileFilter { + + @Override + public boolean accept(final File f) { + return false; + } + + @Override + public String getDescription() { + return "CustomFileFilter"; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/HTMLFileName.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/HTMLFileName.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/HTMLFileName.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/HTMLFileName.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.File; +import java.util.List; +import javax.swing.Icon; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.filechooser.FileSystemView; + +/* + * @test id=metal + * @bug 8139228 + * @summary JFileChooser should not render Directory names in HTML format + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual HTMLFileName metal + */ + +/* + * @test id=system + * @bug 8139228 8358532 + * @summary JFileChooser should not render Directory names in HTML format + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual HTMLFileName system + */ + +public class HTMLFileName { + private static final String INSTRUCTIONS = """ + +

    +
  1. JFileChooser shows a virtual directory. + The first file in the list has the following name: + <html><h1 color=#ff00ff><font + face="Serif">Swing Rocks! +
    +
    +
  2. In HTML disabled frame: +
      +
    1. Verify that the first file name displays + as plain text, + that is you see the HTML tags in the file name. +
    2. If the file name in the file pane and + in the navigation combo box above is displayed + as HTML, that is in large font and magenta color, + then press Fail. +
    + +
  3. In HTML enabled frame: +
      +
    1. Verify that the first file name displays as HTML, + that is Swing Rocks! in large font + and magenta color.
      + Note: On macOS in Aqua L&F, the file name with + HTML displays as an empty file name. It is not an error. +
    2. If the file name in the file pane and + in the navigation combo box above is displayed + as HTML, then press Pass.
      + If it is in plain text, then press Fail. +
    +
+ + """; + + public static void main(String[] args) throws Exception { + if (args.length < 1) { + throw new IllegalArgumentException("Look-and-Feel keyword is required"); + } + + final String lafClassName; + switch (args[0]) { + case "metal" -> lafClassName = UIManager.getCrossPlatformLookAndFeelClassName(); + case "system" -> lafClassName = UIManager.getSystemLookAndFeelClassName(); + default -> throw new IllegalArgumentException("Unsupported Look-and-Feel keyword: " + args[0]); + } + + SwingUtilities.invokeAndWait(() -> { + try { + UIManager.setLookAndFeel(lafClassName); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + + System.out.println("Test for LookAndFeel " + lafClassName); + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(45) + .rows(20) + .testUI(HTMLFileName::initialize) + .positionTestUIBottomRowCentered() + .build() + .awaitAndCheck(); + System.out.println("Test passed for LookAndFeel " + lafClassName); + } + + private static List initialize() { + return List.of(createFileChooser(true), createFileChooser(false)); + } + + private static JFrame createFileChooser(boolean htmlDisabled) { + JFileChooser jfc = new JFileChooser(new VirtualFileSystemView()); + jfc.putClientProperty("html.disable", htmlDisabled); + jfc.setControlButtonsAreShown(false); + + JFrame frame = new JFrame(htmlDisabled ? "HTML disabled" : "HTML enabled"); + frame.add(jfc); + frame.pack(); + return frame; + } + + private static class VirtualFileSystemView extends FileSystemView { + private final File[] files = { + new File("/", "

Swing Rocks!"), + new File("/", "virtualFile1.txt"), + new File("/", "virtualFile2.log") + }; + + @Override + public File createNewFolder(File containingDir) { + return null; + } + + @Override + public File[] getRoots() { + return files; + } + + @Override + public File getHomeDirectory() { + return new File("/"); + } + + @Override + public File getDefaultDirectory() { + return new File("/"); + } + + @Override + public File[] getFiles(File dir, boolean useFileHiding) { + // Simulate a virtual folder structure + return files; + } + + @Override + public Icon getSystemIcon(File f) { + return null; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4357012.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4357012.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4357012.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4357012.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4357012 + * @requires (os.family == "windows") + * @summary JFileChooser.showSaveDialog inconsistent with Windows Save Dialog + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4357012 + */ + +import java.io.File; +import java.io.IOException; +import javax.swing.JComponent; +import javax.swing.JFileChooser; +import javax.swing.UIManager; + +public class bug4357012 { + private static File workDir = null; + private static File dir = null; + private static File file = null; + private static final String INSTRUCTIONS = """ + + Test is for Windows LAF only +

In JFileChooser's files list : +

    +
  1. Select directory. Verify that the directory name doesn't + appear in "file name" field.
  2. +
  3. Select file. Verify that the file name appears in + "file name" field.
  4. +
  5. Select directory again. Verify that the previous file name + remains in file name field.
  6. +
+

+ + """; + + public static void main(String[] argv) throws Exception { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + createTestDir(); + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .rows(10) + .columns(40) + .testUI(bug4357012::createTestUI) + .build() + .awaitAndCheck(); + } finally { + if (workDir != null) { + System.out.println("Deleting '" + file + "': " + file.delete()); + System.out.println("Deleting '" + dir + "': " + dir.delete()); + System.out.println("Deleting '" + workDir + "': " + workDir.delete()); + } + } + } + + private static void createTestDir() throws IOException { + String tempDir = "."; + String fs = System.getProperty("file.separator"); + + workDir = new File(tempDir + fs + "bug4357012"); + System.out.println("Creating '" + workDir + "': " + workDir.mkdir()); + + dir = new File(workDir + fs + "Directory"); + System.out.println("Creating '" + dir + "': " + dir.mkdir()); + + file = new File(workDir + fs + "File.txt"); + System.out.println("Creating '" + file + "': " + file.createNewFile()); + } + + private static JComponent createTestUI() { + JFileChooser fc = new JFileChooser(workDir); + fc.setDialogType(JFileChooser.SAVE_DIALOG); + return fc; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4464774.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4464774.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4464774.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4464774.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4464774 + * @requires (os.family == "windows") + * @summary JFileChooser: selection of left-side folder buttons shown incorrectly + in Windows L&F + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4464774 + */ + +import javax.swing.JFileChooser; +import javax.swing.UIManager; + +public class bug4464774 { + private static final String INSTRUCTIONS = """ + Click any button from the buttons to the left + ("Documents", "Desktop", "My Computer" etc.) in FileChooser dialog. + When the button is toggled, it should be lowered and + should NOT have focus painted inside it (black dotted frame). + + If the above is true, press PASS else FAIL. + """; + + public static void main(String[] argv) throws Exception { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(65) + .rows(10) + .testUI(() -> { + JFileChooser jfc = new JFileChooser(); + jfc.setControlButtonsAreShown(false); + return jfc; + }) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4522756.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4522756.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4522756.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4522756.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4522756 + * @requires (os.family == "windows") + * @summary Verifies that the Desktop icon is not missing when + JFileChooser is opened for the first time. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4522756 + */ + +import javax.swing.JFileChooser; +import javax.swing.UIManager; + +public class bug4522756 { + private static final String INSTRUCTIONS = """ + Verify the following: + + 1. If Desktop icon image is present on the Desktop button + on the left panel of JFileChooser. + 2. Press Desktop button. Check that you actually + go up to the desktop. + + If the above is true, press PASS else FAIL. + """; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .rows(12) + .testUI(() -> { + JFileChooser jfc = new JFileChooser(); + jfc.setControlButtonsAreShown(false); + return jfc; + }) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4759934.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4759934.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4759934.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4759934.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @bug 4759934 + * @summary windows activation problem + * @library /javax/swing/regtesthelpers + * @build Util + * @run main bug4759934 + */ + +import java.awt.Dialog; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.SwingUtilities; + +public class bug4759934 { + private static JFrame fr; + private static Dialog dlg; + private static JFileChooser jfc; + + private static JButton frameBtn; + private static JButton dialogBtn; + + public static void main(String[] args) throws Exception { + try { + Robot robot = new Robot(); + robot.setAutoWaitForIdle(true); + robot.setAutoDelay(50); + + SwingUtilities.invokeAndWait(bug4759934::createTestUI); + robot.waitForIdle(); + robot.delay(1000); + + Point frameBtnLoc = Util.getCenterPoint(frameBtn); + robot.mouseMove(frameBtnLoc.x, frameBtnLoc.y); + robot.mousePress(MouseEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK); + robot.delay(500); + + Point dlgBtnLoc = Util.getCenterPoint(dialogBtn); + robot.mouseMove(dlgBtnLoc.x , dlgBtnLoc.y); + robot.mousePress(MouseEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK); + robot.delay(500); + + robot.keyPress(KeyEvent.VK_ESCAPE); + robot.keyRelease(KeyEvent.VK_ESCAPE); + robot.delay(500); + + SwingUtilities.invokeAndWait(() -> { + if (frameBtn.hasFocus() && !dialogBtn.hasFocus()) { + throw new RuntimeException("Test failed! Focus was passed back" + + " to Frame instead of Dialog"); + } + }); + } finally { + SwingUtilities.invokeAndWait(() -> { + if (dlg != null) { + dlg.dispose(); + } + if (fr != null) { + fr.dispose(); + } + }); + } + } + + private static void createTestUI() { + fr = new JFrame("bug4759934 - JFrame"); + + frameBtn = new JButton("Show Dialog"); + frameBtn.addActionListener(e -> createDialog()); + fr.add(frameBtn); + + fr.setSize(300, 200); + fr.setLocationRelativeTo(null); + fr.setVisible(true); + } + + private static void createDialog() { + dlg = new JDialog(fr, "bug4759934 - JDialog"); + + dialogBtn = new JButton("Show FileChooser"); + dlg.add(dialogBtn); + + dialogBtn.addActionListener(e -> { + jfc = new JFileChooser(); + jfc.showOpenDialog(dlg); + }); + + dlg.setSize(300, 200); + dlg.setLocation(fr.getX() + fr.getWidth() + 10, fr.getY()); + dlg.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4926884.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4926884.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4926884.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4926884.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4926884 + * @requires (os.family == "windows") + * @summary Win L&F: JFileChooser problems with "My Documents" folder + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4926884 + */ + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import javax.swing.JFileChooser; +import javax.swing.UIManager; + +public class bug4926884 { + private static final String INSTRUCTIONS = """ + Validate next statements step by step: + + 1. In the file list there are several dirs and files (like "ski", + "Snowboard" etc.) + 2. Select "Details" view mode. + 3. Make file list in focus (e.g. by pressing mouse button) + 4. Press key "w" several times with delay LESS than 1 second. + Selection should be changed across files started with letter "w" + (without case sensitive). + 5. Press key "w" several times with delay MORE than 1 second. + Selection should be changed across files started with letter "w" + (without case sensitive). + 6. Type "winnt" (with delay less than 1 second between letters) - + directory "winnt" should be selected. + 7. Change conditions: + - Move column "Name" to the second position + - Change sort mode by clicking column "Size" + 8. Repeat items 4-6 + + If above is true press PASS else FAIL + """; + + private static final String[] DIRS = {"www", "winnt", "ski"}; + private static final String[] FILES = {"Window", "weel", "mice", + "Wall", "Snowboard", "wood"}; + private static final File testDir = new File("."); + + public static void main(String[] argv) throws Exception { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + try { + createTestDir(); + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(() -> new JFileChooser(testDir)) + .build() + .awaitAndCheck(); + } finally { + deleteTempDir(); + } + } + + private static void createTestDir() throws IOException { + testDir.mkdir(); + + for (String dir : DIRS) { + new File(testDir, dir).mkdir(); + } + + for (int i = 0; i < FILES.length; i++) { + + try (OutputStream outputStream = new FileOutputStream( + new File(testDir, FILES[i]))) { + for (int j = 0; j < i * 1024; j++) { + outputStream.write('#'); + } + } + } + } + + private static void deleteTempDir() { + File[] files = testDir.listFiles(); + + for (File file : files) { + if (file != null) { + file.delete(); + } + } + + testDir.delete(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4943900.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4943900.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug4943900.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug4943900.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4943900 + * @summary Tests that FileFilter combo box is shown in FileChooser + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4943900 + */ + +import java.io.File; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.UIManager; +import javax.swing.filechooser.FileFilter; + +public class bug4943900 { + private static final String INSTRUCTIONS = """ + +
    +
  1. When the test runs, a JFileChooser will be displayed. +
  2. Ensure that there is a filter combo box with these two items: +
      +
    • Text Files (*.txt) + — [must be selected when the dialog opens] +
    • All Files +
    +
  3. Leave the Text files item selected and check that the + filter works: only *.txt files can appear in the file list. + You can navigate directories in the file chooser and find one + that contains some *.txt files to ensure they are shown in + the file list. On macOS when the text filter is applied verify + that the non-text files are greyed out. +
  4. Try switching the filters and ensure that the file list + is updated properly. +
  5. If the FileFilter works correctly, + press Pass else press Fail. +
+ + """; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + + PassFailJFrame.builder() + .title("bug4943900 Test Instructions") + .instructions(INSTRUCTIONS) + .rows(14) + .columns(50) + .testUI(bug4943900::createAndShowUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createAndShowUI() { + JFileChooser fc = new JFileChooser(); + fc.setControlButtonsAreShown(false); + TextFileFilter filter = new TextFileFilter(); + fc.setFileFilter(filter); + + JFrame frame = new JFrame("bug4943900 - JFileChooser"); + frame.add(fc); + frame.pack(); + return frame; + } + + private static final class TextFileFilter extends FileFilter { + @Override + public boolean accept(File f) { + if (f != null) { + if (f.isDirectory()) { + return true; + } + String extension = getExtension(f); + return extension != null && extension.equals("txt"); + } + return false; + } + + @Override + public String getDescription() { + return "Text Files (*.txt)"; + } + + private static String getExtension(File f) { + if (f != null) { + String filename = f.getName(); + int i = filename.lastIndexOf('.'); + if (i > 0 && i < filename.length() - 1) { + return filename.substring(i + 1).toLowerCase(); + } + } + return null; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug5045464.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug5045464.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug5045464.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug5045464.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 5045464 + * @requires (os.family == "linux") + * @summary Regression: GTK L&F, JFileChooser shows "null/" in folder list + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug5045464 + */ + +import javax.swing.JComponent; +import javax.swing.JFileChooser; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + +public class bug5045464 { + private static final String INSTRUCTIONS = """ + When the filechooser appears check the directory list (the left list). + If it starts with two items: "./" (current directory) + and "../" (parent directory) press PASS. + If something else is here (e.g. "null/" instead of "./") + press FAIL. + """; + + public static void main(String[] argv) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug5045464::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JComponent createTestUI() { + JFileChooser fc = new JFileChooser(); + fc.setControlButtonsAreShown(false); + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); + } catch (Exception ex) { + throw new RuntimeException("Test Failed!", ex); + } + SwingUtilities.updateComponentTreeUI(fc); + return fc; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug6515169.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug6515169.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug6515169.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug6515169.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6515169 + * @requires (os.family == "windows") + * @summary wrong grid header in JFileChooser + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug6515169 + */ + +import javax.swing.ButtonGroup; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + +public class bug6515169 { + private static JFrame frame; + private static final String INSTRUCTIONS = """ + This test is to verify JFileChooser on Windows and Metal LAF. + Use the "Change LaF" menu to switch between the 2 LaF + and verify the following. + + a. Change view mode to "Details" + b. Check that 4 columns appear: Name, Size, Type and Date Modified + c. Change current directory by pressing any available subdirectory + or by pressing button "Up One Level". + d. Check that still four columns exist. + + Change LaF and repeat the steps a-d. + If all conditions are true press PASS, else FAIL. + """; + + public static void main(String[] argv) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug6515169::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + frame = new JFrame("bug6515169"); + JMenuBar bar = new JMenuBar(); + JMenu lafMenu = new JMenu("Change LaF"); + ButtonGroup lafGroup = new ButtonGroup(); + JCheckBoxMenuItem lafItem1 = new JCheckBoxMenuItem("Window LaF"); + lafItem1.addActionListener(e -> + setLaF(UIManager.getSystemLookAndFeelClassName())); + lafGroup.add(lafItem1); + lafMenu.add(lafItem1); + + JCheckBoxMenuItem lafItem2 = new JCheckBoxMenuItem("Metal LaF"); + lafItem2.addActionListener(e -> + setLaF(UIManager.getCrossPlatformLookAndFeelClassName())); + lafGroup.add(lafItem2); + lafMenu.add(lafItem2); + + bar.add(lafMenu); + frame.setJMenuBar(bar); + + String dir = "."; + JFileChooser fc = new JFileChooser(dir); + fc.setControlButtonsAreShown(false); + frame.add(fc); + frame.pack(); + + return frame; + } + + private static void setLaF(String laf) { + try { + UIManager.setLookAndFeel(laf); + SwingUtilities.updateComponentTreeUI(frame); + } catch (Exception e) { + throw new RuntimeException("Test Failed!", e); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug6798062.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug6798062.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFileChooser/bug6798062.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFileChooser/bug6798062.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2009, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6798062 + * @requires (os.family == "windows") + * @summary Memory Leak on using getFiles of FileSystemView + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @modules java.desktop/sun.awt + * java.desktop/sun.awt.shell + * @run main/manual bug6798062 + */ + +import sun.awt.OSInfo; +import sun.awt.shell.ShellFolder; + +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.FileNotFoundException; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSlider; +import javax.swing.JTextField; + +public class bug6798062 { + + private static final String INSTRUCTIONS = """ + The test is suitable only for Windows. + + 1. Create a shortcut (.lnk) file + 2. Copy path to the shortcut (.lnk file) into TextField + 3. Run the Windows Task Manager. Select the Processes tab and find the java process + 4. Press the Start button in the test window + 5. Wait several minutes and observe in the Windows Task Manager + that Memory Usage of java process is not increasing + If memory usage is increasing, click Fail else click Pass."""; + + private static JSlider slider; + private static JTextField tfLink; + private static JButton btnStart; + private static JButton btnStop; + private static JButton btnGC; + + private ShellFolder folder; + private Thread thread; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("JFileChooser Instructions") + .instructions(INSTRUCTIONS) + .testTimeOut(10) + .rows(10) + .columns(35) + .testUI(bug6798062::createUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createUI() { + slider = new JSlider(0, 100); + tfLink = new JTextField(); + btnStart = new JButton("Start"); + btnStop = new JButton("Stop"); + btnGC = new JButton("Run System.gc()"); + JFrame frame = new JFrame("bug6798062"); + + frame.setSize(400, 300); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.add(new bug6798062().initialize()); + + return frame; + } + + private JComponent initialize() { + if (OSInfo.getOSType() != OSInfo.OSType.WINDOWS) { + return new JLabel("The test is suitable only for Windows"); + } + + String tempDir = System.getProperty("java.io.tmpdir"); + + if (tempDir.length() == 0) { // 'java.io.tmpdir' isn't guaranteed to be defined + tempDir = System.getProperty("user.home"); + } + + System.out.println("Temp directory: " + tempDir); + + try { + folder = ShellFolder.getShellFolder(new File(tempDir)); + } catch (FileNotFoundException e) { + fail("Directory not found"); + } + + slider.setMajorTickSpacing(10); + slider.setPaintTicks(true); + slider.setPaintLabels(true); + slider.setSnapToTicks(true); + slider.setValue(10); + + btnStart.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + setEnabledState(false); + + thread = new MyThread(slider.getValue(), tfLink.getText()); + thread.start(); + } + }); + + btnStop.setEnabled(false); + + btnStop.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + thread.interrupt(); + thread = null; + + setEnabledState(true); + } + }); + + btnGC.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + System.gc(); + } + }); + + setEnabledState(true); + + JPanel pnButtons = new JPanel(); + + pnButtons.setLayout(new BoxLayout(pnButtons, BoxLayout.X_AXIS)); + + pnButtons.add(btnStart); + pnButtons.add(btnStop); + pnButtons.add(btnGC); + + tfLink.setMaximumSize(new Dimension(300, 20)); + + JPanel pnContent = new JPanel(); + + pnContent.setLayout(new BoxLayout(pnContent, BoxLayout.Y_AXIS)); + pnContent.add(new JLabel("Delay between listFiles() invocation (ms):")); + pnContent.add(slider); + pnContent.add(new JLabel("Provide link here:")); + pnContent.add(tfLink); + pnContent.add(pnButtons); + + return pnContent; + } + + private void setEnabledState(boolean enabled) { + slider.setEnabled(enabled); + btnStart.setEnabled(enabled); + btnStop.setEnabled(!enabled); + } + + private static void fail(String msg) { + PassFailJFrame.forceFail(msg); + } + + private class MyThread extends Thread { + private final int delay; + + private final ShellFolder link; + + private MyThread(int delay, String link) { + this.delay = delay; + + ShellFolder linkFolder; + + try { + linkFolder = ShellFolder.getShellFolder(new File(link)); + } catch (FileNotFoundException e) { + fail("File not found"); + + linkFolder = null; + } + + this.link = linkFolder; + } + + public void run() { + while (!isInterrupted()) { + folder.listFiles(); + if (link != null) { + try { + link.getLinkLocation(); + } catch (FileNotFoundException e) { + fail("File not found"); + } + } + + if (delay > 0) { + try { + Thread.sleep(delay); + } catch (InterruptedException e1) { + // The thread was interrupted + return; + } + } + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JFrame/bug4419914.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JFrame/bug4419914.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JFrame/bug4419914.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JFrame/bug4419914.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,55 +28,141 @@ * @library /java/awt/regtesthelpers * @build PassFailJFrame * @run main/manual bug4419914 -*/ + */ import java.awt.BorderLayout; import java.awt.ComponentOrientation; +import java.awt.Frame; +import java.awt.Window; +import java.util.List; +import java.util.Locale; import javax.swing.JButton; +import javax.swing.JDialog; import javax.swing.JFrame; -import java.util.Locale; +import javax.swing.JLabel; +import javax.swing.JWindow; public class bug4419914 { + private static JFrame frame; private static final String INSTRUCTIONS = """ - 1. You will see a frame with five buttons. - 2. Confirm that each button is placed as follows: - NORTH - END CENTER START - SOUTH - 3. Press the "NORTH" button and confirm the button is focused. - 4. Press TAB repeatedly and confirm that the TAB focus moves from right to left. - (NORTH - START - CENTER - END - SOUTH - NORTH - START - CENTER - ...) + This test verifies tab movement on RTL component orientation + in JWindow, JFrame and JDialog. + + When test starts 3 test windows are displayed - JFrame, JWindow and JDialog. + Follow the instructions below and if any condition does not hold + press FAIL. + + 1. Confirm that each button in the child window is placed as follows: + + For JFrame: + NORTH + END CENTER START + SOUTH + + For JWindow: + END CENTER START + QUIT + + For JDialog: + END CENTER START + + 3. Press on the "START" button in case of JWindow & JDialog and "NORTH" + in case of JFrame, confirm that the respective button is focused. + + 4. Press TAB repeatedly and confirm that the TAB focus moves + from right to left. - If there's anything different from the above items, click Fail else click Pass."""; + For JFrame: + (NORTH - START - CENTER - END - SOUTH - NORTH - START - CENTER - ...) + + For JWindow: + (START - CENTER - END - QUIT - START - CENTER - END - QUIT - ...) + + For JDialog: + (START - CENTER - END - START - CENTER - END - ...) + + If all of the above conditions are true press PASS else FAIL. + """; public static void main(String[] args) throws Exception { PassFailJFrame.builder() - .title("Tab movement Instructions") .instructions(INSTRUCTIONS) - .rows((int) INSTRUCTIONS.lines().count() + 2) - .columns(48) - .testUI(bug4419914::createTestUI) + .columns(45) + .testTimeOut(10) + .testUI(bug4419914::createAndShowUI) + .positionTestUI(WindowLayouts::rightOneColumn) .build() .awaitAndCheck(); } - private static JFrame createTestUI() { - JFrame frame = new JFrame("bug4419914"); + private static List createAndShowUI() { + return List.of(createJFrame(), createJWindow(), createJDialog()); + } + + private static JFrame createJFrame() { + frame = new JFrame("bug4419914 JFrame"); frame.setFocusCycleRoot(true); + // Tab movement set to RTL frame.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); frame.setLocale(Locale.ENGLISH); frame.enableInputMethods(false); + // Component placement within content pane set to RTL frame.getContentPane().setComponentOrientation( - ComponentOrientation.RIGHT_TO_LEFT); + ComponentOrientation.RIGHT_TO_LEFT); frame.getContentPane().setLocale(Locale.ENGLISH); - frame.getContentPane().setLayout(new BorderLayout()); + frame.setLayout(new BorderLayout()); frame.add(new JButton("SOUTH"), BorderLayout.SOUTH); frame.add(new JButton("CENTER"), BorderLayout.CENTER); frame.add(new JButton("END"), BorderLayout.LINE_END); frame.add(new JButton("START"), BorderLayout.LINE_START); frame.add(new JButton("NORTH"), BorderLayout.NORTH); - frame.setSize(300, 150); + frame.setSize(300, 160); return frame; } + + private static JWindow createJWindow() { + JWindow window = new JWindow(frame); + window.setFocusableWindowState(true); + // Tab movement set to RTL + window.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); + window.setLocale(new Locale("en")); + window.enableInputMethods(false); + + // Component placement within content pane set to RTL + window.getContentPane().setComponentOrientation( + ComponentOrientation.RIGHT_TO_LEFT); + window.getContentPane().setLocale(new Locale("en")); + window.setLayout(new BorderLayout()); + window.add(new JLabel("bug4419914 JWindow"), BorderLayout.NORTH); + window.add(new JButton("START"), BorderLayout.LINE_START); + window.add(new JButton("CENTER"), BorderLayout.CENTER); + window.add(new JButton("END"), BorderLayout.LINE_END); + + JButton quitButton = new JButton("QUIT"); + quitButton.addActionListener(e1 -> window.dispose()); + window.add(quitButton, BorderLayout.SOUTH); + window.setSize(300, 153); + window.requestFocus(); + return window; + } + + private static JDialog createJDialog() { + JDialog dialog = new JDialog((Frame) null, "bug4419914 JDialog"); + // Tab movement set to RTL + dialog.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); + dialog.setLocale(new Locale("en")); + dialog.enableInputMethods(false); + + // Component placement within content pane set to RTL + dialog.getContentPane().setComponentOrientation( + ComponentOrientation.RIGHT_TO_LEFT); + dialog.getContentPane().setLocale(new Locale("en")); + dialog.setLayout(new BorderLayout()); + dialog.add(new JButton("CENTER"), BorderLayout.CENTER); + dialog.add(new JButton("END"), BorderLayout.LINE_END); + dialog.add(new JButton("START"), BorderLayout.LINE_START); + dialog.setSize(300, 160); + return dialog; + } } diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/6726866/bug6726866.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/6726866/bug6726866.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/6726866/bug6726866.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/6726866/bug6726866.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2009, 2024, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 6726866 8186617 - * @summary Repainting artifacts when resizing or dragging JInternalFrames in - non-opaque toplevel - * @library /java/awt/regtesthelpers - * @build PassFailJFrame - * @run main/manual bug6726866 -*/ - -import java.awt.Color; -import java.awt.Window; - -import javax.swing.JApplet; -import javax.swing.JDesktopPane; -import javax.swing.JFrame; -import javax.swing.JInternalFrame; -import javax.swing.JLabel; -import javax.swing.SwingUtilities; - -public class bug6726866 { - - private static final String INSTRUCTIONS = """ - Drag the internal frame inside the green undecorated window, - if you can drag it the test passes, otherwise fails. """; - - public static void main(String[] args) throws Exception { - PassFailJFrame.builder() - .title("JInternalFrame Instructions") - .instructions(INSTRUCTIONS) - .rows(5) - .columns(35) - .testUI(bug6726866::createUI) - .build() - .awaitAndCheck(); - } - - private static JFrame createUI() { - JFrame frame = new JFrame("bug6726866"); - frame.setUndecorated(true); - setWindowNonOpaque(frame); - - JDesktopPane desktop = new JDesktopPane(); - desktop.setBackground(Color.GREEN); - JInternalFrame iFrame = new JInternalFrame("Test", true, true, true, true); - iFrame.add(new JLabel("internal Frame")); - iFrame.setBounds(10, 10, 300, 200); - iFrame.setVisible(true); - desktop.add(iFrame); - frame.add(desktop); - - frame.setSize(400, 400); - return frame; - } - - public static void setWindowNonOpaque(Window window) { - Color bg = window.getBackground(); - if (bg == null) { - bg = new Color(0, 0, 0, 0); - } - window.setBackground( - new Color(bg.getRed(), bg.getGreen(), bg.getBlue(), 0)); - } -} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -21,6 +21,7 @@ * questions. */ +import java.io.File; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Point; @@ -28,6 +29,7 @@ import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.image.BufferedImage; +import javax.imageio.ImageIO; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; @@ -51,6 +53,7 @@ private static JInternalFrame internalFrame; private static int FRAME_SIZE = 500; private static Color BACKGROUND_COLOR = Color.ORANGE; + private static final int tolerance = 10; public static void main(String[] args) throws Exception { try { @@ -69,14 +72,24 @@ BufferedImage img = robot.createScreenCapture(rect); int testRGB = BACKGROUND_COLOR.getRGB(); + Color testColor = new Color(testRGB); for (int i = 1; i < size; i++) { int rgbCW = img.getRGB(i, size / 2); int rgbCH = img.getRGB(size / 2, i); - if (rgbCW != testRGB || rgbCH != testRGB) { + Color rgbCWColor = new Color(rgbCW); + Color rgbCHColor = new Color(rgbCH); + + if (Math.abs(rgbCWColor.getRed() - testColor.getRed()) > tolerance + || Math.abs(rgbCWColor.getGreen() - testColor.getGreen()) > tolerance + || Math.abs(rgbCWColor.getBlue() - testColor.getBlue()) > tolerance + || Math.abs(rgbCHColor.getRed() - testColor.getRed()) > tolerance + || Math.abs(rgbCHColor.getGreen() - testColor.getGreen()) > tolerance + || Math.abs(rgbCHColor.getBlue() - testColor.getBlue()) > tolerance) { System.out.println("i " + i + " rgbCW " + Integer.toHexString(rgbCW) + " testRGB " + Integer.toHexString(testRGB) + " rgbCH " + Integer.toHexString(rgbCH)); + ImageIO.write(img, "png", new File("JInternalFrameDraggingTest.png")); throw new RuntimeException("Background color is wrong!"); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/InternalFrameTitleButtonTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/InternalFrameTitleButtonTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/InternalFrameTitleButtonTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/InternalFrameTitleButtonTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8140527 + * @key headful + * @requires (os.family == "windows") + * @summary InternalFrame has incorrect title button width + * @run main InternalFrameTitleButtonTest + */ + +import java.awt.Component; +import java.awt.Robot; + +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.plaf.basic.BasicInternalFrameUI; + +public class InternalFrameTitleButtonTest { + + private static JFrame frame; + private static JInternalFrame iframe; + + public static void main(String[] args) throws Exception { + String osName = System.getProperty("os.name"); + if (!osName.toLowerCase().contains("win")) { + System.out.println("The test is applicable only for Windows."); + return; + } + + UIManager.setLookAndFeel( + "com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); + try { + test(2); + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + UIManager.setLookAndFeel( + "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + try { + test(14); + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + System.out.println("ok"); + } + + private static void test(final int widthAdd) throws Exception { + SwingUtilities.invokeAndWait(() -> { + frame = new JFrame(); + + JDesktopPane pane = new JDesktopPane(); + frame.setContentPane(pane); + frame.setSize(400, 400); + frame.setVisible(true); + + iframe = new JInternalFrame("Mail Reader", true, + true, true, true); + iframe.setSize(200, 200); + pane.add(iframe); + iframe.setVisible(true); + }); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(1000); + + SwingUtilities.invokeAndWait(() -> { + JComponent title = ((BasicInternalFrameUI) iframe.getUI()).getNorthPane(); + for (int i = 0; i < title.getComponentCount(); i++) { + Component c = title.getComponent(i); + if (c instanceof JButton button + && !testButtonSize(button, widthAdd)) { + throw new RuntimeException("Wrong title icon size"); + } + } + }); + } + + private static boolean testButtonSize(final JButton button, + final int widthAdd) { + int height = UIManager.getInt("InternalFrame.titleButtonHeight") - 4; + Icon icon = button.getIcon(); + return height == button.getHeight() + && (height + widthAdd) == button.getWidth() + && height == icon.getIconHeight() + && (height + widthAdd) == icon.getIconWidth(); + } +} + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4151444.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4151444.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4151444.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4151444.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4151444 + * @summary The maximize button acts like the restore button + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4151444 +*/ + +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JLayeredPane; +import javax.swing.UIManager; + + +public class bug4151444 { + + private static JFrame frame; + private static JInternalFrame interFrame; + + private static final String INSTRUCTIONS = """ + - maximize the internal frame + - then minimize the internal frame + - then maximize the internal frame again + - Check whether internal frame is maximized + - Test will fail automatically even if "Pass" is pressed + if internal frame is not maximized."""; + + public static void main(String[] args) throws Exception { + + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + + PassFailJFrame pfj = PassFailJFrame.builder() + .title("bug4151444 Instructions") + .instructions(INSTRUCTIONS) + .columns(45) + .testUI(bug4151444::createTestUI) + .build(); + try { + pfj.awaitAndCheck(); + } finally { + if (!interFrame.isMaximum()) { + throw new RuntimeException ("Test failed. The maximize button acts like the restore button"); + } + } + } + + private static JFrame createTestUI() { + JFrame frame = new JFrame("bug4151444 frame"); + JDesktopPane desktop = new JDesktopPane(); + frame.setContentPane(desktop); + interFrame = new JInternalFrame( + "Internal frame", true, true, true, true); + desktop.add(interFrame, JLayeredPane.DEFAULT_LAYER); + interFrame.setBounds(0, 0, 200, 100); + interFrame.setVisible(true); + frame.setSize(300, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4190516.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4190516.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4190516.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4190516.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4190516 + * @summary JInternalFrame should be maximized when Desktop resized + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4190516 + */ + +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.SwingUtilities; + +public class bug4190516 { + + private static final String INSTRUCTIONS = """ + Try to resize frame "bug4190516 Frame". + If the internal frame remains maximized + inside this frame then test passes, else test fails."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4190516 Instructions") + .instructions(INSTRUCTIONS) + .columns(25) + .testUI(bug4190516::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + JFrame fr = new JFrame("bug4190516 Frame"); + JDesktopPane jdp = new JDesktopPane(); + fr.getContentPane().add(jdp); + + JInternalFrame jif = new JInternalFrame("Title", true, true, true, true); + jdp.add(jif); + jif.setSize(150, 150); + jif.setVisible(true); + + fr.setSize(300, 200); + try { + jif.setMaximum(true); + } catch (Exception e) { + throw new RuntimeException(e); + } + + SwingUtilities.updateComponentTreeUI(fr); + return fr; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4215380.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4215380.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4215380.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4215380.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4215380 + * @summary Internal Frame should get focus + * @key headful + * @run main bug4215380 + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.InputEvent; +import java.awt.Point; +import java.awt.Robot; + +import javax.swing.JButton; +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JLayeredPane; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; + +public class bug4215380 { + + private static String button; + private static JButton b; + private static JFrame frame; + private static JInternalFrame jif; + private static volatile Point loc; + private static volatile Dimension size; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + SwingUtilities.invokeAndWait(() -> { + frame = new JFrame("bug4215380"); + JDesktopPane desktop = new JDesktopPane(); + frame.add(desktop, BorderLayout.CENTER); + + jif = iFrame(1); + desktop.add(jif, JLayeredPane.DEFAULT_LAYER); + desktop.add(iFrame(2), JLayeredPane.DEFAULT_LAYER); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + SwingUtilities.invokeAndWait(() -> { + loc = b.getLocationOnScreen(); + size = b.getSize(); + }); + robot.mouseMove(loc.x + size.width / 2, loc.y + size.height / 2); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + robot.delay(500); + if (!(jif.isSelected()) && !button.equals("Frame 1")) { + throw new RuntimeException("Internal frame \"Frame 1\" should be selected..."); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + private static JInternalFrame iFrame(int i) { + JInternalFrame frame = new JInternalFrame("Frame " + i); + JPanel panel = new JPanel(); + JButton bt = new JButton("Button " + i); + if (i == 1) { + b = bt; + } + bt.addActionListener(e -> button = ((JButton)e.getSource()).getText()); + + panel.add(bt); + + frame.getContentPane().add(panel); + frame.setBounds(10, i * 80 - 70, 120, 90); + frame.setVisible(true); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4242045.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4242045.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4242045.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4242045.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4242045 + * @requires (os.family == "windows") + * @summary JInternalFrame titlepane icons should be restored after attribute change + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4242045 + */ + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; + +import javax.swing.JButton; +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + +public class bug4242045 { + + private static JFrame frame; + + private static final String INSTRUCTIONS = """ + Add and remove iconify/maximize/close buttons using the buttons + "Iconifiable", "Maximizable", "Closable" under different LookAndFeels. + If they appears and disappears correctly then test passes. If any + button does not appear or disappear as expected or appear with incorrect + placement then test fails."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4242045 Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(bug4242045::createTestUI) + .build() + .awaitAndCheck(); + } + + private static void setLF(ActionEvent e) { + try { + UIManager.setLookAndFeel(((JButton)e.getSource()).getActionCommand()); + SwingUtilities.updateComponentTreeUI(frame); + } catch (ClassNotFoundException | InstantiationException + | UnsupportedLookAndFeelException + | IllegalAccessException ex) { + throw new RuntimeException(ex); + } + } + + private static JFrame createTestUI() { + + frame = new JFrame("bug4242045"); + JDesktopPane jdp = new JDesktopPane(); + JInternalFrame jif = new JInternalFrame("Test", true); + frame.add(jdp); + + jdp.add(jif); + jif.setSize(150, 150); + jif.setVisible(true); + + JPanel p = new JPanel(); + + JButton metal = new JButton("Metal"); + metal.setActionCommand("javax.swing.plaf.metal.MetalLookAndFeel"); + metal.addActionListener((ActionEvent e) -> setLF(e)); + p.add(metal); + + JButton windows = new JButton("Windows"); + windows.setActionCommand("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + windows.addActionListener((ActionEvent e) -> setLF(e)); + p.add(windows); + + JButton motif = new JButton("Motif"); + motif.setActionCommand("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + motif.addActionListener((ActionEvent e) -> setLF(e)); + p.add(motif); + + JButton clo = new JButton("Closable"); + clo.addActionListener(e -> jif.setClosable(!jif.isClosable())); + p.add(clo); + + JButton ico = new JButton("Iconifiable"); + ico.addActionListener(e -> jif.setIconifiable(!jif.isIconifiable())); + p.add(ico); + + JButton max = new JButton("Maximizable"); + max.addActionListener(e -> jif.setMaximizable(!jif.isMaximizable())); + p.add(max); + + frame.add(p, BorderLayout.SOUTH); + frame.setSize(650, 250); + return frame; + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4321312.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4321312.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4321312.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4321312.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4321312 + * @summary Verifies no Exception thrown from BasicInternalFrameUI$BorderListener + * @key headful + * @run main bug4321312 + */ + +import java.awt.Dimension; +import java.awt.event.InputEvent; +import java.awt.event.MouseEvent; +import java.awt.Point; +import java.awt.Robot; + +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + +public class bug4321312 { + + private static JFrame frame; + private static MyInternalFrame jif; + private static volatile Point loc; + private static volatile Dimension size; + + static boolean fails; + static Exception exc; + + private static synchronized boolean isFails() { + return fails; + } + + private static synchronized void setFails(Exception e) { + fails = true; + exc = e; + } + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + SwingUtilities.invokeAndWait(() -> { + try { + UIManager.setLookAndFeel( + "com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + } catch (ClassNotFoundException | InstantiationException + | UnsupportedLookAndFeelException + | IllegalAccessException e) { + throw new RuntimeException(e); + } + + frame = new JFrame("bug4321312"); + JDesktopPane jdp = new JDesktopPane(); + frame.add(jdp); + + jif = new MyInternalFrame("Internal Frame", true); + jdp.add(jif); + jif.setSize(150, 150); + jif.setVisible(true); + + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + SwingUtilities.invokeAndWait(() -> { + loc = jif.getLocationOnScreen(); + size = jif.getSize(); + }); + robot.mouseMove(loc.x + size.width / 2, loc.y + size.height / 2); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + robot.delay(200); + if (isFails()) { + throw new RuntimeException(exc); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + static class MyInternalFrame extends JInternalFrame { + MyInternalFrame(String str, boolean b) { + super(str, b); + } + + protected void processMouseEvent(MouseEvent e) { + try { + super.processMouseEvent(e); + } catch (Exception exc) { + setFails(exc); + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4322726.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4322726.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug4322726.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug4322726.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4322726 + * @summary Tests that JInternalFrame throws ArrayIndexOutOfBoundsException when Control-F4 pressed + * @key headful + * @run main bug4322726 + */ + +import java.awt.event.KeyEvent; +import java.awt.Robot; + +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; +import java.beans.PropertyVetoException; + +public class bug4322726 { + + private static JFrame frame; + private static JInternalFrame internalFrame; + private static volatile boolean failed; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + SwingUtilities.invokeAndWait(() -> { + frame = new JFrame("bug4322726"); + frame.setSize(600, 400); + TestDesktopPane desktopPane = new TestDesktopPane(); + frame.setContentPane(desktopPane); + internalFrame = new JInternalFrame(); + internalFrame.setClosable(true); + internalFrame.setMaximizable(true); + internalFrame.setIconifiable(true); + internalFrame.setResizable(true); + internalFrame.setTitle("Internal Frame"); + internalFrame.setSize(300, 200); + internalFrame.setVisible(true); + desktopPane.add(internalFrame); + + frame.setSize(400, 400); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + SwingUtilities.invokeAndWait(() -> { + try { + internalFrame.setSelected(true); + } catch (PropertyVetoException e) { + throw new RuntimeException("PropertyVetoException thrown"); + } + }); + robot.waitForIdle(); + robot.delay(200); + robot.keyPress(KeyEvent.VK_CONTROL); + robot.keyPress(KeyEvent.VK_F4); + robot.keyRelease(KeyEvent.VK_F4); + robot.keyRelease(KeyEvent.VK_CONTROL); + robot.waitForIdle(); + robot.delay(200); + if (failed) { + throw new RuntimeException("Failed: index is out of bounds"); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + static class TestDesktopPane extends JDesktopPane { + protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) { + try { + return super.processKeyBinding(ks, e, condition, pressed); + } catch (ArrayIndexOutOfBoundsException ex) { + failed = true; + } + return failed; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug6726866.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug6726866.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JInternalFrame/bug6726866.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JInternalFrame/bug6726866.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2009, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6726866 8186617 + * @summary Repainting artifacts when resizing or dragging JInternalFrames in + non-opaque toplevel + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug6726866 +*/ + +import java.awt.Color; +import java.awt.Window; + +import javax.swing.JApplet; +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JLabel; +import javax.swing.SwingUtilities; + +public class bug6726866 { + + private static final String INSTRUCTIONS = """ + Drag the internal frame inside the green undecorated window, + if you can drag it the test passes, otherwise fails. """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("JInternalFrame Instructions") + .instructions(INSTRUCTIONS) + .rows(5) + .columns(35) + .testUI(bug6726866::createUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createUI() { + JFrame frame = new JFrame("bug6726866"); + frame.setUndecorated(true); + setWindowNonOpaque(frame); + + JDesktopPane desktop = new JDesktopPane(); + desktop.setBackground(Color.GREEN); + JInternalFrame iFrame = new JInternalFrame("Test", true, true, true, true); + iFrame.add(new JLabel("internal Frame")); + iFrame.setBounds(10, 10, 300, 200); + iFrame.setVisible(true); + desktop.add(iFrame); + frame.add(desktop); + + frame.setSize(400, 400); + return frame; + } + + public static void setWindowNonOpaque(Window window) { + Color bg = window.getBackground(); + if (bg == null) { + bg = new Color(0, 0, 0, 0); + } + window.setBackground( + new Color(bg.getRed(), bg.getGreen(), bg.getBlue(), 0)); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JLabel/bug4106007.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JLabel/bug4106007.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JLabel/bug4106007.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JLabel/bug4106007.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4106007 + * @summary Multi-line JLabel is now supported for HTML labels. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4106007 + * */ + +import java.awt.BorderLayout; +import javax.swing.JFrame; +import javax.swing.JLabel; + +public class bug4106007 { + + static final String INSTRUCTIONS = """ + The test window should have a label spanning multiple lines. + If it is press PASS, else press FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4106007::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame frame = new JFrame("Bug4106007"); + frame.setLayout(new BorderLayout()); + String str = ""; + String longLine = + "I hope multi-line JLabel is now supported and you can see several lines instead of one long line. "; + str += longLine; + str += longLine; + str += ""; + JLabel lab = new JLabel(str); + frame.add(lab, BorderLayout.NORTH); + frame.setSize(400, 400); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JLabel/bug4945795.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JLabel/bug4945795.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JLabel/bug4945795.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JLabel/bug4945795.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4945795 + * @summary With mnemonic hiding turned on, Java does not display all mnemonics with ALT key + * @requires (os.family == "windows") + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4945795 + * */ + +import java.awt.BorderLayout; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.UIManager; + +public class bug4945795 { + + static final String INSTRUCTIONS = """ + This test is for the Swing Windows Look And Feel. + A test window will be displayed with the label 'Mnemonic Test' + Click the mouse in the test window to make sure it has keyboard focus. + Now press and hold the 'Alt' key. + An underline should be displayed below the initial 'M' character. + If it is press PASS, else press FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4945795::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame mainFrame = new JFrame("Bug4945795"); + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception ex) { + throw new RuntimeException("Can not set system look and feel"); + } + mainFrame.setLayout(new BorderLayout()); + mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + JLabel label = new JLabel("Mnemonic test"); + label.setDisplayedMnemonic('M'); + mainFrame.add(label, BorderLayout.NORTH); + mainFrame.setSize(400, 300); + return mainFrame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JList/bug4193267.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4193267.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JList/bug4193267.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4193267.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4193267 + * @summary Tests that JList first and last visible indices are + * updated properly + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4193267 + */ + +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.util.List; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +public class bug4193267 { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + Resize the frame "JList" with a different ways and scroll the list + (if it possible). The indices of first and last visible elements + should be indicated in the corresponding fields in "Index" frame. + If the indicated indices is not right then test fails. + + Note: + - the first and last visible indices should be -1 if nothing + is visible; + - the first or last visible cells may only be partially visible. + """; + PassFailJFrame.builder() + .title("bug4193267 Instructions") + .instructions(INSTRUCTIONS) + .positionTestUI(WindowLayouts::rightOneRow) + .columns(35) + .testUI(bug4193267::initialize) + .build() + .awaitAndCheck(); + } + + private static List initialize() { + String[] data = {"000000000000000", "111111111111111", + "222222222222222", "333333333333333", + "444444444444444", "555555555555555", + "666666666666666", "777777777777777", + "888888888888888", "999999999999999"}; + + JFrame[] fr = new JFrame[2]; + fr[0] = new JFrame("JList"); + JList lst = new JList(data); + lst.setLayoutOrientation(JList.VERTICAL_WRAP); + lst.setVisibleRowCount(4); + JScrollPane jsp = new JScrollPane(lst); + fr[0].add(jsp); + fr[0].setSize(400, 200); + + JPanel pL = new JPanel(); + pL.setLayout(new GridLayout(2, 1)); + pL.add(new JLabel("First Visible Index")); + pL.add(new JLabel("Last Visible Index")); + + JPanel p = new JPanel(); + p.setLayout(new GridLayout(2, 1)); + JTextField first = new JTextField("0", 2); + first.setEditable(false); + first.setBackground(Color.white); + p.add(first); + JTextField last = new JTextField("9", 2); + last.setEditable(false); + last.setBackground(Color.white); + p.add(last); + + fr[1] = new JFrame("Index"); + fr[1].setSize(200, 200); + fr[1].setLayout(new FlowLayout()); + fr[1].add(pL); + fr[1].add(p); + + jsp.getViewport().addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + first.setText(String.valueOf(lst.getFirstVisibleIndex())); + last.setText(String.valueOf(lst.getLastVisibleIndex())); + } + }); + List frameList = List.of(fr[0], fr[1]); + return frameList; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JList/bug4249161.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4249161.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JList/bug4249161.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4249161.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4249161 + * @summary Tests that JList.setComponentOrientation() works correctly + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4249161 + */ + +import java.awt.BorderLayout; +import java.awt.ComponentOrientation; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JList; +import javax.swing.JScrollPane; + +public class bug4249161 { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + 1. With a scroll bar, confirm that all words ("one" - "twenty") are + aligned at the left side of a list. + 2. Press "Change!" button. All words on the list should be moved + to the right side. + 3. Press the same button again. All words should be moved to the + left side. + + If all items in a list are moved as soon as "Change!" button is + pressed, test passes. + """; + PassFailJFrame.builder() + .title("bug4249161 Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(bug4249161::initialize) + .build() + .awaitAndCheck(); + } + + private static JFrame initialize() { + JFrame fr = new JFrame("bug4249161"); + + String[] data = {"one", "two", "three", "four", "five", + "six", "seven", "eight", "nine", "ten", + "eleven", "twelve", "thirteen", "fourteen", "fifteen", + "sixteen", "seventeen", "eighteen", "nineteen", "twenty" + }; + final JList list = new JList(data); + list.setSize(200, 200); + list.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); + JScrollPane pane = new JScrollPane(list); + fr.add(pane); + + JButton button = new JButton("Change!"); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (list.getComponentOrientation() != + ComponentOrientation.RIGHT_TO_LEFT) { + list.setComponentOrientation + (ComponentOrientation.RIGHT_TO_LEFT); + } else { + list.setComponentOrientation + (ComponentOrientation.LEFT_TO_RIGHT); + } + } + }); + fr.add(button, BorderLayout.SOUTH); + fr.setSize(200, 300); + fr.setAlwaysOnTop(true); + return fr; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JList/bug4618767.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4618767.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JList/bug4618767.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JList/bug4618767.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,127 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4618767 + * @summary First letter navigation in JList interferes with mnemonics + * @key headful + * @run main bug4618767 + */ + +import java.awt.Robot; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.KeyEvent; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import javax.swing.JFrame; +import javax.swing.JList; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.SwingUtilities; +import javax.swing.event.MenuEvent; +import javax.swing.event.MenuListener; + +public class bug4618767 { + private static JFrame f; + private static final JList list = new + JList(new String[] {"one", "two", "three", "four"}); + private static boolean menuSelected; + private static volatile boolean failed; + private static CountDownLatch listGainedFocusLatch = new CountDownLatch(1); + + public static void main(String[] args) throws Exception { + try { + createUI(); + runTest(); + } finally { + SwingUtilities.invokeAndWait(() -> { + if (f != null) { + f.dispose(); + } + }); + } + } + + private static void createUI() throws Exception { + SwingUtilities.invokeAndWait(() -> { + f = new JFrame("bug4618767"); + JMenu menu = new JMenu("File"); + menu.setMnemonic('F'); + JMenuItem menuItem = new JMenuItem("item"); + menu.add(menuItem); + JMenuBar menuBar = new JMenuBar(); + menuBar.add(menu); + f.setJMenuBar(menuBar); + + menu.addMenuListener(new MenuListener() { + public void menuCanceled(MenuEvent e) {} + public void menuDeselected(MenuEvent e) {} + public void menuSelected(MenuEvent e) { + menuSelected = true; + } + }); + + list.addFocusListener(new FocusAdapter() { + @Override + public void focusGained(FocusEvent e) { + listGainedFocusLatch.countDown(); + } + }); + f.add(list); + f.pack(); + f.setLocationRelativeTo(null); + f.setAlwaysOnTop(true); + f.setVisible(true); + }); + } + + private static void runTest() throws Exception { + if (!listGainedFocusLatch.await(3, TimeUnit.SECONDS)) { + throw new RuntimeException("Waited too long, but can't gain" + + " focus for list"); + } + Robot robot = new Robot(); + robot.setAutoDelay(200); + robot.waitForIdle(); + robot.keyPress(KeyEvent.VK_O); + robot.keyRelease(KeyEvent.VK_O); + robot.waitForIdle(); + robot.keyPress(KeyEvent.VK_ALT); + robot.keyPress(KeyEvent.VK_F); + robot.keyRelease(KeyEvent.VK_F); + robot.keyRelease(KeyEvent.VK_ALT); + + SwingUtilities.invokeAndWait(() -> { + if (menuSelected && list.getSelectedIndex()!= 0) { + failed = true; + } + }); + if (failed) { + throw new RuntimeException("Mnemonics interferes with Jlist" + + " item selection using KeyEvent"); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuBar/RightLeftOrientation.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuBar/RightLeftOrientation.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuBar/RightLeftOrientation.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuBar/RightLeftOrientation.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -20,75 +20,76 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ + /* * @test * @bug 4211731 4214512 * @summary * This test checks if menu bars lay out correctly when their - * ComponentOrientation property is set to RIGHT_TO_LEFT. This test is - * manual. The tester is asked to compare left-to-right and - * right-to-left menu bars and judge whether they are mirror images of each - * other. + * ComponentOrientation property is set to RIGHT_TO_LEFT. + * The tester is asked to compare left-to-right and + * right-to-left menu bars and decide whether they are mirror + * images of each other. * @library /test/jdk/java/awt/regtesthelpers * @build PassFailJFrame * @run main/manual RightLeftOrientation */ import java.awt.ComponentOrientation; -import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.List; + import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.SwingUtilities; import javax.swing.UIManager; -public class RightLeftOrientation { +public final class RightLeftOrientation { - static JFrame ltrFrame; - static JFrame rtlFrame; + private static List frames; private static final String INSTRUCTIONS = """ - This test checks menu bars for correct Right-To-Left Component Orientation. - - You should see two frames, each containing a menu bar. + This test checks menu bars for correct Right-To-Left component orientation. - One frame will be labelled "Left To Right" and will contain + You should see two frames, each contains a menu bar. + One frame is labelled "Left To Right" and contains a menu bar with menus starting on its left side. - The other frame will be labelled "Right To Left" and will - contain a menu bar with menus starting on its right side. + The other frame is labelled "Right To Left" and + contains a menu bar with menus starting on its right side. - The test will also contain radio buttons that can be used to set - the look and feel of the menu bars. - For each look and feel, you should compare the two menu - bars and make sure they are mirror images of each other. """; + The test also displays a frame with radio buttons + to change the look and feel of the menu bars. + For each look and feel, compare the two menu bars + in LTR and RTL orientation and make sure they are mirror + images of each other."""; public static void main(String[] args) throws Exception { PassFailJFrame.builder() - .title("RTL test Instructions") + .title("Menu Bar RTL Instructions") .instructions(INSTRUCTIONS) - .rows((int) INSTRUCTIONS.lines().count() + 2) .columns(30) .testUI(RightLeftOrientation::createTestUI) + .positionTestUIRightColumn() .build() .awaitAndCheck(); } - private static JFrame createTestUI() { - JFrame frame = new JFrame("RightLeftOrientation"); + private static JFrame createPlafChangerFrame() { + JFrame frame = new JFrame("Change Look and Feel"); JPanel panel = new JPanel(); ButtonGroup group = new ButtonGroup(); - JRadioButton rb; ActionListener plafChanger = new PlafChanger(); UIManager.LookAndFeelInfo[] lafInfos = UIManager.getInstalledLookAndFeels(); for (int i = 0; i < lafInfos.length; i++) { - rb = new JRadioButton(lafInfos[i].getName()); + JRadioButton rb = new JRadioButton(lafInfos[i].getName()); rb.setActionCommand(lafInfos[i].getClassName()); rb.addActionListener(plafChanger); group.add(rb); @@ -99,33 +100,39 @@ } frame.add(panel); + frame.pack(); + return frame; + } - ltrFrame = new JFrame("Left To Right"); + private static List createTestUI() { + JFrame plafFrame = createPlafChangerFrame(); + + JFrame ltrFrame = new JFrame("Left To Right"); ltrFrame.setJMenuBar(createMenuBar(ComponentOrientation.LEFT_TO_RIGHT)); ltrFrame.setSize(400, 100); - ltrFrame.setLocation(new Point(10, 10)); - ltrFrame.setVisible(true); - rtlFrame = new JFrame("Right To Left"); + JFrame rtlFrame = new JFrame("Right To Left"); rtlFrame.setJMenuBar(createMenuBar(ComponentOrientation.RIGHT_TO_LEFT)); rtlFrame.setSize(400, 100); - rtlFrame.setLocation(new Point(10, 120)); - rtlFrame.setVisible(true); - frame.pack(); - return frame; + + return (frames = List.of(plafFrame, ltrFrame, rtlFrame)); } - static class PlafChanger implements ActionListener { + private static final class PlafChanger implements ActionListener { + @Override public void actionPerformed(ActionEvent e) { String lnfName = e.getActionCommand(); try { UIManager.setLookAndFeel(lnfName); - SwingUtilities.updateComponentTreeUI(ltrFrame); - SwingUtilities.updateComponentTreeUI(rtlFrame); - } - catch (Exception exc) { - System.err.println("Could not load LookAndFeel: " + lnfName); + frames.forEach(SwingUtilities::updateComponentTreeUI); + } catch (Exception exc) { + String message = "Could not set Look and Feel to " + lnfName; + System.err.println(message); + JOptionPane.showMessageDialog(frames.get(0), + message, + "Look and Feel Error", + JOptionPane.ERROR_MESSAGE); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/MenuItemTest/MenuItemTestHelper.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/MenuItemTestHelper.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/MenuItemTest/MenuItemTestHelper.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/MenuItemTestHelper.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.ComponentOrientation; +import java.awt.Graphics; +import java.awt.event.KeyEvent; +import javax.swing.Icon; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.KeyStroke; +import javax.swing.UIManager; + +final class MenuItemTestHelper { + + public static JFrame getMenuItemTestFrame(boolean isLeft, String lafName) { + boolean applyLookAndFeel = lafName != null; + if (applyLookAndFeel) { + try { + UIManager.setLookAndFeel(lafName); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + Icon myIcon = new ColoredIcon(Color.RED, 10, 10); + Icon myIcon2 = new ColoredIcon(Color.GREEN, 15, 10); + + JMenuBar menuBar = new JMenuBar(); + menuBar.add(createViewMenu(myIcon, myIcon2)); + menuBar.add(createNoNothingMenu()); + menuBar.add(createSomeIconsMenu(myIcon, myIcon2)); + + String title = (isLeft ? "(Left-to-right)" : "(Right-to-left)") + " - Menu Item Test"; + JFrame frame = new JFrame(title); + frame.setJMenuBar(menuBar); + frame.applyComponentOrientation(isLeft + ? ComponentOrientation.LEFT_TO_RIGHT + : ComponentOrientation.RIGHT_TO_LEFT); + + if (applyLookAndFeel) { + String shortName = lafName.substring(lafName.lastIndexOf('.') + 1); + JLabel label = new JLabel("

" + shortName + "

"); + frame.setLayout(new BorderLayout()); + frame.add(label, BorderLayout.CENTER); + } + + frame.setSize(300, 300); + return frame; + } + + public static JFrame getMenuItemTestFrame(boolean isLeft) { + return getMenuItemTestFrame(isLeft, null); + } + + private static JMenu createViewMenu(Icon myIcon, Icon myIcon2) { + JMenu menu = new JMenu("View"); + menu.setMnemonic('V'); + menu.add(new JMenuItem("Refresh")); + menu.add(new JMenuItem("Customize...")); + menu.add(new JCheckBoxMenuItem("Show Toolbar")); + menu.addSeparator(); + menu.add(new JRadioButtonMenuItem("List")); + menu.add(new JRadioButtonMenuItem("Icons")); + + JRadioButtonMenuItem rm2 = new JRadioButtonMenuItem("And icon."); + rm2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, KeyEvent.SHIFT_DOWN_MASK)); + rm2.setIcon(myIcon2); + menu.add(rm2); + + JRadioButtonMenuItem mi3 = new JRadioButtonMenuItem("Radio w/icon"); + mi3.setIcon(myIcon); + menu.add(mi3); + + menu.add(new JMenuItem(myIcon2)); + + JMenuItem mi4 = new JMenuItem("Item with icon"); + mi4.setIcon(myIcon); + menu.addSeparator(); + menu.add(mi4); + + return menu; + } + + private static JMenu createNoNothingMenu() { + final JMenu noMenu = new JMenu("No nothing"); + + for (String label : new String[]{"One", "Two", "Threeee"}) { + JMenuItem item = new JMenuItem(label); + item.addActionListener((e) -> + PassFailJFrame.log("menu.width = " + + noMenu.getPopupMenu().getWidth())); + noMenu.add(item); + } + + return noMenu; + } + + private static JMenu createSomeIconsMenu(Icon myIcon, Icon myIcon2) { + JMenu someIcons = new JMenu("Some icons"); + + JMenuItem imi1 = new JMenuItem("Icon!"); + imi1.setIcon(myIcon); + someIcons.add(imi1); + + JMenuItem imi2 = new JMenuItem("Wide icon!"); + imi2.setIcon(myIcon2); + someIcons.add(imi2); + + someIcons.add(new JCheckBoxMenuItem("CheckBox")); + someIcons.add(new JRadioButtonMenuItem("RadioButton")); + + return someIcons; + } + + private record ColoredIcon(Color color, int width, int height) + implements Icon { + @Override + public void paintIcon(Component c, Graphics g, int x, int y) { + Color oldColor = g.getColor(); + g.setColor(color); + g.fillRect(x, y, width, height); + g.setColor(oldColor); + } + + @Override + public int getIconWidth() { + return width; + } + + @Override + public int getIconHeight() { + return height; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug4729669.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug4729669.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug4729669.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug4729669.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4729669 + * @summary 1.4 REGRESSION: Text edge of different types of JMenuItems are not aligned + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4729669 + */ + +import java.util.List; +import javax.swing.JFrame; + +public class bug4729669 { + + private static final String INSTRUCTIONS = """ + Two windows should appear: Left-to-right and Right-to-left. + Check that text on all the menu items of all menus + is properly vertically aligned."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4729669 Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(bug4729669::createTestUI) + .positionTestUIRightColumn() + .logArea() + .build() + .awaitAndCheck(); + } + + private static List createTestUI() { + JFrame f1 = MenuItemTestHelper.getMenuItemTestFrame(true); + JFrame f2 = MenuItemTestHelper.getMenuItemTestFrame(false); + return List.of(f1, f2); + } +} + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug6197830.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug6197830.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug6197830.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/MenuItemTest/bug6197830.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6197830 + * @requires (os.family == "linux") + * @summary Fix for 4729669 does not work on Motif and GTK look and feels + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug6197830 + */ + +import java.util.List; +import javax.swing.JFrame; + +public class bug6197830 { + + private static final String INSTRUCTIONS = """ + Four windows should appear: Left-to-right and Right-to-left for + the two different Look and Feels (Motif and GTK). + Check that text on all the menu items of all menus is properly + vertically aligned."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug6197830 Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(bug6197830::createTestUI) + .positionTestUIBottomRowCentered() + .build() + .awaitAndCheck(); + } + + private static List createTestUI() { + JFrame frame1 = MenuItemTestHelper.getMenuItemTestFrame(true, + "com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + JFrame frame2 = MenuItemTestHelper.getMenuItemTestFrame(false, + "com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + JFrame frame3 = MenuItemTestHelper.getMenuItemTestFrame(true, + "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); + JFrame frame4 = MenuItemTestHelper.getMenuItemTestFrame(false, + "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); + return List.of(frame1, frame2, frame3, frame4); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/RightLeftOrientation.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/RightLeftOrientation.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/RightLeftOrientation.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/RightLeftOrientation.java 2026-01-15 15:34:19.000000000 +0000 @@ -22,18 +22,36 @@ */ /* - * @test + * @test id=metal * @bug 4211052 * @requires (os.family == "windows") - * @summary - * This test checks if menu items lay out correctly when their + * @summary Verifies if menu items lay out correctly when their * ComponentOrientation property is set to RIGHT_TO_LEFT. - * The tester is asked to compare left-to-right and - * right-to-left menus and judge whether they are mirror images of each - * other. * @library /java/awt/regtesthelpers * @build PassFailJFrame - * @run main/manual RightLeftOrientation + * @run main/manual RightLeftOrientation metal + */ + +/* + * @test id=motif + * @bug 4211052 + * @requires (os.family == "windows") + * @summary Verifies if menu items lay out correctly when their + * ComponentOrientation property is set to RIGHT_TO_LEFT. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual RightLeftOrientation motif + */ + +/* + * @test id=windows + * @bug 4211052 8370465 + * @requires (os.family == "windows") + * @summary Verifies if menu items lay out correctly when their + * ComponentOrientation property is set to RIGHT_TO_LEFT. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual RightLeftOrientation windows */ import java.awt.Color; @@ -52,29 +70,47 @@ import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; import javax.swing.KeyStroke; -import javax.swing.LookAndFeel; import javax.swing.SwingConstants; +import javax.swing.SwingUtilities; import javax.swing.UIManager; public class RightLeftOrientation { private static final String INSTRUCTIONS = """ - A menu bar is shown containing a menu for each look and feel. - A disabled menu means that the look and feel is not available for - testing in this environment. - Every effort should be made to run this test - in an environment that covers all look and feels. + A menu bar is shown with a menu. - Each menu is divided into two halves. The upper half is oriented + The menu is divided into two halves. The upper half is oriented left-to-right and the lower half is oriented right-to-left. - For each menu, ensure that the lower half mirrors the upper half. + Ensure that the lower half mirrors the upper half. Note that when checking the positioning of the sub-menus, it helps to position the frame away from the screen edges."""; public static void main(String[] args) throws Exception { + if (args.length < 1) { + throw new IllegalArgumentException("Look-and-Feel keyword is required"); + } + + final String lafClassName; + switch (args[0]) { + case "metal" -> lafClassName = UIManager.getCrossPlatformLookAndFeelClassName(); + case "motif" -> lafClassName = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; + case "windows" -> lafClassName = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; + default -> throw new IllegalArgumentException( + "Unsupported Look-and-Feel keyword for this test: " + args[0]); + } + + SwingUtilities.invokeAndWait(() -> { + try { + UIManager.setLookAndFeel(lafClassName); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + + System.out.println("Test for LookAndFeel " + lafClassName); + PassFailJFrame.builder() - .title("RightLeftOrientation Instructions") .instructions(INSTRUCTIONS) .columns(35) .testUI(RightLeftOrientation::createTestUI) @@ -86,32 +122,19 @@ JFrame frame = new JFrame("RightLeftOrientation"); JMenuBar menuBar = new JMenuBar(); - menuBar.add(createMenu("javax.swing.plaf.metal.MetalLookAndFeel", - "Metal")); - menuBar.add(createMenu("com.sun.java.swing.plaf.motif.MotifLookAndFeel", - "Motif")); - menuBar.add(createMenu("com.sun.java.swing.plaf.windows.WindowsLookAndFeel", - "Windows")); + menuBar.add(createMenu()); frame.setJMenuBar(menuBar); - frame.pack(); + frame.setSize(250, 70); return frame; } - static JMenu createMenu(String laf, String name) { - JMenu menu = new JMenu(name); - try { - LookAndFeel save = UIManager.getLookAndFeel(); - UIManager.setLookAndFeel(laf); - addMenuItems(menu, ComponentOrientation.LEFT_TO_RIGHT); - menu.addSeparator(); - addMenuItems(menu, ComponentOrientation.RIGHT_TO_LEFT); - UIManager.setLookAndFeel(save); - } catch (Exception e) { - menu = new JMenu(name); - menu.setEnabled(false); - } + static JMenu createMenu() { + JMenu menu = new JMenu(UIManager.getLookAndFeel().getID()); + addMenuItems(menu, ComponentOrientation.LEFT_TO_RIGHT); + menu.addSeparator(); + addMenuItems(menu, ComponentOrientation.RIGHT_TO_LEFT); return menu; } @@ -132,6 +155,16 @@ menuItem.setHorizontalTextPosition(SwingConstants.LEADING); menu.add(menuItem); + menuItem = new JMenuItem("Text to the left", new MyMenuItemIcon()); + menuItem.setComponentOrientation(o); + menuItem.setHorizontalTextPosition(SwingConstants.LEFT); + menu.add(menuItem); + + menuItem = new JMenuItem("Text to the right", new MyMenuItemIcon()); + menuItem.setComponentOrientation(o); + menuItem.setHorizontalTextPosition(SwingConstants.RIGHT); + menu.add(menuItem); + menuItem = new JRadioButtonMenuItem("Radio Button Menu Item"); menuItem.setComponentOrientation(o); menuItem.setSelected(true); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/bug4207339.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4207339.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/bug4207339.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4207339.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4207339 + * @summary Verifies HTML label support for MenuItems + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4207339 + */ + +import javax.swing.JPanel; +import javax.swing.JMenuItem; + +public class bug4207339 { + + private static final String INSTRUCTIONS = """ + This tests html support in menuItem. + A MenuItem will be shown. + If the MenuItem is showing "big" text bigger than rest + and "red" text in red color and the text are in multiple lines, + and text "Yo" in blue color, + then press Pass else press Fail."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4207339 Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .splitUI(bug4207339::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JPanel createTestUI() { + JPanel panel = new JPanel(); + JMenuItem mi = new JMenuItem("
Is this text big" + + "and red?" + + "
And on multiple lines?

" + + "Yo!" + + "Then press PASS!
"); + panel.add(mi); + return panel; + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/bug4327146.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4327146.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/bug4327146.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4327146.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4327146 + * @summary Tests menu width after removeAll() + * @key headful + * @run main bug4327146 + */ + +import java.awt.Dimension; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.event.InputEvent; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.SwingUtilities; + +public class bug4327146 { + private static JButton b; + private static JMenu m; + private static JFrame frame; + private static volatile Point loc; + private static volatile Dimension dim; + private static volatile Rectangle old_popupBounds; + private static volatile Rectangle new_popupBounds; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + SwingUtilities.invokeAndWait(() -> { + frame = new JFrame("bug4327146"); + m = new JMenu("Menu"); + m.add(new JMenuItem("I'm an ugly bug, fix me right now please!")); + + JMenuBar mbar = new JMenuBar(); + mbar.add(m); + frame.setJMenuBar(mbar); + + b = new JButton("Cut"); + b.addActionListener(e -> { + m.removeAll(); + m.add(new JMenuItem("Fixed :)")); + }); + mbar.add(b); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + SwingUtilities.invokeAndWait(() -> { + loc = b.getLocationOnScreen(); + dim = b.getSize(); + m.doClick(); + }); + robot.waitForIdle(); + robot.delay(500); + SwingUtilities.invokeAndWait(() -> { + old_popupBounds = m.getPopupMenu().getBounds(); + }); + robot.mouseMove(loc.x + dim.width / 2, loc.y + dim.height / 2); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + robot.delay(500); + SwingUtilities.invokeAndWait(() -> { + m.doClick(); + }); + robot.waitForIdle(); + robot.delay(500); + SwingUtilities.invokeAndWait(() -> { + new_popupBounds = m.getPopupMenu().getBounds(); + }); + if (new_popupBounds.getWidth() >= old_popupBounds.getWidth()) { + System.out.println("before cut popup Bounds " + old_popupBounds); + System.out.println("after cut popupBounds " + new_popupBounds); + throw new RuntimeException("JMenu popup width is wrong"); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/bug4402082.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4402082.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/bug4402082.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4402082.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4402082 + * @requires (os.family == "windows") + * @summary Tests that JMenuItem accelerator is rendered correctly. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4402082 + */ + +import java.awt.Container; +import java.awt.GridLayout; +import java.awt.event.KeyEvent; +import javax.swing.JFrame; +import javax.swing.JMenuItem; +import javax.swing.KeyStroke; +import javax.swing.UIManager; + +public class bug4402082 { + + private static final String INSTRUCTIONS = """ + You see three menu items, each having different look-and-feels. + Each menu item should display accelerator "F1" on its right side. + The accelerator should be fully visible. If it is partially + offscreen, or not visible at all, test fails."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4402082 Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(bug4402082::createTestUI) + .build() + .awaitAndCheck(); + } + + static JMenuItem getMenuItem(String lnf) { + try { + UIManager.setLookAndFeel(lnf); + } catch (Exception exc) { + System.err.println("Could not load LookAndFeel: " + lnf); + } + JMenuItem mi = new JMenuItem("Bad Item"); + mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); + return mi; + } + + private static JFrame createTestUI() { + JFrame frame = new JFrame("bug4402082"); + Container pane = frame.getContentPane(); + pane.setLayout(new GridLayout(3,1)); + pane.add(getMenuItem("javax.swing.plaf.metal.MetalLookAndFeel")); + pane.add(getMenuItem("com.sun.java.swing.plaf.motif.MotifLookAndFeel")); + pane.add(getMenuItem("com.sun.java.swing.plaf.windows.WindowsLookAndFeel")); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/bug4729669.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4729669.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JMenuItem/bug4729669.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JMenuItem/bug4729669.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,186 +0,0 @@ -/* - * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 4729669 - * @summary 1.4 REGRESSION: Text edge of different types of JMenuItems are not aligned - * @library /java/awt/regtesthelpers - * @build PassFailJFrame - * @run main/manual bug4729669 - */ - -import java.awt.Color; -import java.awt.ComponentOrientation; -import java.awt.Component; -import java.awt.Graphics; -import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; - -import javax.swing.AbstractAction; -import javax.swing.Icon; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JFrame; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JRadioButtonMenuItem; -import javax.swing.KeyStroke; - -import java.util.List; - -public class bug4729669 { - - private static final String INSTRUCTIONS = """ - Two windows should appear: Left-to-right and Right-to-left. - Check that text on all the menu items of all menus - is properly vertically aligned."""; - - public static void main(String[] args) throws Exception { - PassFailJFrame.builder() - .title("bug4729669 Instructions") - .instructions(INSTRUCTIONS) - .columns(35) - .testUI(bug4729669::createTestUI) - .position(PassFailJFrame.Position.TOP_LEFT_CORNER) - .logArea() - .build() - .awaitAndCheck(); - } - - private static List createTestUI() { - JFrame f1 = MenuItemTest.doMenuItemTest(true); - f1.setLocation(300, 300); - JFrame f2 = MenuItemTest.doMenuItemTest(false); - f2.setLocation(500, 300); - return List.of(f1, f2); - } -} - -class MenuItemTest { - public static JFrame doMenuItemTest(boolean isLeft) { - JMenu menu = new JMenu("View"); - menu.setMnemonic('V'); - - menu.add(new JMenuItem("Refresh")); - menu.add(new JMenuItem("Customize...")); - menu.add(new JCheckBoxMenuItem("Show Toolbar")); - menu.addSeparator(); - menu.add(new JRadioButtonMenuItem("List")); - menu.add(new JRadioButtonMenuItem("Icons")); - JRadioButtonMenuItem rm2 = new JRadioButtonMenuItem("And icon."); - rm2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, - KeyEvent.SHIFT_MASK)); - menu.add(rm2); - JRadioButtonMenuItem mi3 = new JRadioButtonMenuItem("Radio w/icon"); - - Icon myIcon = new Icon() { // 10 pixel red - public void paintIcon(Component c, Graphics g, int x, int y) { - Color color = g.getColor(); - g.setColor(Color.RED); - g.fillRect(x, y, 10, 10); - g.setColor(color); - } - - public int getIconWidth() { - return 10; - } - - public int getIconHeight() { - return 10; - } - }; - - Icon myIcon2 = new Icon() { // 15 pixel green - public void paintIcon(Component c, Graphics g, int x, int y) { - Color color = g.getColor(); - g.setColor(Color.GREEN); - g.fillRect(x, y, 15, 10); - g.setColor(color); - } - - public int getIconWidth() { - return 15; - } - - public int getIconHeight() { - return 10; - } - }; - - rm2.setIcon(myIcon2); - - mi3.setIcon(myIcon); - menu.add(mi3); - menu.add(new JMenuItem(myIcon2)); - - final JMenu menu2 = new JMenu("No nothing"); - menu2.add("One").addActionListener(new AbstractAction() { - public void actionPerformed(ActionEvent e) { - PassFailJFrame.log("menu.width = " + menu2.getPopupMenu().getWidth()); - } - }); - menu2.add("Two").addActionListener(new AbstractAction() { - public void actionPerformed(ActionEvent e) { - PassFailJFrame.log("menu.width = " + menu2.getPopupMenu().getWidth()); - } - }); - menu2.add("Threeee").addActionListener(new AbstractAction() { - public void actionPerformed(ActionEvent e) { - PassFailJFrame.log("menu.width = " + menu2.getPopupMenu().getWidth()); - } - }); - - JMenuItem mi4 = new JMenuItem("Item with icon"); - mi4.setIcon(myIcon); - menu.addSeparator(); - menu.add(mi4); - String title = "Menu Item Test " + (isLeft ? "(Left-to-right)" : "(Right-to-left)"); - JFrame frame = new JFrame(title); - - JMenuBar menuBar = new JMenuBar(); - menuBar.add(menu); - menuBar.add(menu2); - - JMenu someIcons = new JMenu("Some icons"); - JMenuItem imi1 = new JMenuItem("Icon!"); - imi1.setIcon(myIcon); - someIcons.add(imi1); - JMenuItem imi2 = new JMenuItem("Wide icon!"); - imi2.setIcon(myIcon2); - someIcons.add(imi2); - someIcons.add(new JCheckBoxMenuItem("CheckBox")); - someIcons.add(new JRadioButtonMenuItem("RadioButton")); - menuBar.add(someIcons); - frame.setJMenuBar(menuBar); - ComponentOrientation co = (isLeft ? - ComponentOrientation.LEFT_TO_RIGHT : - ComponentOrientation.RIGHT_TO_LEFT); - frame.applyComponentOrientation(co); - frame.setSize(300, 300); - int frameX = isLeft ? 0 : 600; - frame.setLocation(frameX, 20); - return frame; - } - -} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JOptionPane/TestJOptionHTMLTag.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JOptionPane/TestJOptionHTMLTag.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JOptionPane/TestJOptionHTMLTag.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JOptionPane/TestJOptionHTMLTag.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -/* @test - * @bug 5074006 - * @key headful - * @library /java/awt/regtesthelpers - * @build PassFailJFrame - * @summary Swing JOptionPane shows tag as a string after newline - * @run main/manual TestJOptionHTMLTag -*/ - -import javax.swing.JDialog; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; - -public class TestJOptionHTMLTag { - static String instructions - = """ - INSTRUCTIONS: - A dialog will be shown. - If it does not contain string, press Pass else press Fail. - """; - static PassFailJFrame passFailJFrame; - - public static void main(String[] args) throws Exception { - - SwingUtilities.invokeAndWait(() -> { - try { - String message = "" + "This is a test\n" + ""; - JOptionPane optionPane = new JOptionPane(); - optionPane.setMessage(message); - optionPane.setMessageType(JOptionPane.INFORMATION_MESSAGE); - JDialog dialog = new JDialog(); - dialog.setContentPane(optionPane); - dialog.pack(); - dialog.setVisible(true); - - passFailJFrame = new PassFailJFrame(instructions); - PassFailJFrame.addTestWindow(dialog); - PassFailJFrame.positionTestWindow(dialog, PassFailJFrame.Position.HORIZONTAL); - } catch (Exception e) { - e.printStackTrace(); - } - }); - passFailJFrame.awaitAndCheck(); - } -} - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JOptionPane/bug4194862.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JOptionPane/bug4194862.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JOptionPane/bug4194862.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JOptionPane/bug4194862.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4194862 + * @summary Tests that internal frame-based dialogs are centered relative + to their parents + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4194862 + */ + +import javax.swing.JButton; +import javax.swing.JDesktopPane; +import javax.swing.JFrame; +import javax.swing.JInternalFrame; +import javax.swing.JOptionPane; + +public class bug4194862 { + private static final String INSTRUCTIONS = """ + In the internal frame titled "Main", + click the "Show JOptionPane Dialog" button. + A dialog will appear. It should be centered with + respect to the JInternalFrame - "Main". + + If the above is true then click on JOptionPane's "YES" button + to PASS else click JOptionPane's "NO" button to FAIL the test. + """; + + public static void main(String[] args) throws Exception{ + PassFailJFrame.builder() + .title("Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4194862::createAndShowUI) + .screenCapture() + .build() + .awaitAndCheck(); + } + + private static JFrame createAndShowUI() { + JFrame frame = new JFrame("bug4194862 - JInternalFrame JOptionPane"); + JDesktopPane desktop = new JDesktopPane(); + frame.add(desktop); + JInternalFrame jInternalFrame = new JInternalFrame("Main", true); + desktop.add(jInternalFrame); + jInternalFrame.setBounds(5, 30, 390, 240); + jInternalFrame.setVisible(true); + + JButton b = new JButton("Show JOptionPane Dialog"); + b.addActionListener(e -> { + int retVal = JOptionPane.showInternalConfirmDialog( + jInternalFrame, "Am I centered?", + "bug4194862 JOptionPane", JOptionPane.YES_NO_OPTION); + switch (retVal) { + case JOptionPane.YES_OPTION -> PassFailJFrame.forcePass(); + case JOptionPane.NO_OPTION -> + PassFailJFrame.forceFail("JOptionPane isn't centered" + + " within JInternalFrame \"Main\""); + } + }); + jInternalFrame.add(b); + + for (int i = 0; i < 4; i++) { + JInternalFrame f = new JInternalFrame("JIF: "+ i); + f.setBounds(i * 50, i * 33, 120, 120); + f.setVisible(true); + desktop.add(f); + } + frame.setSize(450, 400); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JPasswordField/PasswordFieldInputMapWordTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JPasswordField/PasswordFieldInputMapWordTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JPasswordField/PasswordFieldInputMapWordTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JPasswordField/PasswordFieldInputMapWordTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @bug 8358813 + * @summary Password fields' InputMap should not include any word-related action. + * + * @run main PasswordFieldInputMapWordTest + */ + +import java.util.Collection; +import java.util.Set; + +import javax.swing.InputMap; +import javax.swing.JComponent; +import javax.swing.JPasswordField; +import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; +import javax.swing.text.DefaultEditorKit; + +public class PasswordFieldInputMapWordTest { + public static void main(String[] args) throws Exception { + for (UIManager.LookAndFeelInfo laf : + UIManager.getInstalledLookAndFeels()) { + System.out.println("Testing LAF: " + laf.getClassName()); + SwingUtilities.invokeAndWait(() -> { + if (setLookAndFeel(laf)) { + runTest(); + } + }); + } + } + + private static boolean setLookAndFeel(UIManager.LookAndFeelInfo laf) { + try { + UIManager.setLookAndFeel(laf.getClassName()); + return true; + } catch (UnsupportedLookAndFeelException e) { + System.err.println("Skipping unsupported look and feel:"); + e.printStackTrace(); + return false; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + static int[] inputMapConditions = new int[] { + JComponent.WHEN_IN_FOCUSED_WINDOW, + JComponent.WHEN_FOCUSED, + JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT + }; + + /** + * These are all the actions with "word" in their field name. + */ + static Collection wordActions = Set.of( + DefaultEditorKit.deleteNextWordAction, + DefaultEditorKit.deletePrevWordAction, + DefaultEditorKit.beginWordAction, + DefaultEditorKit.endWordAction, + DefaultEditorKit.selectionBeginWordAction, + DefaultEditorKit.selectionEndWordAction, + DefaultEditorKit.previousWordAction, + DefaultEditorKit.nextWordAction, + DefaultEditorKit.selectionPreviousWordAction, + DefaultEditorKit.selectionNextWordAction + ); + + private static void runTest() { + JPasswordField field = new JPasswordField(); + + boolean testPassed = true; + for (int condition : inputMapConditions) { + InputMap inputMap = field.getInputMap(condition); + if (inputMap.allKeys() == null) { + continue; + } + for (KeyStroke keyStroke : inputMap.allKeys()) { + Object actionBinding = inputMap.get(keyStroke); + if (wordActions.contains(actionBinding)) { + if (testPassed) { + System.err.println("The following inputs/actions should not be available in a JPasswordField:"); + } + System.err.println(inputMap.get(keyStroke) + " (try typing " + keyStroke + ")"); + testPassed = false; + } + } + } + + if (!testPassed) { + throw new RuntimeException("One or more input/action binding was observed for a JPasswordField."); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JPasswordField/bug4382819.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JPasswordField/bug4382819.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JPasswordField/bug4382819.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JPasswordField/bug4382819.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.FlowLayout; +import java.awt.event.ItemListener; +import javax.swing.JCheckBox; +import javax.swing.JFrame; +import javax.swing.JPasswordField; + +/* + * @test + * @bug 4382819 + * @summary Tests the correctness of color used for the disabled passwordField. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4382819 + */ + +public class bug4382819 { + static JCheckBox enabledCheckBox; + static JPasswordField passwordField; + + private static final String INSTRUCTIONS = """ + Clear the "enabled" checkbox. + If the JPasswordField's foreground color changes to + light gray press Pass. If it stays black press Fail. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4382819::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame mainFrame = new JFrame("bug4382819"); + enabledCheckBox = new javax.swing.JCheckBox(); + enabledCheckBox.setSelected(true); + enabledCheckBox.setText("enabled"); + enabledCheckBox.setActionCommand("enabled"); + mainFrame.add(enabledCheckBox); + + passwordField = new javax.swing.JPasswordField(); + passwordField.setText("blahblahblah"); + mainFrame.add(passwordField); + SymItem lSymItem = new SymItem(); + enabledCheckBox.addItemListener(lSymItem); + + mainFrame.setSize(300, 100); + mainFrame.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); + return mainFrame; + } + + static class SymItem implements ItemListener { + public void itemStateChanged(java.awt.event.ItemEvent event) { + Object object = event.getSource(); + if (object == enabledCheckBox) { + passwordField.setEnabled(enabledCheckBox.isSelected()); + } + } + } +} + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4119993.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4119993.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4119993.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4119993.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,112 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4119993 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary Check that mouse button 3 is reserved for popup invocation not selection. + * @run main/manual bug4119993 + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import javax.swing.BoxLayout; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextArea; +import javax.swing.border.BevelBorder; + +/* + * This is a sort of negative test. Mouse Button 3 is not supposed to cause selections. + * If it did, then it would not be useable to invoke popup menus. + * So this popup menu test .. does not popup menus. + */ + +public class bug4119993 { + + static final String INSTRUCTIONS = """ + + The test window contains a text area, a table, and a list. +

+ For each component, try to select text/cells/rows/items as appropriate + using the RIGHT mouse button (Mouse Button 3). +

+ If the selection changes, then press FAIL. +

+ If the selection does not change, press PASS + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(bug4119993::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame frame = new JFrame("bug4119993"); + JPanel p = new JPanel(); + p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); + frame.add(p); + + String text = "This is some text that you should try to select using the right mouse button"; + JTextArea area = new JTextArea(text, 5, 40); + JScrollPane scrollpane0 = new JScrollPane(area); + scrollpane0.setBorder(new BevelBorder(BevelBorder.LOWERED)); + scrollpane0.setPreferredSize(new Dimension(430, 200)); + p.add(scrollpane0); + + String[][] data = new String[5][5]; + String[] cols = new String[5]; + for (int r = 0; r < 5; r ++) { + cols[r] = "col " + r; + for (int c = 0; c < 5; c ++) { + data[r][c] = "(" + r + "," + c + ")"; + } + } + + JTable tableView = new JTable(data, cols); + JScrollPane scrollpane = new JScrollPane(tableView); + scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED)); + scrollpane.setPreferredSize(new Dimension(430, 200)); + p.add(scrollpane); + + String[] s = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; + JList listView = new JList(s); + JScrollPane scrollpane2 = new JScrollPane(listView); + scrollpane2.setBorder(new BevelBorder(BevelBorder.LOWERED)); + scrollpane2.setPreferredSize(new Dimension(430, 200)); + p.add(scrollpane2); + + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4187004.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4187004.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4187004.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4187004.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 4187004 + @summary test that title/label is show on menu for Motif L&F + @key headful +*/ + +import java.awt.Dimension; +import java.awt.Robot; +import javax.swing.JFrame; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + +public class bug4187004 { + + static volatile JPopupMenu m; + static volatile Dimension d1, d2; + + public static void main(String[] args) throws Exception { + try { + SwingUtilities.invokeAndWait(bug4187004::createUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(1000); + d1 = m.getSize(); + SwingUtilities.invokeAndWait(bug4187004::hideMenu); + robot.waitForIdle(); + robot.delay(1000); + SwingUtilities.invokeAndWait(bug4187004::updateUI); + robot.waitForIdle(); + robot.delay(1000); + SwingUtilities.invokeAndWait(bug4187004::showMenu); + robot.waitForIdle(); + robot.delay(1000); + d2 = m.getSize(); + } finally { + SwingUtilities.invokeAndWait(bug4187004::hideMenu); + } + System.out.println(d1); + System.out.println(d2); + if (d1.width <= d2.width) { + throw new RuntimeException("Menu not updated"); + } + } + + static void createUI() { + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + } catch (Exception e) { + throw new RuntimeException(e); + } + m = new JPopupMenu("One really long menu title"); + m.add("Item 1"); + m.add("Item 2"); + m.add("Item 3"); + m.add("Item 4"); + m.pack(); + m.setVisible(true); + } + + static void hideMenu() { + m.setVisible(false); + } + + static void showMenu() { + m.setVisible(true); + } + + static void updateUI() { + m.setLabel("short"); + m.pack(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4188832.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4188832.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4188832.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4188832.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,82 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @summary Test that medium weight submenus are not hidden by a heavyweight canvas. + * @bug 4188832 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4188832 + */ + +import java.awt.Color; +import java.awt.Panel; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; + +public class bug4188832 { + + static final String INSTRUCTIONS = """ + Select the File menu, then select the "Save As..." submenu. + If you can see the submenu items displayed, press PASS, else press FAIL + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4188832::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + // for Medium Weight menus + JPopupMenu.setDefaultLightWeightPopupEnabled(false); + JFrame frame = new JFrame("bug4188832"); + + // Create the menus + JMenuBar menuBar = new JMenuBar(); + JMenu fileMenu = new JMenu("File"); + menuBar.add(fileMenu); + fileMenu.add(new JMenuItem("New")); + fileMenu.add(new JMenuItem("Open")); + fileMenu.add(new JMenuItem("Save")); + JMenu sm = new JMenu("Save As..."); + // these guys don't show up + sm.add(new JMenuItem("This")); + sm.add(new JMenuItem("That")); + fileMenu.add(sm); + fileMenu.add(new JMenuItem("Exit")); + frame.setJMenuBar(menuBar); + + Panel field = new Panel(); // a heavyweight container + field.setBackground(Color.blue); + frame.add(field); + frame.setSize(400, 400); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4212464.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4212464.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4212464.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4212464.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,142 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4212464 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary Verify popup menu borders are drawn correctly when switching L&Fs + * @run main/manual bug4212464 + */ + +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javax.swing.JApplet; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + +public class bug4212464 extends JFrame implements ActionListener { + + static String strMotif = "Motif"; + static String motifClassName = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; + + static String strMetal = "Metal"; + static String metalClassName = "javax.swing.plaf.metal.MetalLookAndFeel"; + + static bug4212464 frame; + static JPopupMenu popup; + + static final String INSTRUCTIONS = """ + This test is to see whether popup menu borders behave properly when switching + back and forth between Motif and Metal L&F. The initial L&F is Metal. + + Pressing the mouse button on the label in the center of the test window brings + up a popup menu. + + In order to test, use the labeled buttons to switch the look and feel. + Clicking a button will cause the menu to be hidden. This is OK. Just click the label again. + Switch back and forth and verify that the popup menu border changes consistently + and there is a title for the menu when using Motif L&F (Metal won't have a title). + + Make sure you switch back and forth several times. + If the change is consistent, press PASS otherwise press FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4212464::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + try { + UIManager.setLookAndFeel(metalClassName); // initialize to Metal. + } catch (Exception e) { + throw new RuntimeException(e); + } + frame = new bug4212464("bug4212464"); + popup = new JPopupMenu("Test"); + popup.add("Item 1"); + popup.add("Item 2"); + popup.add("Item 3"); + popup.add("Item 4"); + + JPanel p = new JPanel(); + p.setLayout(new FlowLayout()); + JButton motif = (JButton)p.add(new JButton(strMotif)); + JButton metal = (JButton)p.add(new JButton(strMetal)); + motif.setActionCommand(motifClassName); + metal.setActionCommand(metalClassName); + motif.addActionListener(frame); + metal.addActionListener(frame); + frame.add(BorderLayout.NORTH, p); + + JLabel l = new JLabel("Click any mouse button on this big label"); + l.setFont(new Font(Font.DIALOG, Font.PLAIN, 20)); + l.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + popup.show(e.getComponent(), e.getX(), e.getY()); + } + }); + frame.add(BorderLayout.CENTER, l); + frame.setSize(500, 400); + return frame; + } + + public bug4212464(String title) { + super(title); + } + + public void actionPerformed(ActionEvent e) { + String str = e.getActionCommand(); + if (str.equals(metalClassName) || str.equals(motifClassName)) { + changeLNF(str); + } else { + System.out.println("ActionEvent: " + str); + } + } + + public void changeLNF(String str) { + System.out.println("Changing LNF to " + str); + try { + UIManager.setLookAndFeel(str); + SwingUtilities.updateComponentTreeUI(frame); + SwingUtilities.updateComponentTreeUI(popup); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4234793.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4234793.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4234793.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4234793.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,242 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4234793 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary PopupMenuListener popupMenuCanceled is never called + * @run main/manual bug4234793 + */ + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.AbstractAction; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.JSeparator; +import javax.swing.KeyStroke; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; + +/** + * For all 3 components (JPopupMenu, JComboBox, JPopup) when the popup is visible, + * the popupMenuCanceled should be invoked in these two circumstances: + * + * 1. The ESCAPE key is pressed while the popup is open. + * + * 2. The mouse is clicked on another component. + * + */ + +public class bug4234793 extends JFrame implements PopupMenuListener { + + static final String INSTRUCTIONS = """ + The test window will contain several kinds of menus. + + * A menu bar with two menus labeled "1 - First Menu" and "2 - Second Menu" + * A drop down combo box - ie a button which pops up a menu when clicked + * Clicking any where on the background of the window will display a popup menu + + That is 4 menus in total. + + For each case, verify that the menu can be cancelled (hidden) in two ways + 1) Click to display the menu, then to hide it, press the ESCAPE key. + 2) Click to display the menu, then to hide it, LEFT click on the window background. + Note : the popup menu must be displayed using RIGHT click, the others use LEFT click. + + Notice each time you perform a hide/cancel action an appropriate message should + appear in the log area + If this is true for all 8 combinations of menus + hide actions the test PASSES + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(bug4234793::createUI) + .logArea() + .build() + .awaitAndCheck(); + } + + private static String[] numData = { + "One", "Two", "Three", "Four", "Five", "Six", "Seven" + }; + + private static String[] dayData = { + "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" + }; + + private static char[] mnDayData = { + 'M', 'T', 'W', 'R', 'F', 'S', 'U' + }; + + bug4234793(String title) { + super(title); + } + + static volatile JPopupMenu popupMenu; + static volatile bug4234793 frame; + + static JFrame createUI() { + frame = new bug4234793("bug4234793"); + frame.setJMenuBar(createMenuBar()); + JPanel panel = createContentPane(); + frame.add(panel); + + // CTRL-down will show the popup. + panel.getInputMap().put(KeyStroke.getKeyStroke( + KeyEvent.VK_DOWN, InputEvent.CTRL_MASK), "OPEN_POPUP"); + panel.getActionMap().put("OPEN_POPUP", new PopupHandler()); + panel.addMouseListener(new PopupListener(popupMenu)); + panel.setPreferredSize(new Dimension(400, 300)); + frame.setSize(400, 300); + return frame; + } + + static class PopupListener extends MouseAdapter { + private JPopupMenu popup; + + public PopupListener(JPopupMenu popup) { + this.popup = popup; + } + + public void mousePressed(MouseEvent e) { + maybeShowPopup(e); + } + + public void mouseReleased(MouseEvent e) { + maybeShowPopup(e); + } + + public void mouseClicked(MouseEvent ex) { + } + + private void maybeShowPopup(MouseEvent e) { + if (e.isPopupTrigger()) { + popup.show(e.getComponent(), e.getX(), e.getY()); + } + } + } + + static class PopupHandler extends AbstractAction { + public void actionPerformed(ActionEvent e) { + if (!popupMenu.isVisible()) + popupMenu.show((Component)e.getSource(), 40, 40); + } + } + + static JPanel createContentPane() { + popupMenu = new JPopupMenu(); + JMenuItem item; + for (int i = 0; i < dayData.length; i++) { + item = popupMenu.add(new JMenuItem(dayData[i], mnDayData[i])); + } + popupMenu.addPopupMenuListener(frame); + + JComboBox combo = new JComboBox(numData); + combo.addPopupMenuListener(frame); + JPanel comboPanel = new JPanel(); + comboPanel.add(combo); + + JPanel panel = new JPanel(new BorderLayout()); + + panel.add(new JLabel("Right click on the panel to show the PopupMenu"), BorderLayout.NORTH); + panel.add(comboPanel, BorderLayout.CENTER); + + return panel; + } + + static JMenuBar createMenuBar() { + JMenuBar menubar = new JMenuBar(); + JMenuItem menuitem; + + JMenu menu = new JMenu("1 - First Menu"); + menu.setMnemonic('1'); + menu.getPopupMenu().addPopupMenuListener(frame); + + menubar.add(menu); + for (int i = 0; i < 10; i ++) { + menuitem = new JMenuItem("1 JMenuItem" + i); + menuitem.setMnemonic('0' + i); + menu.add(menuitem); + } + + // second menu + menu = new JMenu("2 - Second Menu"); + menu.getPopupMenu().addPopupMenuListener(frame); + menu.setMnemonic('2'); + + menubar.add(menu); + for (int i = 0; i < 5; i++) { + menuitem = new JMenuItem("2 JMenuItem" + i); + menuitem.setMnemonic('0' + i); + menu.add(menuitem); + } + + JMenu submenu = new JMenu("Sub Menu"); + submenu.setMnemonic('S'); + submenu.getPopupMenu().addPopupMenuListener(frame); + for (int i = 0; i < 5; i++) { + menuitem = new JMenuItem("S JMenuItem" + i); + menuitem.setMnemonic('0' + i); + submenu.add(menuitem); + } + menu.add(new JSeparator()); + menu.add(submenu); + + return menubar; + } + + // PopupMenuListener methods. + + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + Object source = e.getSource(); + PassFailJFrame.log("popupmenu visible: " + source.getClass().getName()); + } + + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + Object source = e.getSource(); + PassFailJFrame.log("popupMenuWillBecomeInvisible: " + source.getClass().getName()); + } + + public void popupMenuCanceled(PopupMenuEvent e) { + Object source = e.getSource(); + PassFailJFrame.log("POPUPMENU CANCELED: " + source.getClass().getName()); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4530303.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4530303.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JPopupMenu/bug4530303.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JPopupMenu/bug4530303.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4530303 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary Tests JPopupMenu.pack() + * @run main/manual bug4530303 + */ + +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; + +public class bug4530303 { + + static final String INSTRUCTIONS = """ + The test window has a menu bar. + Open the menu "Menu" and place the mouse pointer over the first menu item, "Point here". + The second menu item, "Ghost", should be replaced with another item, "Fixed!". + If the item just disappears and no new item appears in the empty space, the test FAILS. + """; + + static volatile JMenu menu; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(bug4530303::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame frame = new JFrame("bug4530303"); + menu = new JMenu("Menu"); + JMenuItem item = new JMenuItem("Point here"); + item.addMouseListener(new MenuBuilder()); + menu.add(item); + menu.add(new JMenuItem("Ghost")); + + JMenuBar mbar = new JMenuBar(); + mbar.add(menu); + frame.setJMenuBar(mbar); + frame.setSize(300, 300); + return frame; + } + + static class MenuBuilder extends MouseAdapter { + public void mouseEntered(MouseEvent ev) { + menu.remove(1); + menu.add(new JMenuItem("Fixed!")); + + JPopupMenu pm = menu.getPopupMenu(); + pm.pack(); + pm.paintImmediately(pm.getBounds()); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JProgressBar/RightLeftOrientation.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/RightLeftOrientation.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JProgressBar/RightLeftOrientation.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/RightLeftOrientation.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4230355 + * @summary + * This test checks if progress bars lay out correctly when their + * ComponentOrientation property is set to RIGHT_TO_LEFT. This test is + * manual. The tester is asked to compare left-to-right and + * right-to-left progress bars and judge whether they are mirror images + * of each other. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual RightLeftOrientation + */ + +import java.awt.ComponentOrientation; +import java.awt.Container; +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.LookAndFeel; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.UIManager; + +public class RightLeftOrientation { + + static final String INSTRUCTIONS = """ + This test checks progress bars for correct Right-To-Left Component Orientation. + The progress bars in the left column should fill up from the left while the bars in + the right column should fill up from the right. + If this is so, the test PASSES, otherwise it FAILS. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("Progress Bar Orientation Test Instructions") + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(RightLeftOrientation::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame frame = new JFrame("Progress Bar Orientation Test"); + Container contentPane = frame.getContentPane(); + contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.X_AXIS)); + contentPane.add(createBarSet(ComponentOrientation.LEFT_TO_RIGHT)); + contentPane.add(createBarSet(ComponentOrientation.RIGHT_TO_LEFT)); + frame.pack(); + return frame; + } + + static JPanel createBarSet(ComponentOrientation o) { + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); + JLabel header; + if (o.isLeftToRight()) + header = new JLabel("Left To Right"); + else + header = new JLabel("Right To Left"); + panel.add(header); + + UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels(); + for (int i = 0; i < lafs.length; i++) { + if (i > 0) + panel.add(Box.createVerticalStrut(10)); + panel.add(createProgressBars(lafs[i].getName(), + lafs[i].getClassName(), o)); + } + + return panel; + } + + static JPanel createProgressBars(String name, String plaf, + ComponentOrientation o) { + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + JLabel label = new JLabel(name); + panel.add(label); + try { + LookAndFeel save = UIManager.getLookAndFeel(); + UIManager.setLookAndFeel(plaf); + + panel.add(createProgressBar(true, 0, o)); + panel.add(Box.createVerticalStrut(5)); + + panel.add(createProgressBar(true, 5, o)); + panel.add(Box.createVerticalStrut(5)); + + panel.add(createProgressBar(true, 10, o)); + panel.add(Box.createVerticalStrut(5)); + + panel.add(createProgressBar(true, 20, o)); + panel.add(Box.createVerticalStrut(5)); + + UIManager.put("ProgressBar.cellSpacing", Integer.valueOf(2)); + UIManager.put("ProgressBar.cellLength", Integer.valueOf(7)); + + panel.add(createProgressBar(false, 5, o)); + panel.add(Box.createVerticalStrut(5)); + + panel.add(createProgressBar(false, 20, o)); + + UIManager.setLookAndFeel(save); + } catch (Exception e) { + System.err.println(e); + } + return panel; + } + + static JProgressBar createProgressBar(boolean paintStr, int value, + ComponentOrientation o) { + JProgressBar p = new JProgressBar(JProgressBar.HORIZONTAL, 0, 20); + p.setStringPainted(paintStr); + p.setValue(value); + p.setComponentOrientation(o); + return p; + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JProgressBar/bug4230391.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug4230391.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JProgressBar/bug4230391.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug4230391.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,139 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4230391 + * @summary Tests that JProgressBar draws correctly when Insets are not zero + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4230391 +*/ + +import java.awt.ComponentOrientation; +import java.awt.Container; +import java.awt.Insets; +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.LookAndFeel; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.UIManager; + +public class bug4230391 { + + static final String INSTRUCTIONS = """ + Tests that progress bars honor insets in different L&Fs. + Different L&Fs render the progress bar differently, and may or may + not have a different colored background around the progress bar, + and may or may not draw a border around the bar+background. + The progress bars should be of equal width and the progress + rendering line/bar should not extend past/overlap any border. + If it is as described, the test PASSES. + """; + + static class InsetProgressBar extends JProgressBar { + private Insets insets = new Insets(12, 12, 12, 12); + + public InsetProgressBar(boolean horiz, int low, int hi) { + super((horiz)?JProgressBar.HORIZONTAL:JProgressBar.VERTICAL, low, hi); + } + + public Insets getInsets() { + return insets; + } + } + + static JPanel createBarSet() { + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + panel.setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); + UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels(); + for (int i = 0; i < lafs.length; i++) { + if (i > 0) { + panel.add(Box.createVerticalStrut(10)); + } + panel.add(createProgressBars(lafs[i].getName(), lafs[i].getClassName())); + } + return panel; + } + + static JPanel createProgressBars(String name, String plaf) { + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); + try { + LookAndFeel save = UIManager.getLookAndFeel(); + UIManager.setLookAndFeel(plaf); + + ComponentOrientation ltr = ComponentOrientation.LEFT_TO_RIGHT; + + Box b = Box.createVerticalBox(); + panel.add(b); + panel.add(Box.createHorizontalStrut(5)); + panel.add(createProgressBar(false, true, ltr)); + UIManager.setLookAndFeel(save); + } catch (Exception e) { + System.err.println(e); + } + return panel; + } + + static JProgressBar createProgressBar(boolean solid, boolean horiz, + ComponentOrientation o) { + if (solid) { + UIManager.put("ProgressBar.cellSpacing", Integer.valueOf(0)); + UIManager.put("ProgressBar.cellLength", Integer.valueOf(1)); + } else { + UIManager.put("ProgressBar.cellSpacing", Integer.valueOf(2)); + UIManager.put("ProgressBar.cellLength", Integer.valueOf(7)); + } + + JProgressBar p = new InsetProgressBar(horiz, 0, 20); + p.setStringPainted(solid); + p.setValue(20); + p.setComponentOrientation(o); + + return p; + } + + static JFrame createUI() { + JFrame frame = new JFrame("Progress Bar Insets Test"); + Container contentPane = frame.getContentPane(); + contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.X_AXIS)); + contentPane.add(createBarSet()); + frame.setSize(400, 300); + return frame; + } + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("Progress Bar Insets Test Instructions") + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(bug4230391::createUI) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JProgressBar/bug4393042.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug4393042.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JProgressBar/bug4393042.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug4393042.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4393042 + * @summary JProgressBar should update painting when maximum value is very large + * @key headful + */ + +import java.awt.Graphics; +import javax.swing.JFrame; +import javax.swing.JProgressBar; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + +public class bug4393042 extends JProgressBar { + + static final int MAXIMUM = Integer.MAX_VALUE - 100; + static volatile int value = 0; + static volatile bug4393042 progressBar; + static JFrame frame; + static volatile int paintCount = 0; + + public void paintComponent(Graphics g) { + super.paintComponent(g); + System.out.println("paint count=" + (++paintCount)); + } + + public bug4393042(int min, int max) { + super(min, max); + } + + public static void main(String[] args) throws Exception { + + UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); + + try { + SwingUtilities.invokeAndWait(bug4393042::createUI); + + value = 0; + for (int i = 0; i <= 10; i++) { + Thread.sleep(1000); + SwingUtilities.invokeAndWait(() -> { + progressBar.setValue(value); + }); + value += MAXIMUM / 10; + } + + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + if (paintCount < 10 || paintCount > 100) { + throw new RuntimeException("Unexpected paint count : " + paintCount); + } + } + + static void createUI() { + frame = new JFrame("bug4393042"); + progressBar = new bug4393042(0, MAXIMUM); + progressBar.setStringPainted(true); + progressBar.setValue(0); + frame.add(progressBar); + frame.setSize(400, 200); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JProgressBar/bug5003022.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug5003022.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JProgressBar/bug5003022.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JProgressBar/bug5003022.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 5003022 + * @summary Test that setting zero value on JProgressBar works in GTK L&F + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug5003022 +*/ + +import java.awt.FlowLayout; +import javax.swing.JFrame; +import javax.swing.JProgressBar; +import javax.swing.UIManager; + +public class bug5003022 { + + static final String INSTRUCTIONS = """ + There are two progress bars, they should display progress strings. + The first progress bar should display 0% and the bar should show no progress color fill. + The second progress bar should display 30% and the bar should show 30% progress color fill. + If it is as described, the test PASSES, otherwise it FAILS. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug5003022 Test Instructions") + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(bug5003022::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + try { + /* This will only succeed on Linux, but the test is valid for other platforms and L&Fs */ + UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); + } catch (Exception e) { + e.printStackTrace(); + } + + JFrame frame = new JFrame("bug5003022"); + JProgressBar pb1 = new JProgressBar(); + pb1.setValue(0); + pb1.setStringPainted(true); + + JProgressBar pb2 = new JProgressBar(); + pb2.setValue(30); + pb2.setStringPainted(true); + + frame.setLayout(new FlowLayout()); + frame.add(pb1); + frame.add(pb2); + + frame.setSize(300, 300); + return frame; + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JRadioButton/bug4673850.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JRadioButton/bug4673850.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JRadioButton/bug4673850.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JRadioButton/bug4673850.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4673850 + * @summary Tests that JRadioButton and JCheckBox checkmarks are painted entirely + * inside circular/rectangle checkboxes for Motif LaF. + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame jtreg.SkippedException + * @run main/manual bug4673850 + */ + +import java.awt.FlowLayout; +import javax.swing.JCheckBox; +import javax.swing.JFrame; +import javax.swing.JRadioButton; +import javax.swing.SwingConstants; +import javax.swing.UIManager; +import jtreg.SkippedException; + +public class bug4673850 { + private static final String INSTRUCTIONS = """ + + + + + +

This test is for Motif LaF.

+ +

+ When the test starts, you'll see 2 radio buttons and 2 check boxes + with the checkmarks painted.

+ +

+ Ensure that all the button's checkmarks are painted entirely + within the circular/rectangle checkbox, NOT over them or outside them. +

+ + """; + + public static void main(String[] args) throws Exception { + try { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); + } catch (Exception e) { + throw new SkippedException("Unsupported LaF", e); + } + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .rows(10) + .columns(45) + .testUI(createAndShowUI()) + .build() + .awaitAndCheck(); + } + + private static JFrame createAndShowUI() { + JFrame frame = new JFrame("bug4673850"); + frame.setLayout(new FlowLayout()); + + JRadioButton rb = new JRadioButton("RadioButt"); + rb.setSelected(true); + frame.add(rb); + JRadioButton rb2 = new JRadioButton("RadioButt"); + rb2.setHorizontalTextPosition(SwingConstants.LEFT); + rb2.setSelected(true); + frame.add(rb2); + + JCheckBox cb = new JCheckBox("CheckBox"); + cb.setSelected(true); + frame.add(cb); + JCheckBox cb2 = new JCheckBox("CheckBox"); + cb2.setHorizontalTextPosition(SwingConstants.LEFT); + cb2.setSelected(true); + frame.add(cb2); + frame.setSize(200, 150); + return frame; + } +} \ No newline at end of file diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JRootPane/bug4614623.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JRootPane/bug4614623.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JRootPane/bug4614623.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JRootPane/bug4614623.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4614623 + * @requires (os.family == "windows") + * @summary Tests that w2k mnemonic underlining works when there's no + focus owner + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4614623 + */ + +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.UIManager; + +public class bug4614623 { + private static final String INSTRUCTIONS = """ + This test verifies if the short-cut character + (menu mnemonic) is underlined when the ALT key is held down. + + Check if the following is true. + 1) Press Alt key. The letter 'F' (menu mnemonic) of + the "File" menu should now be underlined. + 2) Release the Alt key, the selection background (light grey) + should appear around the "File" menu. Compare "About" menu + with "File" menu to see the light grey selection background. + + If the above is true, press PASS else FAIL. + """; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(62) + .rows(12) + .testUI(bug4614623::createAndShowUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createAndShowUI() { + JFrame frame = new JFrame("bug4614623 - File menu test"); + JMenuBar menuBar = new JMenuBar(); + + JMenu fileMenu = new JMenu("File"); + fileMenu.setMnemonic('F'); + menuBar.add(fileMenu); + + JMenu about = new JMenu("About"); + menuBar.add(about); + menuBar.setSize(300, 100); + + frame.setJMenuBar(menuBar); + menuBar.requestFocus(); + frame.setSize(300, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/6524424/bug6524424.html openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/6524424/bug6524424.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/6524424/bug6524424.html 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/6524424/bug6524424.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ - - - - - -To test fix follow the next steps: -1. Select a slider (do the next steps for every slider) -2. Check that the next keyboard buttons work correctly: - Up, Down, Left, Right, Page Up, Page Down -3. Press left mouse button on a free space of the slider and check - that thumb moves correctly - - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/6524424/bug6524424.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/6524424/bug6524424.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/6524424/bug6524424.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/6524424/bug6524424.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* @test - * @bug 6524424 - * @requires (os.family == "windows") - * @summary JSlider Clicking In Tracks Behavior Inconsistent For Different Tick Spacings - * @author Pavel Porvatov - * @modules java.desktop/com.sun.java.swing.plaf.windows - * @run applet/manual=done bug6524424.html - */ - -import java.awt.*; -import javax.swing.*; - -import com.sun.java.swing.plaf.windows.WindowsLookAndFeel; - -public class bug6524424 extends JApplet { - public static void main(String[] args) { - try { - UIManager.setLookAndFeel(new WindowsLookAndFeel()); - } catch (UnsupportedLookAndFeelException e) { - e.printStackTrace(); - - return; - } - - TestPanel panel = new TestPanel(); - - JFrame frame = new JFrame(); - - frame.setContentPane(panel); - frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - frame.pack(); - frame.setLocationRelativeTo(null); - - frame.setVisible(true); - } - - public void init() { - TestPanel panel = new TestPanel(); - - setContentPane(panel); - } - - private static class TestPanel extends JPanel { - - private TestPanel() { - super(new GridBagLayout()); - - JSlider slider1 = createSlider(1, 2); - JSlider slider2 = createSlider(2, 4); - JSlider slider3 = createSlider(3, 6); - - addComponent(this, slider1); - addComponent(this, slider2); - addComponent(this, slider3); - } - - private JSlider createSlider(int tickMinor, int tickMajor) { - JSlider result = new JSlider(); - - result.setPaintLabels(true); - result.setPaintTicks(true); - result.setSnapToTicks(true); - result.setMinimum(0); - result.setMaximum(12); - result.setMinorTickSpacing(tickMinor); - result.setMajorTickSpacing(tickMajor); - - return result; - } - } - - private static void addComponent(JPanel panel, Component component) { - panel.add(component, new GridBagConstraints(0, - panel.getComponentCount(), 1, 1, - 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, - new Insets(0, 0, 0, 0), 0, 0)); - } -} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/bug4186062.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4186062.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/bug4186062.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4186062.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4382876 + * @summary Tests if JSlider fires ChangeEvents when thumb is clicked and not moved + * @key headful + * @run main bug4186062 + */ + +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.InputEvent; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSlider; +import javax.swing.SwingUtilities; +import javax.swing.event.ChangeListener; + +public class bug4186062 { + private static JFrame f; + private static JSlider slider; + private static volatile Point loc; + private static volatile int labelNum; + + public static void main(String[] args) throws Exception { + try { + SwingUtilities.invokeAndWait(() -> { + f = new JFrame("JSlider Click Value Test"); + f.setSize(400, 200); + f.setLocationRelativeTo(null); + f.setVisible(true); + JPanel panel = new JPanel(); + slider = new JSlider(); + final JLabel label = new JLabel("0"); + labelNum = 0; + + ChangeListener listener = e -> { + labelNum++; + label.setText("" + labelNum); + }; + slider.addChangeListener(listener); + + panel.add(slider); + panel.add(label); + f.add(panel); + }); + + Robot r = new Robot(); + r.setAutoDelay(100); + r.waitForIdle(); + r.delay(1000); + + SwingUtilities.invokeAndWait(() -> { + loc = slider.getLocationOnScreen(); + loc.setLocation(loc.x + (slider.getWidth() / 2), + loc.y + (slider.getHeight() / 2)); + }); + + r.mouseMove(loc.x, loc.y); + r.mousePress(InputEvent.BUTTON1_DOWN_MASK); + r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + + if (labelNum > 0) { + throw new RuntimeException(labelNum + " ChangeEvents fired. " + + "Test failed"); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (f != null) { + f.dispose(); + } + }); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/bug4275631.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4275631.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/bug4275631.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4275631.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4275631 + * @summary Tests if vertical JSlider is properly aligned in large container + * @key headful + * @run main bug4275631 + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Point; +import java.awt.Robot; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JSlider; +import javax.swing.SwingUtilities; + +public class bug4275631 { + private static final int OFFSET = 1; + private static JFrame f; + private static JSlider slider1; + private static JSlider slider2; + private static volatile Point loc1; + private static volatile Point loc2; + + public static void main(String[] args) throws Exception { + try { + SwingUtilities.invokeAndWait(() -> { + f = new JFrame("JSlider Alignment Test"); + f.setSize(400, 200); + f.setLocationRelativeTo(null); + + // Create two sliders, verify the alignment on the slider to be + // used in the border layout + slider1 = new JSlider(JSlider.VERTICAL, 0, 99, 50); + slider1.setInverted(true); + slider1.setMajorTickSpacing(10); + slider1.setMinorTickSpacing(1); + slider1.setPaintTicks(true); + slider1.setPaintLabels(true); + slider2 = new JSlider(JSlider.VERTICAL, 0, 99, 50); + slider2.setInverted(true); + slider2.setMajorTickSpacing(10); + slider2.setMinorTickSpacing(1); + slider2.setPaintTicks(true); + slider2.setPaintLabels(true); + + // Try to center the natural way, using a border layout in the "Center" + JPanel borderPanel = new JPanel(); + borderPanel.setLayout(new BorderLayout()); + borderPanel.setBorder(BorderFactory.createTitledBorder("BorderLayout")); + borderPanel.add(slider1, BorderLayout.CENTER); + borderPanel.setPreferredSize(new Dimension(200, 200)); + + // Try to center using GridBagLayout, with glue on left + // and right to squeeze slider into place + JPanel gridBagPanel = new JPanel(new GridBagLayout()); + gridBagPanel.setBorder(BorderFactory.createTitledBorder("GridBagLayout")); + GridBagConstraints c = new GridBagConstraints(); + c.gridx = 1; + c.fill = GridBagConstraints.VERTICAL; + c.weighty = 1.0; + gridBagPanel.add(slider2, c); + c.gridx = 0; + c.fill = GridBagConstraints.BOTH; + c.weighty = 0.0; + gridBagPanel.add(Box.createHorizontalGlue(), c); + c.gridx = 2; + c.fill = GridBagConstraints.BOTH; + gridBagPanel.add(Box.createHorizontalGlue(), c); + gridBagPanel.setPreferredSize(new Dimension(200, 200)); + + f.add(borderPanel, BorderLayout.WEST); + f.add(gridBagPanel, BorderLayout.EAST); + f.setVisible(true); + }); + + Robot r = new Robot(); + r.setAutoDelay(100); + r.waitForIdle(); + r.delay(1000); + + SwingUtilities.invokeAndWait(() -> { + loc1 = slider1.getLocationOnScreen(); + loc1.setLocation(loc1.x + (slider1.getWidth() / 2), + loc1.y + (slider1.getHeight() / 2)); + + loc2 = slider2.getLocationOnScreen(); + loc2.setLocation(loc2.x + (slider2.getWidth() / 2), + loc2.y + (slider2.getHeight() / 2)); + }); + + if (loc1.y > loc2.y + OFFSET || loc1.y < loc2.y - OFFSET) { + throw new RuntimeException("JSlider position is not aligned!"); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (f != null) { + f.dispose(); + } + }); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/bug4382876.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4382876.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/bug4382876.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug4382876.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4382876 + * @summary Tests how PgUp and PgDn keys work with JSlider + * @key headful + * @run main bug4382876 + */ + +import java.awt.BorderLayout; +import java.awt.ComponentOrientation; +import java.awt.GraphicsConfiguration; +import java.awt.GraphicsEnvironment; +import java.awt.Robot; +import java.awt.event.KeyEvent; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; +import javax.swing.JFrame; +import javax.swing.JSlider; +import javax.swing.SwingUtilities; + +public class bug4382876 { + private static Robot r; + private static JFrame f; + private static JSlider slider; + private static boolean upFail; + private static boolean downFail; + + public static void main(String[] args) throws Exception { + try { + SwingUtilities.invokeAndWait(() -> { + f = new JFrame("JSlider PageUp/Down Test"); + f.setSize(300, 200); + f.setLocationRelativeTo(null); + f.setVisible(true); + slider = new JSlider(-1000, -900, -1000); + slider.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); + slider.putClientProperty("JSlider.isFilled", Boolean.TRUE); + f.add(slider, BorderLayout.CENTER); + }); + + r = new Robot(); + r.setAutoDelay(100); + r.waitForIdle(); + r.delay(1000); + + r.keyPress(KeyEvent.VK_PAGE_UP); + SwingUtilities.invokeAndWait(() -> { + if (slider.getValue() < -1000) { + System.out.println("PAGE_UP VAL: " + slider.getValue()); + upFail = true; + } + }); + if (upFail) { + writeFailImage(); + throw new RuntimeException("Slider value did NOT change with PAGE_UP"); + } + r.keyPress(KeyEvent.VK_PAGE_DOWN); + SwingUtilities.invokeAndWait(() -> { + if (slider.getValue() > -1000) { + System.out.println("PAGE_DOWN VAL: " + slider.getValue()); + downFail = true; + } + }); + if (downFail) { + writeFailImage(); + throw new RuntimeException("Slider value did NOT change with PAGE_DOWN"); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (f != null) { + f.dispose(); + } + }); + } + } + + private static void writeFailImage() throws IOException { + GraphicsConfiguration ge = GraphicsEnvironment + .getLocalGraphicsEnvironment().getDefaultScreenDevice() + .getDefaultConfiguration(); + BufferedImage failImage = r.createScreenCapture(ge.getBounds()); + ImageIO.write(failImage, "png", new File("failImage.png")); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/bug6524424.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug6524424.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JSlider/bug6524424.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JSlider/bug6524424.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2008, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 6524424 + * @requires (os.family == "windows") + * @summary JSlider clicking in tracks behavior inconsistent for different tick spacings + * @modules java.desktop/com.sun.java.swing.plaf.windows + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug6524424 + */ + +import java.awt.Component; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JSlider; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + +import com.sun.java.swing.plaf.windows.WindowsLookAndFeel; + +public class bug6524424 { + private static final String INSTRUCTIONS = """ + 1. Select a slider (do the next steps for every slider) + 2. Check that the next keyboard buttons work correctly: + Up, Down, Left, Right, Page Up, Page Down + 3. Press left mouse button on a free space of the slider + check if thumb moves correctly + press Pass else press Fail."""; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("Slider Behavior Instructions") + .instructions(INSTRUCTIONS) + .rows(7) + .columns(30) + .testUI(bug6524424::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + try { + UIManager.setLookAndFeel(new WindowsLookAndFeel()); + } catch (UnsupportedLookAndFeelException ex) { + PassFailJFrame.forceFail(ex.toString()); + return null; + } + + TestPanel panel = new TestPanel(); + + JFrame frame = new JFrame("bug6524424"); + + frame.setContentPane(panel); + frame.pack(); + return frame; + } + + private static class TestPanel extends JPanel { + + private TestPanel() { + super(new GridBagLayout()); + + JSlider slider1 = createSlider(1, 2); + JSlider slider2 = createSlider(2, 4); + JSlider slider3 = createSlider(3, 6); + + addComponent(this, slider1); + addComponent(this, slider2); + addComponent(this, slider3); + } + + private JSlider createSlider(int tickMinor, int tickMajor) { + JSlider result = new JSlider(); + + result.setPaintLabels(true); + result.setPaintTicks(true); + result.setSnapToTicks(true); + result.setMinimum(0); + result.setMaximum(12); + result.setMinorTickSpacing(tickMinor); + result.setMajorTickSpacing(tickMajor); + + return result; + } + } + + private static void addComponent(JPanel panel, Component component) { + panel.add(component, new GridBagConstraints(0, + panel.getComponentCount(), 1, 1, + 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, + new Insets(0, 0, 0, 0), 0, 0)); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JSplitPane/bug4820080.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JSplitPane/bug4820080.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JSplitPane/bug4820080.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JSplitPane/bug4820080.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Panel; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JSeparator; +import javax.swing.JSplitPane; +import javax.swing.UIManager; + +/* + * @test + * @bug 4820080 7175397 + * @summary RFE: Cannot Change the JSplitPane Divider Color while dragging + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4820080 + */ + +public class bug4820080 { + private static final String INSTRUCTIONS = """ + Drag the dividers of the splitpanes (both top and bottom). If the divider + color is green while dragging then test passes, otherwise test fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4820080::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4820080"); + UIManager.put("SplitPaneDivider.draggingColor", Color.GREEN); + + Box box = new Box(BoxLayout.Y_AXIS); + frame.add(box); + + JPanel jleft = new JPanel(); + jleft.setBackground(Color.DARK_GRAY); + jleft.setPreferredSize(new Dimension(100, 100)); + JPanel jright = new JPanel(); + jright.setBackground(Color.DARK_GRAY); + jright.setPreferredSize(new Dimension(100, 100)); + + JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jleft, jright); + jsp.setContinuousLayout(false); + box.add(jsp); + + box.add(Box.createVerticalStrut(5)); + box.add(new JSeparator()); + box.add(Box.createVerticalStrut(5)); + + Panel left = new Panel(); + left.setBackground(Color.DARK_GRAY); + left.setPreferredSize(new Dimension(100, 100)); + Panel right = new Panel(); + right.setBackground(Color.DARK_GRAY); + right.setPreferredSize(new Dimension(100, 100)); + + JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, right); + sp.setContinuousLayout(false); + box.add(sp); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/4287208/bug4287208.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/4287208/bug4287208.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/4287208/bug4287208.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/4287208/bug4287208.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4287208 + * @summary Tests if JTabbedPane's setEnabledAt properly renders bounds of Tabs + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4287208 +*/ + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; + +public class bug4287208 implements ActionListener { + + static final String INSTRUCTIONS = """ + There are two tabs in the test window. Press the "Test" button 5 times. + If this causes tabs to overlap at any time, the test FAILS, otherwise + the test PASSES. + """; + + static boolean state = true; + static JTabbedPane jtp; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4287208 Test Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4287208::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame frame = new JFrame("bug4287208"); + + JButton start = new JButton("Test"); + start.addActionListener(new bug4287208()); + JPanel buttonPanel = new JPanel(); + buttonPanel.add(start); + frame.add(buttonPanel,BorderLayout.SOUTH); + + jtp = new JTabbedPane(); + jtp.addTab("Panel One", new JPanel()); + String s = System.getProperty("test.src",".") + + System.getProperty("file.separator") + "duke.gif"; + ImageIcon ii = new ImageIcon(s); + jtp.addTab("Panel Two", ii, new JPanel()); + + frame.add(jtp, BorderLayout.CENTER); + frame.setSize(500, 300); + return frame; + } + + public void actionPerformed(ActionEvent evt) { + jtp.setEnabledAt(0, state); + jtp.setEnabledAt(1, !state); + state = !state; + } + +} Binary files /srv/release.debian.org/tmp/prfObtquqT/openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/4287208/duke.gif and /srv/release.debian.org/tmp/r7m5hcrpih/openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/4287208/duke.gif differ diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4273320.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4273320.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4273320.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4273320.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4273320 + * @summary JTabbedPane.setTitleAt() should refresh when using HTML text + * @key headful +*/ + +import java.awt.BorderLayout; +import java.awt.Rectangle; +import java.awt.Robot; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.SwingUtilities; +import javax.swing.plaf.TabbedPaneUI; + +public class bug4273320 { + + static JFrame frame; + static volatile JTabbedPane tabs; + + static final String PLAIN = "Plain"; + static final String HTML = "A fairly long HTML text label"; + + public static void main(String[] args) throws Exception { + try { + SwingUtilities.invokeAndWait(bug4273320::createUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(1000); + + TabbedPaneUI ui = tabs.getUI(); + Rectangle origSize = ui.getTabBounds(tabs, 0); + + SwingUtilities.invokeAndWait(() -> { + tabs.setTitleAt(0, HTML); + }); + robot.waitForIdle(); + robot.delay(1000); + + Rectangle newSize = ui.getTabBounds(tabs, 0); + // The tab should be resized larger if the longer HTML text is added + System.out.println("orig = " + origSize.width + " x " + origSize.height); + System.out.println("new = " + newSize.width + " x " + newSize.height); + if (origSize.width >= newSize.width) { + throw new RuntimeException("Tab text is not updated."); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + static void createUI() { + frame = new JFrame("bug4273320"); + tabs = new JTabbedPane(); + JPanel panel = new JPanel(); + tabs.addTab(PLAIN, panel); + frame.getContentPane().add(tabs, BorderLayout.CENTER); + frame.setSize(500, 300); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4287268.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4287268.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4287268.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4287268.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4287268 + * @summary Tests if setIconAt(index,Icon) does not set Tab's disabled icon + * @key headful +*/ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.image.BufferedImage; +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.SwingUtilities; + +public class bug4287268 { + + static JFrame frame; + static volatile JTabbedPane jtp; + + public static void main(String[] args) throws Exception { + try { + SwingUtilities.invokeAndWait(bug4287268::createUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(1000); + + Point point = jtp.getLocationOnScreen(); + int width = jtp.getWidth(); + int height = jtp.getHeight(); + Rectangle r = new Rectangle(point.x, point.y, width, height); + BufferedImage cap = robot.createScreenCapture(r); + + int red = Color.red.getRGB(); + for (int x = 0; x < cap.getWidth(); x++) { + for (int y = 0; y < cap.getHeight(); y++) { + int rgb = cap.getRGB(x, y); + if (rgb == red) { + try { + javax.imageio.ImageIO.write(cap, "png", new java.io.File("cap.png")); + } catch (Exception ee) { + } + throw new RuntimeException("Test failed : found red"); + } + } + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + static void createUI() { + frame = new JFrame("bug4287268"); + jtp = new JTabbedPane(); + JPanel panel = new JPanel(); + jtp.add("Panel One", panel); + int size = 64; + BufferedImage img = new BufferedImage(size, size, BufferedImage.TYPE_INT_RGB); + Graphics g = img.createGraphics(); + g.setColor(Color.red); + g.fillRect(0, 0, size, size); + ImageIcon ii = new ImageIcon(img); + jtp.setIconAt(0, ii); + jtp.setEnabledAt(0, false); + frame.getContentPane().add(jtp, BorderLayout.CENTER); + frame.pack(); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4362226.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4362226.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4362226.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4362226.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4362226 + * @summary JTabbedPane's HTML title should have proper offsets + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4362226 +*/ + +import java.awt.BorderLayout; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.UIManager; +import javax.swing.plaf.metal.MetalLookAndFeel; + +public class bug4362226 { + + static final String PLAIN = "Label"; + static final String HTML = "Label"; + + static final String INSTRUCTIONS = """ + The test window contains a JTabbedPane with two tabs. + The titles for both tabs should look similar and drawn with the same fonts. + The text of the tabs should start in a position that is offset from the left + boundary of the tab, so there is clear space between them. + If there is no space, then the test FAILS. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4362226 Test Instructions") + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(bug4362226::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + try { + UIManager.setLookAndFeel(new MetalLookAndFeel()); + } catch (Exception e) { + } + JFrame frame = new JFrame("bug4362226"); + JTabbedPane tabs = new JTabbedPane(); + tabs.addTab(PLAIN, new JPanel()); + tabs.addTab(HTML, new JPanel()); + frame.add(tabs, BorderLayout.CENTER); + frame.setSize(500, 300); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4499556.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4499556.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4499556.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4499556.java 2026-01-15 15:34:19.000000000 +0000 @@ -89,9 +89,10 @@ } static volatile JTabbedPane pane; + static volatile JFrame frame; static JFrame createUI() { - JFrame frame = new JFrame("bug4499556"); + frame = new JFrame("bug4499556"); pane = getTabbedPane(); frame.add(pane); frame.add(getRightPanel(), BorderLayout.EAST); @@ -262,7 +263,7 @@ e.printStackTrace(); return false; } - SwingUtilities.updateComponentTreeUI(pane); + SwingUtilities.updateComponentTreeUI(frame); return true; } diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4613811.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4613811.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4613811.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4613811.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4613811 + * @summary Scrollable Buttons of JTabbedPane don't + * get enabled or disabled on selecting tab + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4613811 + */ + +import java.awt.BorderLayout; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JTabbedPane; + +public class bug4613811 { + private static final String INSTRUCTIONS = """ + Select different tabs and check that the scrollable + buttons are correctly enabled and disabled. + + When the very first tab (Tab 1) is fully visible + On macOS: + the left arrow button should NOT be visible. + + On other platforms: + the left arrow button should be disabled. + + If the last tab (Tab 5) is fully visible + On macOS: + the right arrow button should NOT be visible. + + On other platforms: + the right arrow button should be disabled. + + If the above is true press PASS else FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(30) + .testUI(bug4613811::createAndShowUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createAndShowUI() { + JFrame frame = new JFrame("bug4613811 - JTabbedPane Test"); + final JTabbedPane tabPane = new JTabbedPane(JTabbedPane.TOP, + JTabbedPane.SCROLL_TAB_LAYOUT); + for (int i = 1; i <= 5; i++) { + tabPane.addTab("TabbedPane: Tab " + i, null, new JLabel("Tab " + i)); + } + frame.add(tabPane, BorderLayout.CENTER); + frame.setResizable(false); + frame.setSize(400, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4668865.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4668865.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTabbedPane/bug4668865.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTabbedPane/bug4668865.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4668865 + * @summary Tests if JTabbedPane's setEnabledAt properly renders bounds of Tabs + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4668865 +*/ + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import javax.swing.AbstractAction; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JTabbedPane; +import javax.swing.JTextField; + +public class bug4668865 { + + static final String INSTRUCTIONS = """ + This tests that tooltips are shown for all tabs in all orientations, + when it is necessary to scroll to see all the tabs. + Use the buttons to select each orientation (top/bottom/left/right) in turn. + Scroll through the 8 tabs - using the navigation arrows as needed. + Move the mouse over each tab in turn and verify that the matching tooltip is shown + after sufficient hover time. + The test PASSES if the tooltips are shown for all cases, and FAILS otherwise. + """; + + static JTabbedPane tabPane; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4668865 Test Instructions") + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4668865::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame frame = new JFrame("bug4668865"); + + tabPane = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); + for(int i = 1; i < 9; i++) { + tabPane.addTab("Tab" + i, null, new JTextField("Tab" + i), "Tab" + i); + } + frame.add(tabPane, BorderLayout.CENTER); + + JButton top = new JButton(new AbstractAction() { + public void actionPerformed(ActionEvent e) { + tabPane.setTabPlacement(JTabbedPane.TOP); + } + }); + top.setText("Top"); + frame.add(top, BorderLayout.NORTH); + + JButton bottom = new JButton(new AbstractAction() { + public void actionPerformed(ActionEvent e) { + tabPane.setTabPlacement(JTabbedPane.BOTTOM); + } + }); + bottom.setText("Bottom"); + frame.add(bottom, BorderLayout.SOUTH); + + JButton left = new JButton(new AbstractAction() { + public void actionPerformed(ActionEvent e) { + tabPane.setTabPlacement(JTabbedPane.LEFT); + } + }); + + left.setText("Left"); + frame.add(left, BorderLayout.WEST); + + JButton right = new JButton(new AbstractAction() { + public void actionPerformed(ActionEvent e) { + tabPane.setTabPlacement(JTabbedPane.RIGHT); + } + }); + + right.setText("Right"); + frame.add(right, BorderLayout.EAST); + + frame.setSize(400, 400); + return frame; + } + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/CheckBoxFirstClick.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/CheckBoxFirstClick.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/CheckBoxFirstClick.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/CheckBoxFirstClick.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,185 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.border.BevelBorder; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; +import javax.swing.table.TableModel; + +/* + * @test + * @bug 4115930 + * @summary Verify checkboxes in the table respond to first click. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual CheckBoxFirstClick + */ + +public class CheckBoxFirstClick { + private static final String INSTRUCTIONS = """ + Click over the checkbox in the table. It should change state + on the first click. If not - press 'fail'. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(CheckBoxFirstClick::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("ListSizeBug"); + + // Take the dummy data from SwingSet. + final String[] names = {"First Name", "Last Name", "Favorite Color", + "Favorite Number", "Vegetarian"}; + final Object[][] data = { + {"Mark", "Andrews", "Red", 2, true}, + {"Tom", "Ball", "Blue", 99, false}, + {"Alan", "Chung", "Green", 838, false}, + {"Jeff", "Dinkins", "Turquois", 8, true}, + {"Amy", "Fowler", "Yellow", 3, false}, + {"Brian", "Gerhold", "Green", 0, false}, + {"James", "Gosling", "Pink", 21, false}, + {"David", "Karlton", "Red", 1, false}, + {"Dave", "Kloba", "Yellow", 14, false}, + {"Peter", "Korn", "Purple", 12, false}, + {"Phil", "Milne", "Purple", 3, false}, + {"Dave", "Moore", "Green", 88, false}, + {"Hans", "Muller", "Maroon", 5, false}, + {"Rick", "Levenson", "Blue", 2, false}, + {"Tim", "Prinzing", "Blue", 22, false}, + {"Chester", "Rose", "Black", 0, false}, + {"Ray", "Ryan", "Gray", 77, false}, + {"Georges", "Saab", "Red", 4, false}, + {"Willie", "Walker", "Phthalo Blue", 4, false}, + {"Kathy", "Walrath", "Blue", 8, false}, + {"Arnaud", "Weber", "Green", 44, false} + }; + + // Create a model of the data. + TableModel dataModel = new AbstractTableModel() { + // These methods always need to be implemented. + public int getColumnCount() { + return names.length; + } + + public int getRowCount() { + return data.length; + } + + public Object getValueAt(int row, int col) { + return data[row][col]; + } + + // The default implementations of these methods in + // AbstractTableModel would work, but we can refine them. + public String getColumnName(int column) { + return names[column]; + } + + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + + public boolean isCellEditable(int row, int col) { + return true; + } + + public void setValueAt(Object aValue, int row, int column) { + System.out.println("Setting value to: " + aValue); + data[row][column] = aValue; + } + }; + + // Create the table + JTable tableView = new JTable(dataModel); + // Turn off auto-resizing so that we can set column sizes programmatically. + // In this mode, all columns will get their preferred widths, as set blow. + tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + + // Create a combo box to show that you can use one in a table. + JComboBox comboBox = new JComboBox(); + comboBox.addItem("Red"); + comboBox.addItem("Orange"); + comboBox.addItem("Yellow"); + comboBox.addItem("Green"); + comboBox.addItem("Blue"); + comboBox.addItem("Indigo"); + comboBox.addItem("Violet"); + + TableColumn colorColumn = tableView.getColumn("Favorite Color"); + // Use the combo box as the editor in the "Favorite Color" column. + colorColumn.setCellEditor(new DefaultCellEditor(comboBox)); + + // Set a pink background and tooltip for the Color column renderer. + DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer(); + colorColumnRenderer.setBackground(Color.pink); + colorColumnRenderer.setToolTipText("Click for combo box"); + colorColumn.setCellRenderer(colorColumnRenderer); + + // Set a tooltip for the header of the colors column. + TableCellRenderer headerRenderer = colorColumn.getHeaderRenderer(); + if (headerRenderer instanceof DefaultTableCellRenderer) + ((DefaultTableCellRenderer) headerRenderer).setToolTipText("Hi Mom!"); + + // Set the width of the "Vegetarian" column. + TableColumn vegetarianColumn = tableView.getColumn("Vegetarian"); + vegetarianColumn.setPreferredWidth(100); + + // Show the values in the "Favorite Number" column in different colors. + TableColumn numbersColumn = tableView.getColumn("Favorite Number"); + DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer() { + public void setValue(Object value) { + int cellValue = (value instanceof Number) ? ((Number) value).intValue() : 0; + setForeground((cellValue > 30) ? Color.black : Color.red); + setText((value == null) ? "" : value.toString()); + } + }; + numberColumnRenderer.setHorizontalAlignment(JLabel.RIGHT); + numbersColumn.setCellRenderer(numberColumnRenderer); + numbersColumn.setPreferredWidth(110); + + // Finish setting up the table. + JScrollPane scrollpane = new JScrollPane(tableView); + scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED)); + scrollpane.setPreferredSize(new Dimension(430, 200)); + + frame.add(scrollpane); + frame.setSize(500, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/IllegalStateException.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/IllegalStateException.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/IllegalStateException.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/IllegalStateException.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,187 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.border.BevelBorder; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; +import javax.swing.table.TableModel; + +/* + * @test + * @bug 4133143 + * @summary Illegal State exception in ComboBox editor in table + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual IllegalStateException + */ + +public class IllegalStateException { + private static final String INSTRUCTIONS = """ + Click on a cell in the first column, delete the contents but leave the editor with focus. + Click on the third column popping up a combo box. + Verify that the text editor loses focus. + If it does, press "pass", otherwise press "fail". + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(IllegalStateException::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("IllegalStateException"); + + // Take the dummy data from SwingSet. + final String[] names = {"First Name", "Last Name", "Favorite Color", + "Favorite Number", "Vegetarian"}; + final Object[][] data = { + {"Mark", "Andrews", "Red", 2, true}, + {"Tom", "Ball", "Blue", 99, false}, + {"Alan", "Chung", "Green", 838, false}, + {"Jeff", "Dinkins", "Turquois", 8, true}, + {"Amy", "Fowler", "Yellow", 3, false}, + {"Brian", "Gerhold", "Green", 0, false}, + {"James", "Gosling", "Pink", 21, false}, + {"David", "Karlton", "Red", 1, false}, + {"Dave", "Kloba", "Yellow", 14, false}, + {"Peter", "Korn", "Purple", 12, false}, + {"Phil", "Milne", "Purple", 3, false}, + {"Dave", "Moore", "Green", 88, false}, + {"Hans", "Muller", "Maroon", 5, false}, + {"Rick", "Levenson", "Blue", 2, false}, + {"Tim", "Prinzing", "Blue", 22, false}, + {"Chester", "Rose", "Black", 0, false}, + {"Ray", "Ryan", "Gray", 77, false}, + {"Georges", "Saab", "Red", 4, false}, + {"Willie", "Walker", "Phthalo Blue", 4, false}, + {"Kathy", "Walrath", "Blue", 8, false}, + {"Arnaud", "Weber", "Green", 44, false} + }; + + // Create a model of the data. + TableModel dataModel = new AbstractTableModel() { + // These methods always need to be implemented. + public int getColumnCount() { + return names.length; + } + + public int getRowCount() { + return data.length; + } + + public Object getValueAt(int row, int col) { + return data[row][col]; + } + + // The default implementations of these methods in + // AbstractTableModel would work, but we can refine them. + public String getColumnName(int column) { + return names[column]; + } + + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + + public boolean isCellEditable(int row, int col) { + return true; + } + + public void setValueAt(Object aValue, int row, int column) { + System.out.println("Setting value to: " + aValue); + data[row][column] = aValue; + } + }; + + // Create the table + JTable tableView = new JTable(dataModel); + // Turn off auto-resizing so that we can set column sizes programmatically. + // In this mode, all columns will get their preferred widths, as set blow. + tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + + // Create a combo box to show that you can use one in a table. + JComboBox comboBox = new JComboBox(); + comboBox.addItem("Red"); + comboBox.addItem("Orange"); + comboBox.addItem("Yellow"); + comboBox.addItem("Green"); + comboBox.addItem("Blue"); + comboBox.addItem("Indigo"); + comboBox.addItem("Violet"); + + TableColumn colorColumn = tableView.getColumn("Favorite Color"); + // Use the combo box as the editor in the "Favorite Color" column. + colorColumn.setCellEditor(new DefaultCellEditor(comboBox)); + + // Set a pink background and tooltip for the Color column renderer. + DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer(); + colorColumnRenderer.setBackground(Color.pink); + colorColumnRenderer.setToolTipText("Click for combo box"); + colorColumn.setCellRenderer(colorColumnRenderer); + + // Set a tooltip for the header of the colors column. + TableCellRenderer headerRenderer = colorColumn.getHeaderRenderer(); + if (headerRenderer instanceof DefaultTableCellRenderer) + ((DefaultTableCellRenderer) headerRenderer).setToolTipText("Hi Mom!"); + + // Set the width of the "Vegetarian" column. + TableColumn vegetarianColumn = tableView.getColumn("Vegetarian"); + vegetarianColumn.setPreferredWidth(100); + + // Show the values in the "Favorite Number" column in different colors. + TableColumn numbersColumn = tableView.getColumn("Favorite Number"); + DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer() { + public void setValue(Object value) { + int cellValue = (value instanceof Number) ? ((Number) value).intValue() : 0; + setForeground((cellValue > 30) ? Color.black : Color.red); + setText((value == null) ? "" : value.toString()); + } + }; + numberColumnRenderer.setHorizontalAlignment(JLabel.RIGHT); + numbersColumn.setCellRenderer(numberColumnRenderer); + numbersColumn.setPreferredWidth(110); + + // Finish setting up the table. + JScrollPane scrollpane = new JScrollPane(tableView); + scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED)); + scrollpane.setPreferredSize(new Dimension(430, 200)); + + frame.add(scrollpane); + frame.setSize(500, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/InternationalCharacters.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/InternationalCharacters.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/InternationalCharacters.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/InternationalCharacters.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,172 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; +import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.border.BevelBorder; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; +import javax.swing.table.TableModel; + +/* + * @test + * @bug 4179066 + * @summary Tests that JTable prints AltGr characters (~\@|{}[]²µ³) + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual InternationalCharacters + */ + +public class InternationalCharacters { + private static final String INSTRUCTIONS = """ + Double-click an entry in the JTable. + Press Alt-Gr or Option with any key to type an international character. + Verify that the international character appears in the table. + If it does, press "pass", otherwise press "fail". + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(InternationalCharacters::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("InternationalCharacters test"); + // Take the dummy data from SwingSet. + final String[] names = {"First Name", "Last Name", "Favorite Color", + "Favorite Number", "Vegetarian"}; + final Object[][] data = { + {"Mark", "Andrews", "Red", 2, true}, + {"Tom", "Ball", "Blue", 99, false}, + {"Alan", "Chung", "Green", 838, false}, + {"Jeff", "Dinkins", "Turquois", 8, true}, + {"Amy", "Fowler", "Yellow", 3, false}, + {"Brian", "Gerhold", "Green", 0, false}, + {"James", "Gosling", "Pink", 21, false}, + {"David", "Karlton", "Red", 1, false}, + {"Dave", "Kloba", "Yellow", 14, false}, + {"Peter", "Korn", "Purple", 12, false}, + {"Phil", "Milne", "Purple", 3, false}, + {"Dave", "Moore", "Green", 88, false}, + {"Hans", "Muller", "Maroon", 5, false}, + {"Rick", "Levenson", "Blue", 2, false}, + {"Tim", "Prinzing", "Blue", 22, false}, + {"Chester", "Rose", "Black", 0, false}, + {"Ray", "Ryan", "Gray", 77, false}, + {"Georges", "Saab", "Red", 4, false}, + {"Willie", "Walker", "Phthalo Blue", 4, false}, + {"Kathy", "Walrath", "Blue", 8, false}, + {"Arnaud", "Weber", "Green", 44, false} + }; + + // Create a model of the data. + TableModel dataModel = new AbstractTableModel() { + // These methods always need to be implemented. + public int getColumnCount() { return names.length; } + public int getRowCount() { return data.length;} + public Object getValueAt(int row, int col) {return data[row][col];} + + // The default implementations of these methods in + // AbstractTableModel would work, but we can refine them. + public String getColumnName(int column) {return names[column];} + public Class getColumnClass(int c) {return getValueAt(0, c).getClass();} + public boolean isCellEditable(int row, int col) {return true;} + public void setValueAt(Object aValue, int row, int column) { + System.out.println("Setting value to: " + aValue); + data[row][column] = aValue; + } + }; + + // Create the table + JTable tableView = new JTable(dataModel); + // Turn off auto-resizing so that we can set column sizes programmatically. + // In this mode, all columns will get their preferred widths, as set blow. + tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + + // Create a combo box to show that you can use one in a table. + JComboBox comboBox = new JComboBox(); + comboBox.addItem("Red"); + comboBox.addItem("Orange"); + comboBox.addItem("Yellow"); + comboBox.addItem("Green"); + comboBox.addItem("Blue"); + comboBox.addItem("Indigo"); + comboBox.addItem("Violet"); + + TableColumn colorColumn = tableView.getColumn("Favorite Color"); + // Use the combo box as the editor in the "Favorite Color" column. + colorColumn.setCellEditor(new DefaultCellEditor(comboBox)); + + // Set a pink background and tooltip for the Color column renderer. + DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer(); + colorColumnRenderer.setBackground(Color.pink); + colorColumnRenderer.setToolTipText("Click for combo box"); + colorColumn.setCellRenderer(colorColumnRenderer); + + // Set a tooltip for the header of the colors column. + TableCellRenderer headerRenderer = colorColumn.getHeaderRenderer(); + if (headerRenderer instanceof DefaultTableCellRenderer) + ((DefaultTableCellRenderer)headerRenderer).setToolTipText("Hi Mom!"); + + // Set the width of the "Vegetarian" column. + TableColumn vegetarianColumn = tableView.getColumn("Vegetarian"); + vegetarianColumn.setPreferredWidth(100); + + // Show the values in the "Favorite Number" column in different colors. + TableColumn numbersColumn = tableView.getColumn("Favorite Number"); + DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer() { + public void setValue(Object value) { + int cellValue = (value instanceof Number) ? ((Number)value).intValue() : 0; + setForeground((cellValue > 30) ? Color.black : Color.red); + setText((value == null) ? "" : value.toString()); + } + }; + numberColumnRenderer.setHorizontalAlignment(JLabel.RIGHT); + numbersColumn.setCellRenderer(numberColumnRenderer); + numbersColumn.setPreferredWidth(110); + + // Finish setting up the table. + JScrollPane scrollpane = new JScrollPane(tableView); + scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED)); + scrollpane.setPreferredSize(new Dimension(430, 200)); + + frame.add(scrollpane); + frame.setSize(500, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/JTableScrollPrintTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/JTableScrollPrintTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/JTableScrollPrintTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/JTableScrollPrintTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.print.PageFormat; +import java.awt.print.Paper; +import java.awt.print.Printable; +import java.awt.print.PrinterException; +import java.awt.print.PrinterJob; + +import javax.swing.BoxLayout; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JViewport; +import javax.swing.table.DefaultTableModel; + +/* + * @test + * @key headful + * @bug 8210807 8322140 8322135 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary Test to check if JTable can be printed when JScrollPane added to it. + * @run main/manual JTableScrollPrintTest + */ + +public class JTableScrollPrintTest { + public static void main(String[] args) throws Exception { + String INSTRUCTIONS = """ + Instructions to Test: + 1. Print table onto Paper/PDF, using the Print Dialog. + 2. If entire table is printed, then the Test is PASS. + 3. If table is partially printed without table cells, + then the Test is FAIL. + """; + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .rows(6) + .columns(35) + .testUI(JTableScrollPrintTest::initialize) + .build() + .awaitAndCheck(); + } + + public static JFrame initialize() { + TestTable testTable = new TestTable(true); + JFrame frame = new JFrame("JTable Print Test"); + PassFailJFrame.addTestWindow(frame); + PassFailJFrame.positionTestWindow(frame, PassFailJFrame.Position.VERTICAL); + frame.add(testTable); + frame.pack(); + frame.setVisible(true); + PrintUtilities printerJob = new PrintUtilities(testTable); + printerJob.print("Test BackingStore Image Print"); + return frame; + } + + public static class TestTable extends JPanel { + public TestTable(Boolean useScrollPane) { + + setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + + DefaultTableModel model = new DefaultTableModel(); + model.addColumn("Column 1"); + model.addColumn("Column 2"); + model.addColumn("Column 3"); + model.addColumn("Column 4"); + + for (int row = 1; row <= 5; row++) { + model.addRow(new Object[]{ + "R" + row + " C1", "R" + row + " C2", "R" + row + " C3", "R" + row + " C4"}); + } + + JTable table = new JTable(model); + + if (useScrollPane) { + JScrollPane sp = new JScrollPane(table, + JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + sp.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE); + add(sp); + } else { + add(table.getTableHeader()); + add(table); + } + } + } + + static class PrintUtilities implements Printable { + private final Component componentToBePrinted; + + public void printComponent(Component c, String jobname) { + new PrintUtilities(c).print(jobname); + } + + public PrintUtilities(Component componentToBePrinted) { + this.componentToBePrinted = componentToBePrinted; + } + + public void print(String jobname) { + PrinterJob printJob = PrinterJob.getPrinterJob(); + PageFormat pf = printJob.defaultPage(); + pf.setOrientation(PageFormat.PORTRAIT); + + // set margins to 1/2" + Paper p = new Paper(); + p.setImageableArea(36, 36, p.getWidth() - 72, p.getHeight() - 72); + pf.setPaper(p); + + printJob.setPrintable(this, pf); + printJob.setJobName(jobname); + + if (printJob.printDialog()) { + try { + printJob.print(); + } catch (PrinterException pe) { + System.out.println("Error printing: " + pe); + } + } + } + + public int print(Graphics g, PageFormat pageFormat, int pageIndex) { + if (pageIndex > 0) { + return NO_SUCH_PAGE; + } else { + Graphics2D g2d = (Graphics2D)g; + g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); + Component c = componentToBePrinted; + c.setSize(c.getPreferredSize()); + + double panelX = c.getWidth(); + double panelY = c.getHeight(); + float imageableX = (float) pageFormat.getImageableWidth() - 1; + float imageableY = (float) pageFormat.getImageableHeight() - 1; + + double xscale = imageableX/panelX; + double yscale = imageableY/panelY; + double optimalScale; + if (xscale < yscale) { + optimalScale = xscale; + } else { + optimalScale = yscale; + } + + if (optimalScale > 1) { + optimalScale = 1; + } + + g2d.scale(optimalScale, optimalScale); + c.paint(g2d); + return PAGE_EXISTS; + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/NullTableHeader.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/NullTableHeader.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/NullTableHeader.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/NullTableHeader.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.JFrame; +import javax.swing.JTable; +import javax.swing.SwingUtilities; + +/* + * @test + * @bug 4129409 + * @summary Tests that JTable.setTableHeader(null) doesn't break AutoResize + * @key headful + * @run main NullTableHeader + */ + +public class NullTableHeader { + public static void main(String[] args) throws Exception { + SwingUtilities.invokeAndWait(() -> { + JTable tableView = new JTable(); + tableView.setTableHeader(null); + tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + }); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/PrintAllPagesTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/PrintAllPagesTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/PrintAllPagesTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/PrintAllPagesTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,7 +22,7 @@ */ /* * @test - * @bug 8257810 + * @bug 8257810 8322135 * @library /java/awt/regtesthelpers * @build PassFailJFrame * @summary Verifies if all pages are printed if scrollRectToVisible is set. diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/ShiftClick.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/ShiftClick.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/ShiftClick.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/ShiftClick.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,187 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Dimension; +import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.border.BevelBorder; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; +import javax.swing.table.TableModel; + +/* + * @test + * @bug 4201917 + * @summary Shift Click in table before making selection + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual ShiftClick + */ + +public class ShiftClick { + private static final String INSTRUCTIONS = """ + Shift click in the table. Check that all cells + from the first through where you clicked are selected. + If the cells are selected, press pass, otherwise fail. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(ShiftClick::createTestUI) + .logArea(6) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("ShiftClick"); + + // Take the dummy data from SwingSet. + final String[] names = {"First Name", "Last Name", "Favorite Color", + "Favorite Number", "Vegetarian"}; + final Object[][] data = { + {"Mark", "Andrews", "Red", 2, true}, + {"Tom", "Ball", "Blue", 99, false}, + {"Alan", "Chung", "Green", 838, false}, + {"Jeff", "Dinkins", "Turquois", 8, true}, + {"Amy", "Fowler", "Yellow", 3, false}, + {"Brian", "Gerhold", "Green", 0, false}, + {"James", "Gosling", "Pink", 21, false}, + {"David", "Karlton", "Red", 1, false}, + {"Dave", "Kloba", "Yellow", 14, false}, + {"Peter", "Korn", "Purple", 12, false}, + {"Phil", "Milne", "Purple", 3, false}, + {"Dave", "Moore", "Green", 88, false}, + {"Hans", "Muller", "Maroon", 5, false}, + {"Rick", "Levenson", "Blue", 2, false}, + {"Tim", "Prinzing", "Blue", 22, false}, + {"Chester", "Rose", "Black", 0, false}, + {"Ray", "Ryan", "Gray", 77, false}, + {"Georges", "Saab", "Red", 4, false}, + {"Willie", "Walker", "Phthalo Blue", 4, false}, + {"Kathy", "Walrath", "Blue", 8, false}, + {"Arnaud", "Weber", "Green", 44, false} + }; + + // Create a model of the data. + TableModel dataModel = new AbstractTableModel() { + // These methods always need to be implemented. + public int getColumnCount() { + return names.length; + } + + public int getRowCount() { + return data.length; + } + + public Object getValueAt(int row, int col) { + return data[row][col]; + } + + // The default implementations of these methods in + // AbstractTableModel would work, but we can refine them. + public String getColumnName(int column) { + return names[column]; + } + + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + + public boolean isCellEditable(int row, int col) { + return true; + } + + public void setValueAt(Object aValue, int row, int column) { + System.out.println("Setting value to: " + aValue); + data[row][column] = aValue; + } + }; + + // Create the table + JTable tableView = new JTable(dataModel); + // Turn off auto-resizing so that we can set column sizes programmatically. + // In this mode, all columns will get their preferred widths, as set blow. + tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + + // Create a combo box to show that you can use one in a table. + JComboBox comboBox = new JComboBox(); + comboBox.addItem("Red"); + comboBox.addItem("Orange"); + comboBox.addItem("Yellow"); + comboBox.addItem("Green"); + comboBox.addItem("Blue"); + comboBox.addItem("Indigo"); + comboBox.addItem("Violet"); + + TableColumn colorColumn = tableView.getColumn("Favorite Color"); + // Use the combo box as the editor in the "Favorite Color" column. + colorColumn.setCellEditor(new DefaultCellEditor(comboBox)); + + // Set a pink background and tooltip for the Color column renderer. + DefaultTableCellRenderer colorColumnRenderer = new DefaultTableCellRenderer(); + colorColumnRenderer.setBackground(Color.pink); + colorColumnRenderer.setToolTipText("Click for combo box"); + colorColumn.setCellRenderer(colorColumnRenderer); + + // Set a tooltip for the header of the colors column. + TableCellRenderer headerRenderer = colorColumn.getHeaderRenderer(); + if (headerRenderer instanceof DefaultTableCellRenderer) + ((DefaultTableCellRenderer) headerRenderer).setToolTipText("Hi Mom!"); + + // Set the width of the "Vegetarian" column. + TableColumn vegetarianColumn = tableView.getColumn("Vegetarian"); + vegetarianColumn.setPreferredWidth(100); + + // Show the values in the "Favorite Number" column in different colors. + TableColumn numbersColumn = tableView.getColumn("Favorite Number"); + DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer() { + public void setValue(Object value) { + int cellValue = (value instanceof Number) ? ((Number) value).intValue() : 0; + setForeground((cellValue > 30) ? Color.black : Color.red); + setText((value == null) ? "" : value.toString()); + } + }; + numberColumnRenderer.setHorizontalAlignment(JLabel.RIGHT); + numbersColumn.setCellRenderer(numberColumnRenderer); + numbersColumn.setPreferredWidth(110); + + // Finish setting up the table. + JScrollPane scrollpane = new JScrollPane(tableView); + scrollpane.setBorder(new BevelBorder(BevelBorder.LOWERED)); + scrollpane.setPreferredSize(new Dimension(430, 200)); + + frame.add(scrollpane); + frame.setSize(500, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4118307.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4118307.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4118307.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4118307.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,182 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.InputEvent; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingUtilities; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableModel; + +/* + * @test + * @bug 4118307 + * @summary Tests that JTable's cell editor for Number and Date work correctly + * @key headful + * @run main bug4118307 + */ + +public class bug4118307 { + static JFrame frame; + static MyTable tbl; + static Point tableLoc; + static Point p; + private static volatile boolean flag; + static final String[] columnNames = {"Integer", "Double"}; + static final Object[][] data = { + {5, 3.14}, + {10, 2.71}, + {70, 3.14}, + {200, 2.71}, + }; + + public static void main(String[] args) throws Exception { + try { + Robot robot = new Robot(); + robot.setAutoDelay(250); + SwingUtilities.invokeAndWait(() -> createTestUI()); + robot.waitForIdle(); + robot.delay(1000); + + SwingUtilities.invokeAndWait(() -> { + tableLoc = tbl.getLocationOnScreen(); + p = tbl.getCellRect(0, 0, true).getLocation(); + }); + robot.waitForIdle(); + + robot.mouseMove(tableLoc.x + p.x + 10, tableLoc.y + p.y + 10); + robot.waitForIdle(); + + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + + SwingUtilities.invokeAndWait(() -> + p = tbl.getCellRect(1, 1, true).getLocation()); + robot.waitForIdle(); + + robot.mouseMove(tableLoc.x + p.x + 10, tableLoc.y + p.y + 10); + robot.waitForIdle(); + + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + + SwingUtilities.invokeAndWait(() -> + p = tbl.getCellRect(1, 0, true).getLocation()); + robot.waitForIdle(); + + robot.mouseMove(tableLoc.x + p.x + 10, tableLoc.y + p.y + 10); + robot.waitForIdle(); + + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + robot.waitForIdle(); + robot.delay(5000); + + if (!flag) { + throw new RuntimeException("Test Failed."); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void createTestUI() { + frame = new JFrame("bug4118307"); + MyTableModel myModel = new MyTableModel(); + tbl = new MyTable(myModel); + JScrollPane sp = new JScrollPane(tbl); + flag = true; + + frame.add(sp, BorderLayout.CENTER); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + static class MyTable extends JTable { + public MyTable(TableModel tm) { + super(tm); + } + + public Component prepareRenderer(TableCellRenderer rend, int row, int col) { + try { + return super.prepareRenderer(rend, row, col); + } catch (Exception e) { + e.printStackTrace(); + flag = false; + return null; + } + } + } + + static class MyTableModel extends AbstractTableModel { + public int getColumnCount() { + return columnNames.length; + } + + public int getRowCount() { + return data.length; + } + + @Override + public String getColumnName(int col) { + return columnNames[col]; + } + + public Object getValueAt(int row, int col) { + return data[row][col]; + } + + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + + @Override + public boolean isCellEditable(int row, int col) { + return true; + } + + @Override + public void setValueAt(Object value, int row, int col) { + data[row][col] = value; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4128506.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4128506.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4128506.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4128506.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableModel; + +/* + * @test + * @bug 4128506 + * @summary Tests that JTable with AUTO_RESIZE_ALL_COLUMNS correctly compute width of columns + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4128506 + */ + +public class bug4128506 { + private static final String INSTRUCTIONS = """ + If the columns of JTable have the same width the test passes, else test fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4128506::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + final Object[][] data = { + {"cell_1_1", "cell_1_2", "cell_1_3"}, + {"cell_2_1", "cell_2_2", "cell_2_3"}, + {"cell_3_1", "cell_3_2", "cell_3_3"}, + {"cell_4_1", "cell_4_2", "cell_4_3"}, + }; + + TableModel dataModel = new AbstractTableModel() { + public int getColumnCount() { + return 3; + } + + public int getRowCount() { + return data.length; + } + + public Object getValueAt(int row, int col) { + return data[row][col]; + } + }; + + JFrame frame = new JFrame("bug4128506"); + JTable tableView = new JTable(dataModel); + tableView.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); + tableView.getColumnModel().getColumn(1).setMinWidth(5); + JScrollPane scrollpane = new JScrollPane(tableView); + frame.add(scrollpane); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4129401.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4129401.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4129401.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4129401.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.TableColumn; + +/* + * @test + * @bug 4129401 + * @summary Tests that keystroking for combobox cell editor in JTable works + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4129401 + */ + +public class bug4129401 { + private static final String INSTRUCTIONS = """ + 1. Move the mouse cursor to the cell "CELL 2 1", + which contains JComboBox and click left mouse button + to drop down combobox list. + 2. Change selected item in the combobox list + using up and down arrows. + 3. Press Esc. JComboBox drop down list should hide. + If all was successful then test passes, else test fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4129401::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + Object data[][] = new Object[4][2]; + JComboBox cb = new JComboBox(); + cb.addItem("Item1"); + cb.addItem("Item2"); + cb.addItem("Item3"); + cb.addItem("Item4"); + data[0][0] = "CELL 0 0"; + data[0][1] = "CELL 0 1"; + data[1][0] = "CELL 1 0"; + data[1][1] = "CELL 1 1"; + data[2][0] = "CELL 2 0"; + data[2][1] = "CELL 2 1"; + data[3][0] = "CELL 3 0"; + data[3][1] = "CELL 3 1"; + String[] str = {"Column 0", "Column 1"}; + JTable tbl = new JTable(data, str); + JScrollPane sp = new JScrollPane(tbl); + + TableColumn col = tbl.getColumn("Column 1"); + col.setCellEditor(new DefaultCellEditor(cb)); + + JFrame f = new JFrame("4129401 test"); + f.getContentPane().add(sp); + f.setBounds(100, 100, 300, 300); + return f; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4138158.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4138158.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4138158.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4138158.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; + +/* + * @test + * @bug 4138158 + * @summary Tests that setAutoscrolls(false) locks autoscroll + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4138158 + */ + +public class bug4138158 { + private static final String INSTRUCTIONS = """ + Move mouse to beginning of table, press left mouse button and drag mouse down + below the frame. If the table isn't scrolled down then test passes. + If the table is scrolled then test fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4138158::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4138158"); + JTable table = new JTable(20, 3); + table.setAutoscrolls(false); + JScrollPane sp = new JScrollPane(table); + frame.add(sp); + frame.setSize(200, 200); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4139910.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4139910.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4139910.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4139910.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,68 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.DefaultTableModel; + +/* + * @test + * @bug 4139910 + * @summary Column resize mouse pointer doesn't display in non-resizable JTable. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4139910 + */ + +public class bug4139910 { + private static final String INSTRUCTIONS = """ + Move mouse pointer to the position between "A" and "B" headers. + If mouse pointer does not change its shape then test passes. If + it does then test fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4139910::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4139910"); + + String[] colName = {"A", "B"}; + JTable tbl = new JTable(new DefaultTableModel(colName, 6)); + tbl.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + tbl.getTableHeader().setReorderingAllowed(false); + tbl.getTableHeader().setResizingAllowed(false); + JScrollPane sp = new JScrollPane(tbl); + frame.add(sp); + + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4188504.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4188504.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4188504.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4188504.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4188504 + * @summary setResizable for specified column. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4188504 + */ + +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; + +public class bug4188504 { + private static final String INSTRUCTIONS = """ + 1. A table is displayed with 3 columns - A, B, C. + + 2. Try to resize second column of table (Move mouse to the position + between "B" and "C" headers, press left mouse button and move to + right/left). + PLEASE NOTE: You may be able to swap the columns but make sure the + width of column B stays the same. + + 3. If the second column does not change its width then press PASS + otherwise press FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(createAndShowUI()) + .build() + .awaitAndCheck(); + } + + private static JFrame createAndShowUI() { + JFrame jFrame = new JFrame("bug4188504"); + JTable tableView = new JTable(4, 3); + tableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + tableView.getColumnModel().getColumn(1).setResizable(false); + + jFrame.add(new JScrollPane(tableView)); + jFrame.setSize(300, 150); + return jFrame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4190222.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4190222.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4190222.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4190222.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,103 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Dimension; +import java.awt.Robot; +import java.util.Vector; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingUtilities; +import javax.swing.table.DefaultTableModel; + +/* + * @test + * @bug 4190222 + * @summary Setting data vector on the model correctly repaint table + * @key headful + * @run main bug4190222 + */ + +public class bug4190222 { + static JFrame frame; + static DefaultTableModel dtm; + static JTable tbl; + + static Vector data; + static Vector colNames; + + public static void main(String[] args) throws Exception { + try { + Robot robot = new Robot(); + robot.setAutoDelay(250); + + SwingUtilities.invokeAndWait(() -> createTestUI()); + robot.waitForIdle(); + robot.delay(1000); + + SwingUtilities.invokeAndWait(() -> { + Dimension preResize = tbl.getSize(); + dtm.setDataVector(data, colNames); + + if (!preResize.equals(tbl.getSize())) { + throw new RuntimeException("Size of table changed after resizing."); + } + }); + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } + + public static void createTestUI() { + frame = new JFrame("bug4190222"); + + data = new Vector(1, 1); + colNames = new Vector(3); + for (int i = 1; i < 4; i++) { + Vector row = new Vector(1, 1); + row.addElement("Row " + i + ", Col 1"); + row.addElement("Row " + i + ", Col 2"); + row.addElement("Row " + i + ", Col 3"); + data.addElement(row); + } + colNames.addElement("Col 1"); + colNames.addElement("Col 2"); + colNames.addElement("Col 3"); + + dtm = new DefaultTableModel(data, colNames); + tbl = new JTable(dtm); + JScrollPane scrollPane = new JScrollPane(tbl); + frame.add("Center", scrollPane); + JPanel panel = new JPanel(); + frame.add("South", panel); + + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4193727.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4193727.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4193727.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4193727.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,135 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.FontMetrics; +import java.util.Vector; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingUtilities; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + +/* + * @test + * @bug 4193727 + * @summary Tests that resizing JTable via TableColumn's + * setWidth(int) repaints correctly + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4193727 + */ + +public class bug4193727 { + static EnhancedJTable tblResults; + static JButton bTest = new JButton("Resize"); + + private static final String INSTRUCTIONS = """ + Push button "Resize". + If either of the following happen, test fails: + 1) The size of the columns change + 2) The JTable is not repainted correctly + + Otherwise test passes. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4193727::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4193727"); + Vector v = new Vector(); + Vector data = new Vector(); + Vector cols = new Vector(); + + cols.add("Name"); + cols.add("Address"); + data.add("Steve"); + data.add("100 East Main Street"); + v.add(data); + + data.add("Richard"); + data.add("99 Main Road"); + v.add(data); + + frame.setLayout(new BorderLayout()); + tblResults = new EnhancedJTable(v, cols); + MyTableHeader mth = new MyTableHeader(); + for (int i = 0; i < tblResults.getColumnCount(); i++) + tblResults.getColumnModel().getColumn(i).setHeaderRenderer(mth.getTHR()); + tblResults.setAutoResizeMode(EnhancedJTable.AUTO_RESIZE_OFF); + + JScrollPane pane = new JScrollPane(tblResults); + frame.add(pane, BorderLayout.CENTER); + JPanel panel = new JPanel(); + panel.add(bTest); + frame.add(panel, BorderLayout.EAST); + bTest.addActionListener(e -> tblResults.autoSizeColumns()); + frame.setSize(300, 200); + return frame; + } +} + +class MyTableHeader extends TableColumn { + public TableCellRenderer getTHR() { + return createDefaultHeaderRenderer(); + } +} + +class EnhancedJTable extends JTable { + public EnhancedJTable(Vector data, Vector colNames) { + super(data, colNames); + } + + public synchronized void autoSizeColumns() { + setAutoResizeMode(AUTO_RESIZE_OFF); + int colcnt = getColumnCount(); + int rowcnt = getRowCount(); + + for (int i = 0; i < colcnt; i++) { + // get the max column width needed + Component cell = getColumnModel().getColumn(i).getHeaderRenderer() + .getTableCellRendererComponent(this, null, false, false, -1, i); + FontMetrics fm = cell.getFontMetrics(cell.getFont()); + int max = SwingUtilities.computeStringWidth(fm, getColumnModel().getColumn(i).getHeaderValue() + .toString() + " "); + for (int j = 0; j < rowcnt; j++) { + // add 2 spaces to account for gutter + int width = SwingUtilities.computeStringWidth(fm, getValueAt(j, i).toString() + " "); + if (max < width) max = width; + } + // set the new column width + getColumnModel().getColumn(i).setWidth(max); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4224179.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4224179.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4224179.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4224179.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import java.awt.Dimension; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; + +/* + * @test + * @bug 4224179 + * @summary Tests if Table default cell editor doesn't handle % (percent) character correctly + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4224179 + */ + +public class bug4224179 { + private static final String INSTRUCTIONS = """ + 1. Click ONCE on the center cell ("Huml") + 2. Type the following symbols one after another: a%b + + If the center cell doesn't read "Humla%b" the test fails. + + 3. After the above, press the ESCAPE key and note that the cell + reverts back to "Huml" + 4. Do the stuff in part 1 again + 5. Press the ESCAPE key + + If the center cell now reads "Huml" as it initially was, + the test passed and fails otherwise. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4224179::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4224179"); + JTable table = new JTable(3, 3); + table.setValueAt("Huml", 1, 1); + table.setPreferredScrollableViewportSize(new Dimension(500, 70)); + JScrollPane scrollPane = new JScrollPane(table); + frame.add(scrollPane, BorderLayout.CENTER); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4226181.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4226181.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4226181.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4226181.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTable; +import javax.swing.table.AbstractTableModel; + +/* + * @test + * @bug 4226181 + * @summary Tests that JTable setModel() correctly re-sizes and counts columns + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4226181 + */ + +public class bug4226181 { + private static final String INSTRUCTIONS = """ + Take a look at the table and remember the number of columns you see. + Now press the "setModel" button. If the number of columns has changed, + then test fails, otherwise it passes. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4226181::createTestUI) + .build() + .awaitAndCheck(); + } + + static class TestModel extends AbstractTableModel { + public int getRowCount() { + return 5; + } + + public int getColumnCount() { + return 7; + } + + public Object getValueAt(int row, int column) { + return row + ":" + column; + } + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4226181"); + TestModel testModel = new TestModel(); + final JTable t = new JTable(testModel); + JButton b = new JButton("setModel"); + b.addActionListener(ae -> t.setModel(new TestModel())); + t.setCellSelectionEnabled(true); + JPanel p1 = new JPanel(new GridLayout(1, 2)); + p1.add(new JLabel("dummy")); + p1.add(t); + frame.add(p1); + frame.add(b, BorderLayout.SOUTH); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4239157.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4239157.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4239157.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4239157.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,85 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import javax.swing.DefaultCellEditor; +import javax.swing.JFrame; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableColumn; + +/* + * @test + * @bug 4239157 + * @summary Tests that JTable performs cell validation properly + * (i.e. does not accept entries for which stopCellEditing() + * returns false) + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4239157 + */ + +public class bug4239157 { + private static final String INSTRUCTIONS = """ + You see a JTable having one row and two columns. + Click in the very first cell (where "click here" is displayed). + Edit its content (e.g. type some letters) and press right arrow key. + The edited cell should stay active, its content shouldn't change. + The right cell (that with text "inactive forever") shouldn't become active. + The same should be true when you press Tab key. + If it is so, test passes, otherwise it fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4239157::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4239157"); + JTable table = new JTable(new Object[][]{{"click here", + "inactive forever"}}, + new Object[]{"1", "2"}); + frame.add("Center", table); + TableColumn column = table.getColumn("1"); + TableCellEditor editor = new TestEditor(new JTextField()); + column.setCellEditor(editor); + + frame.pack(); + return frame; + } + + static class TestEditor extends DefaultCellEditor { + public TestEditor(JTextField tf) { + super(tf); + } + + public boolean stopCellEditing() { + return false; + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4242631.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4242631.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTable/bug4242631.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTable/bug4242631.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,144 @@ +/* + * Copyright (c) 1998, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import java.util.ArrayList; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.AbstractTableModel; + +/* + * @test + * @bug 4242631 + * @summary Tests that JTable repaints itself correctly after a record + * has been removed and added to the table model. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4242631 + */ + +public class bug4242631 { + private static JButton addButton; + private static JButton removeButton; + private static JButton bothButton; + private static SimpleTableModel tableModel; + + private static final String INSTRUCTIONS = """ + Press Add button to add a record to the table. The record added should + have number 0. Then press Remove/Add button some times. The record number + should increase as you press. If it does not, test fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4242631::createTestUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createTestUI() { + JFrame frame = new JFrame("bug4242631"); + GridBagLayout grid = new GridBagLayout(); + + frame.setLayout(grid); + GridBagConstraints c = new GridBagConstraints(); + c.insets = new Insets(2, 2, 2, 2); + + // Add button. + c.gridx = 0; + c.gridy = 0; + grid.setConstraints(addButton = new JButton("Add"), c); + frame.add(addButton); + + // Edit button. + c.gridx = 1; + c.gridy = 0; + grid.setConstraints(removeButton = new JButton("Remove"), c); + frame.add(removeButton); + + // Remove button. + c.gridx = 2; + c.gridy = 0; + grid.setConstraints(bothButton = new JButton("Remove/Add"), c); + frame.add(bothButton); + + // Table. + c.gridx = 0; + c.gridy = 1; + c.gridwidth = 6; + c.gridheight = 0; + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + c.weighty = 1.0; + JScrollPane scroll = null; + tableModel = new SimpleTableModel(); + grid.setConstraints(scroll = new JScrollPane(new JTable(tableModel)), c); + frame.add(scroll); + + // Create some action listeners. + addButton.addActionListener(event -> tableModel.addRow()); + removeButton.addActionListener(event -> tableModel.removeRow()); + bothButton.addActionListener(event -> tableModel.removeThenAddRow()); + + frame.pack(); + return frame; + } + + static class SimpleTableModel extends AbstractTableModel { + int counter = 0; + ArrayList list = new ArrayList(); + + public SimpleTableModel() {} + public int getColumnCount() { return 1; } + public int getRowCount() { return list.size(); } + + public Object getValueAt(int row, int col) { + String str = (String) list.get(row); + return str;// + "." + col; + } + + public void addRow() { + list.add("" + counter++); + fireTableRowsInserted(list.size() - 1, list.size() - 1); + } + + public void removeRow() { + if (list.size() == 0) return; + list.remove(list.size() - 1); + fireTableRowsDeleted(list.size(), list.size()); + } + + public void removeThenAddRow() { + if (list.size() == 0) return; + removeRow(); + addRow(); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTextField/bug4232716.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTextField/bug4232716.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTextField/bug4232716.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTextField/bug4232716.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4232716 + * @key headful + * @summary Tests if creates a maximized JTextField + * @run main bug4232716 + */ + +import java.awt.Component; +import java.awt.Container; +import java.awt.Robot; +import javax.swing.JEditorPane; +import javax.swing.JFrame; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; + +public class bug4232716 { + + private static JFrame frame; + private static JEditorPane e; + + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + try { + SwingUtilities.invokeAndWait(() -> { + frame = new JFrame("bug4232716"); + String html =" Test " + + "
" + + "
"; + e = new JEditorPane("text/html", html); + e.setEditable(false); + frame.add(e); + frame.setSize(400, 300); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); + robot.waitForIdle(); + robot.delay(1000); + + Container c = (Container)e.getComponent(0); + Component swingComponent = c.getComponent(0); + System.out.println(swingComponent); + if (swingComponent instanceof JTextField tf) { + System.out.println(tf.getWidth()); + System.out.println(frame.getWidth()); + if (swingComponent.getWidth() > (frame.getWidth() * 0.75)) { + throw new RuntimeException("textfield width almost same as frame width"); + } + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JTextField/bug5027332.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JTextField/bug5027332.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JTextField/bug5027332.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JTextField/bug5027332.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 5027332 + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @summary Tests that textfield caret is placed slightly off textfield borders + * @run main/manual bug5027332 + */ + +import java.awt.BorderLayout; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.UIManager; + +public class bug5027332 { + + private static final String INSTRUCTIONS = """ + Click into the text field so that caret appears inside. + The caret should be placed slightly off text field borders, + so that it can be easily distinguished from the border. + Test fails if the caret touches the border."""; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + + PassFailJFrame.builder() + .title("bug5027332 Instructions") + .instructions(INSTRUCTIONS) + .rows(6) + .columns(35) + .testUI(bug5027332::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + JFrame frame = new JFrame("bug5027332"); + JTextField t = new JTextField(10); + JPanel p = new JPanel(); + p.add(t, BorderLayout.CENTER); + frame.setContentPane(p); + frame.pack(); + return frame; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.html openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.html 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ - - - -This test requires Windows look and feel, just press Pass if you -run it not on Windows. - -When the test starts you'll see toggle buttons in three rows -two of which are toolbars. - -Make these buttons pressed, their background color must change -to halftones between the button background colors and the ToggleButton -highlight color (it is shown in the square below). - -If the background color does not change correctly for at least one button, -the test fails. - - - - - diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/4128979/bug4128979.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* @test - @bug 4128979 - @requires (os.family == "windows") - @summary Tests that background changes correctly in WinLF for JToggleButton when pressed - @key headful - @run applet/manual=yesno bug4128979.html -*/ - -import javax.swing.BorderFactory; -import javax.swing.BoxLayout; -import javax.swing.Icon; -import javax.swing.JApplet; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JToggleButton; -import javax.swing.JToolBar; -import javax.swing.UIManager; -import javax.swing.UnsupportedLookAndFeelException; -import javax.swing.WindowConstants; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.ComponentOrientation; -import java.awt.Container; -import java.awt.FlowLayout; -import java.awt.Graphics; - -public class bug4128979 extends JApplet { - - public static void main(String[] args) { - JApplet applet = new bug4128979(); - applet.init(); - applet.start(); - - JFrame frame = new JFrame("Test window"); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - frame.setLayout(new BorderLayout()); - frame.add(applet, BorderLayout.CENTER); - frame.setSize(600, 240); - frame.setVisible(true); - } - - public void init() { - try { - UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); - } catch (UnsupportedLookAndFeelException e) { - JOptionPane.showMessageDialog(this, - "This test requires Windows look and feel, so just press Pass\n as "+ - " this look and feel is unsupported on this platform.", - "Unsupported LF", JOptionPane.ERROR_MESSAGE); - return; - } catch (Exception e) { - throw new RuntimeException("Couldn't set look and feel"); - } - - setLayout(new FlowLayout()); - JPanel p = new JPanel(); - p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); - - JPanel p1 = new JPanel(); - addButtons(p1); - p.add(p1); - - JToolBar tb1 = new JToolBar(); - addButtons(tb1); - p.add(tb1); - - JToolBar tb2 = new JToolBar(); - tb2.setRollover(true); - addButtons(tb2); - p.add(tb2); - - JLabel label = new JLabel("ToggleButton.highlight color: "); - label.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT); - label.setIcon(new Icon() { - public void paintIcon(Component c, Graphics g, int x, int y) { - g.setColor(UIManager.getColor("ToggleButton.highlight")); - g.fillRect(x, y, 49, 49); - g.setColor(new Color(~UIManager.getColor("ToggleButton.highlight").getRGB())); - g.drawRect(x, y, 49, 49); - } - - public int getIconWidth() { - return 50; - } - - public int getIconHeight() { - return 50; - } - }); - add(p); - add(label); - } - - static void addButtons(Container c) { - c.setLayout(new FlowLayout()); - - c.add(new JToggleButton("DefaultBorder")); - - JToggleButton cbut = new JToggleButton("DefaultBorder"); - cbut.setBackground(Color.red); - c.add(cbut); - cbut = new JToggleButton("DefaultBorder"); - cbut.setBackground(Color.green); - c.add(cbut); - cbut = new JToggleButton("DefaultBorder"); - cbut.setBackground(Color.blue); - c.add(cbut); - - JToggleButton but3 = new JToggleButton("LineBorder"); - but3.setBorder(BorderFactory.createLineBorder(Color.red)); - c.add(but3); - - JToggleButton but4 = new JToggleButton("null border"); - but4.setBorder(null); - c.add(but4); - } -} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JToggleButton/bug4128979.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/bug4128979.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JToggleButton/bug4128979.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JToggleButton/bug4128979.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,149 @@ +/* + * Copyright (c) 1998, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Component; +import java.awt.ComponentOrientation; +import java.awt.Container; +import java.awt.FlowLayout; +import java.awt.Graphics; + +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.Icon; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JToggleButton; +import javax.swing.JToolBar; +import javax.swing.UIManager; + +import jtreg.SkippedException; +import sun.awt.OSInfo; + +/* @test + * @bug 4128979 + * @requires (os.family == "windows") + * @modules java.desktop/sun.awt + * @library /java/awt/regtesthelpers /test/lib + * @build PassFailJFrame jtreg.SkippedException + * @summary Tests that background changes correctly in WinLF for JToggleButton when pressed + * @run main/manual bug4128979 + */ + +public class bug4128979 { + private static final String INSTRUCTIONS = """ + When the test starts, toggle buttons are visible in three rows + two of which are toolbars. + + Press these buttons, their background color must change + to half tones between the button background colors and the ToggleButton + highlight color (it is shown in the square below). + + If the background color does not change correctly for at least one button, + the test fails."""; + + public static void main(String[] args) throws Exception { + if (OSInfo.getOSType() != OSInfo.OSType.WINDOWS) { + throw new SkippedException("This test is for Windows only"); + } + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); + PassFailJFrame.builder() + .title("JToggleButton Instructions") + .instructions(INSTRUCTIONS) + .rows(15) + .columns(60) + .testUI(bug4128979::createAndShowUI) + .build() + .awaitAndCheck(); + } + + public static JFrame createAndShowUI() { + JFrame frame = new JFrame("JToggleButton's Background Color Test"); + frame.setLayout(new FlowLayout()); + + JPanel p = new JPanel(); + p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); + + JPanel p1 = new JPanel(); + addButtons(p1); + p.add(p1); + + JToolBar tb1 = new JToolBar(); + addButtons(tb1); + p.add(tb1); + + JToolBar tb2 = new JToolBar(); + tb2.setRollover(true); + addButtons(tb2); + p.add(tb2); + + JLabel label = new JLabel("ToggleButton.highlight color: "); + label.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT); + label.setIcon(new Icon() { + public void paintIcon(Component c, Graphics g, int x, int y) { + g.setColor(UIManager.getColor("ToggleButton.highlight")); + g.fillRect(x, y, 49, 49); + g.setColor(new Color(~UIManager.getColor("ToggleButton.highlight").getRGB())); + g.drawRect(x, y, 49, 49); + } + + public int getIconWidth() { + return 50; + } + + public int getIconHeight() { + return 50; + } + }); + + frame.getContentPane().add(p); + frame.getContentPane().add(label); + frame.setSize(600, 250); + return frame; + } + + static void addButtons(Container c) { + c.setLayout(new FlowLayout()); + + c.add(new JToggleButton("DefaultBorder")); + + JToggleButton cbut = new JToggleButton("DefaultBorder"); + cbut.setBackground(Color.red); + c.add(cbut); + cbut = new JToggleButton("DefaultBorder"); + cbut.setBackground(Color.green); + c.add(cbut); + cbut = new JToggleButton("DefaultBorder"); + cbut.setBackground(Color.blue); + c.add(cbut); + + JToggleButton but3 = new JToggleButton("LineBorder"); + but3.setBorder(BorderFactory.createLineBorder(Color.red)); + c.add(but3); + + JToggleButton but4 = new JToggleButton("null border"); + but4.setBorder(null); + c.add(but4); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JToolTip/TooltipTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/TooltipTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JToolTip/TooltipTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/TooltipTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4207474 4218495 4375928 + * @summary Tests various tooltip issues: HTML tooltips, long tooltip text + * and mnemonic keys displayed in tooltips + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual TooltipTest + */ + +import java.awt.FlowLayout; +import java.awt.event.KeyEvent; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.UIManager; + +public class TooltipTest { + private static final String INSTRUCTIONS = """ + 1. Move the mouse over the button labeled "Red tip" and let it stay + still in order to test HTML in JToolTip. If the tooltip has some + text which is red then test passes, otherwise it fails (bug 4207474). + + 2. Move the mouse over the button labeled "Long tip". + If the last letter of the tooltip appears clipped, + then the test fails. If you can see the entire last character, + then the test passes (bug 4218495). + + 3. Verify that "M" is underlined on the button labeled "Mnemonic" + Move the mouse pointer over the button labeled "Mnemonic" and look + at tooltip when it appears. It should read "hint". + If the above is true test passes else test fails (bug 4375928). + """; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); + + PassFailJFrame.builder() + .title("TooltipTest Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(TooltipTest::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JComponent createTestUI() { + JPanel panel = new JPanel(); + panel.setLayout(new FlowLayout()); + + JButton b = new JButton("Red tip"); + b.setToolTipText("
Here is some " + + "red text.
"); + panel.add(b); + + b = new JButton("Long tip"); + b.setToolTipText("Is the last letter clipped?"); + panel.add(b); + + b = new JButton("Mnemonic"); + b.setMnemonic(KeyEvent.VK_M); + b.setToolTipText("hint"); + panel.add(b); + + return panel; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JToolTip/bug4225314.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/bug4225314.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JToolTip/bug4225314.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/bug4225314.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4225314 + * @summary Tests that tooltip is painted properly when it has thick border + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4225314 + */ + +import java.awt.Color; +import java.awt.FlowLayout; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JToolTip; +import javax.swing.border.LineBorder; + +public class bug4225314 { + private static final String INSTRUCTIONS = """ + The word "Tooltip" in both tooltips should not be clipped by the + black border and be fully visible for this test to pass. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4225314 Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4225314::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JComponent createTestUI() { + JToolTip tt1 = new JToolTip(); + tt1.setTipText("Tooltip"); + tt1.setBorder(new LineBorder(Color.BLACK, 10)); + + JToolTip tt2 = new JToolTip(); + tt2.setTipText("Tooltip"); + tt2.setBorder(new LineBorder(Color.BLACK, 10)); + + JPanel panel = new JPanel(); + panel.setLayout(new FlowLayout()); + panel.add(tt1); + panel.add(tt2); + + return panel; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JToolTip/bug4255441.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/bug4255441.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JToolTip/bug4255441.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JToolTip/bug4255441.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4255441 + * @summary Tests that tooltip appears inside AWT Frame + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4255441 + */ + +import java.awt.FlowLayout; +import java.awt.Frame; +import javax.swing.JButton; + +public class bug4255441 { + private static final String INSTRUCTIONS = """ + Move mouse pointer inside the button. + If a tooltip with "Tooltip text" appears, the test passes. + """; + + private static Frame createTestUI() { + Frame fr = new Frame("bug4255441"); + fr.setLayout(new FlowLayout()); + + JButton bt = new JButton("Button"); + bt.setToolTipText("Tooltip text"); + fr.add(bt); + + fr.setSize(200, 200); + return fr; + } + + public static void main(String[] argv) throws Exception { + PassFailJFrame.builder() + .title("bug4255441 Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4255441::createTestUI) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JViewport/ScrollRectToVisibleTest3.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JViewport/ScrollRectToVisibleTest3.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JViewport/ScrollRectToVisibleTest3.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JViewport/ScrollRectToVisibleTest3.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,165 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @bug 4217252 + * @summary Verify that scrolling beyond the visible region and scrolling + * a component smaller than the viewport is not allowed. + * @library /javax/swing/regtesthelpers + * @build Util + * @run main/othervm -Dsun.java2d.uiScale=1 ScrollRectToVisibleTest3 + */ + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Robot; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingUtilities; +import javax.swing.table.AbstractTableModel; + +public class ScrollRectToVisibleTest3 { + private static JFrame frame; + private static JTable table; + private static JButton scrollButton; + private static volatile int clickCount = 0; + private static final String[] EXPECTED_TEXT = {"99 x 0", "98 x 0", + "97 x 0", "96 x 0"}; + public static void main(String[] args) throws Exception { + Robot robot = new Robot(); + robot.setAutoWaitForIdle(true); + + SwingUtilities.invokeAndWait(ScrollRectToVisibleTest3::createTestUI); + robot.waitForIdle(); + robot.delay(1000); + + Rectangle frameBounds = Util.invokeOnEDT(() -> getComponentBounds(frame)); + robot.delay(100); + Point scrollBtnLoc = Util.getCenterPoint(scrollButton); + + robot.mouseMove(scrollBtnLoc.x, scrollBtnLoc.y); + robot.mousePress(MouseEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK); + robot.mousePress(MouseEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK); + robot.delay(50); + + int rowHeight = Util.invokeOnEDT(() -> table.getRowHeight()); + for (int i = 1; i <= 4; i++) { + robot.mouseMove(frameBounds.x + 50, + frameBounds.y + frameBounds.height - (rowHeight * i + 2)); + robot.delay(300); + robot.mousePress(MouseEvent.BUTTON1_DOWN_MASK); + robot.mouseRelease(MouseEvent.BUTTON1_DOWN_MASK); + // 500 ms delay added so that current mouseClicked event + // is processed successfully before proceeding to the next + robot.delay(500); + } + if (clickCount != 4) { + throw new RuntimeException("Test Failed! Expected 4 mouse clicks" + + " but got " + clickCount); + } + } + + private static void createTestUI() { + frame = new JFrame("ScrollRectToVisibleTest3"); + table = new JTable(new TestModel()); + table.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + JTable testTable = (JTable) e.getComponent(); + int row = testTable.getSelectedRow(); + int column = testTable.getSelectedColumn(); + String cellContent = testTable.getValueAt(row, column).toString(); + if (!EXPECTED_TEXT[clickCount].equals(cellContent)) { + throw new RuntimeException(("Test failed! Table Cell Content" + + " at (row %d , col %d)\n Expected: %s vs Actual: %s") + .formatted(row, column, + EXPECTED_TEXT[clickCount], cellContent)); + } + clickCount++; + } + }); + + scrollButton = new JButton("Scroll"); + scrollButton.addActionListener(ae -> { + Rectangle bounds = table.getBounds(); + bounds.y = bounds.height + table.getRowHeight(); + bounds.height = table.getRowHeight(); + System.out.println("scrolling: " + bounds); + table.scrollRectToVisible(bounds); + System.out.println("bounds: " + table.getVisibleRect()); + }); + + frame.add(scrollButton, BorderLayout.NORTH); + frame.add(new JScrollPane(table), BorderLayout.CENTER); + frame.setSize(400, 300); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + + private static class TestModel extends AbstractTableModel { + @Override + public String getColumnName(int column) { + return Integer.toString(column); + } + + @Override + public int getRowCount() { + return 100; + } + + @Override + public int getColumnCount() { + return 5; + } + + @Override + public Object getValueAt(int row, int col) { + return row + " x " + col; + } + + @Override + public boolean isCellEditable(int row, int column) { return false; } + + @Override + public void setValueAt(Object value, int row, int col) { + } + } + + private static Rectangle getComponentBounds(Component c) { + Point locationOnScreen = c.getLocationOnScreen(); + Dimension size = c.getSize(); + return new Rectangle(locationOnScreen, size); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JViewport/SetViewRepaint.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JViewport/SetViewRepaint.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JViewport/SetViewRepaint.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JViewport/SetViewRepaint.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4128110 + * @summary Verify that JViewport.setViewportView() and JScrollPane.setViewport() + * force a re-layout and a repaint. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual SetViewRepaint + */ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.GridLayout; +import java.awt.event.ActionListener; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JViewport; + +public class SetViewRepaint { + private static final String INSTRUCTIONS = """ + Verify the following two cases: + + 1) Press "JViewport.setViewportView()" button and verify that + the blue label is replaced by a scrolling list. + + 2) Press "JScrollPane.setViewport()" button and verify that + the red label is replaced by a scrolling list as well. + + In either case the display should update automatically after + pressing the button. + + If the above is true, press PASS else press FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(30) + .testUI(SetViewRepaint::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + JFrame frame = new JFrame("SetViewRepaint"); + JPanel p1 = new JPanel(new BorderLayout()); + JPanel p2 = new JPanel(new BorderLayout()); + + JLabel label1 = new ColorLabel(Color.BLUE, "Blue Label"); + final JList list1 = new JList(new String[]{"one", "two", "three", "four"}); + final JScrollPane sp1 = new JScrollPane(label1); + ActionListener doSetViewportView = e -> sp1.setViewportView(list1); + JButton b1 = new JButton("JViewport.setViewportView()"); + b1.addActionListener(doSetViewportView); + p1.add(sp1, BorderLayout.CENTER); + p1.add(b1, BorderLayout.SOUTH); + + JLabel label2 = new ColorLabel(Color.RED, "Red Label"); + final JList list2 = new JList(new String[]{"five", "six", "seven", "eight"}); + final JScrollPane sp2 = new JScrollPane(label2); + ActionListener doSetViewport = e -> { + JViewport vp = new JViewport(); + vp.setView(list2); + sp2.setViewport(vp); + }; + JButton b2 = new JButton("JScrollPane.setViewport()"); + b2.addActionListener(doSetViewport); + p2.add(sp2, BorderLayout.CENTER); + p2.add(b2, BorderLayout.SOUTH); + frame.setLayout(new GridLayout(1, 2)); + frame.add(p1); + frame.add(p2); + frame.setResizable(false); + frame.setSize(500, 120); + return frame; + } + + private static class ColorLabel extends JLabel { + ColorLabel(Color color, String text) { + super(text); + setForeground(Color.WHITE); + setBackground(color); + setOpaque(true); + setHorizontalAlignment(CENTER); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/JWindow/bug4251781.java openjdk-21-21.0.10+7/test/jdk/javax/swing/JWindow/bug4251781.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/JWindow/bug4251781.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/JWindow/bug4251781.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4251781 + * @summary Tests that JWindow repaint is optimized (background is not + cleared). + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4251781 + */ + +import java.awt.Color; +import java.awt.Container; +import javax.swing.JButton; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.JWindow; + +public class bug4251781 { + private static final String INSTRUCTIONS = """ + Press the button at the bottom-right corner of the gray + window with the mouse. + If the window DOES NOT flicker when you press and/or release + the mouse button press PASS else FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4251781::createAndShowUI) + .build() + .awaitAndCheck(); + } + + private static JWindow createAndShowUI() { + JWindow w = new JWindow(); + final Container pane = w.getContentPane(); + pane.setLayout(null); + pane.setBackground(Color.GRAY.darker()); + + final JPopupMenu popup = new JPopupMenu(); + popup.add(new JMenuItem("item 1")); + popup.add(new JMenuItem("exit")); + + JButton b = new JButton("menu"); + b.setBounds(350, 250, 50, 50); + b.addActionListener(ev -> popup.show(pane, 0, 0)); + pane.add(b); + + w.setSize(400, 300); + return w; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/SwingUtilities/bug4967768.java openjdk-21-21.0.10+7/test/jdk/javax/swing/SwingUtilities/bug4967768.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/SwingUtilities/bug4967768.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/SwingUtilities/bug4967768.java 2026-01-15 15:34:19.000000000 +0000 @@ -37,13 +37,19 @@ public class bug4967768 { private static final String INSTRUCTIONS = """ - When the test starts you'll see a button "Oops" - with the "p" letter underlined at the bottom - of the instruction frame. + When the test starts you'll see a button "Oops". + + For Windows and GTK Look and Feel, you will need to + press the ALT key to make the mnemonic visible. + Once the ALT key is pressed, the letter "p" will be + underlined at the bottom of the instruction frame. Ensure the underline cuts through the descender of letter "p", i.e. the underline is painted not below the letter but below the baseline. + + Press Pass if you see the expected behaviour else + press Fail. """; public static void main(String[] args) throws Exception { diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/ToolTipManager/bug4250178.java openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug4250178.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/ToolTipManager/bug4250178.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug4250178.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4250178 + * @summary Tooltip in incorrect location on ToolBar + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4250178 + */ + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.ToolTipManager; + +public class bug4250178 { + private static final String INSTRUCTIONS = """ + Click somewhere in the test UI frame to make it focused. + Move mouse to the bottom right corner of the button in this frame + and wait until tooltip appears. + + If the tooltip fits into the frame OR partially covered by the mouse + cursor then test fails. Otherwise test passes. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .testUI(bug4250178::createAndShowUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createAndShowUI() { + JFrame fr = new JFrame("bug4250178"); + JButton button = new JButton("Button"); + button.setToolTipText("ToolTip"); + ToolTipManager.sharedInstance().setLightWeightPopupEnabled(true); + fr.add(button); + fr.setSize(250, 100); + return fr; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/ToolTipManager/bug4294808.java openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug4294808.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/ToolTipManager/bug4294808.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug4294808.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4294808 + * @summary Tooltip blinking. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4294808 + */ + +import java.awt.Dimension; +import javax.swing.JButton; +import javax.swing.JComponent; + +public class bug4294808 { + private static final String INSTRUCTIONS = """ + Move mouse cursor to the button named "Tooltip Button" + at the bottom of the instruction window and wait until + tooltip has appeared. + + If tooltip appears and eventually disappears without + rapid blinking then press PASS else FAIL. + """; + + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug4294808 Test Instructions") + .instructions(INSTRUCTIONS) + .columns(35) + .splitUIBottom(bug4294808::createAndShowUI) + .build() + .awaitAndCheck(); + } + + private static JComponent createAndShowUI() { + JButton bt = new JButton("Tooltip Button"); + bt.setToolTipText("Long tooltip text here"); + bt.setPreferredSize(new Dimension(200, 60)); + return bt; + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/ToolTipManager/bug6178004.java openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug6178004.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/ToolTipManager/bug6178004.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/ToolTipManager/bug6178004.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2006, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4148057 6178004 + * @summary REGRESSION: setToolTipText does not work if the + * component is not focused + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug6178004 + */ + +import java.awt.Point; +import java.awt.Window; +import java.awt.event.MouseEvent; +import java.util.List; +import javax.swing.ButtonGroup; +import javax.swing.JButton; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.LookAndFeel; +import javax.swing.SwingUtilities; +import javax.swing.ToolTipManager; +import javax.swing.UIManager; + +public class bug6178004 { + private static JFrame frame1; + private static JFrame frame2; + private static final int SIZE = 300; + + private static final String INSTRUCTIONS = """ + You can change Look And Feel using the menu "Change LaF". + + Make sure that Frame2 or instruction window is active. + Move mouse over the button inside "Frame 1". + If tooltip is NOT shown or Frame 1 jumped on top of + the Frame2, press FAIL. + + For Metal/Windows LaF: + Tooltips are shown only if one of the frames (or the instruction + window) is active. To test it click on any other application to + make frames and instruction window inactive and then verify that + tooltips are not shown any more. + + For Motif/GTK/Nimbus/Aqua LaF: + Tooltips should be shown for all frames irrespective of whether + the application is active or inactive. + + Note: Tooltip for Frame1 is always shown at the top-left corner. + Tooltips could be shown partly covered by another frame. + + If above is true press PASS else FAIL. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("bug6178004 Test Instructions") + .instructions(INSTRUCTIONS) + .testTimeOut(10) + .columns(40) + .testUI(createAndShowUI()) + .positionTestUI(bug6178004::positionTestWindows) + .build() + .awaitAndCheck(); + } + + private static List createAndShowUI() { + ToolTipManager.sharedInstance().setInitialDelay(0); + + frame1 = new JFrame("bug6178004 Frame1"); + frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + JButton button = new JButton("Test") { + public Point getToolTipLocation(MouseEvent event) { + return new Point(10, 10); + } + }; + button.setToolTipText("Tooltip-1"); + frame1.add(button); + frame1.setSize(SIZE, SIZE); + + frame2 = new JFrame("bug6178004 Frame2"); + frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + JButton button2 = new JButton("Click me") ; + button2.setToolTipText("Tooltip-2"); + frame2.add(button2); + frame2.setSize(SIZE, SIZE); + + JMenuBar bar = new JMenuBar(); + JMenu lafMenu = new JMenu("Change LaF"); + ButtonGroup lafGroup = new ButtonGroup(); + + LookAndFeel currentLaf = UIManager.getLookAndFeel(); + UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels(); + for (final UIManager.LookAndFeelInfo lafInfo : lafs) { + JCheckBoxMenuItem lafItem = new JCheckBoxMenuItem(lafInfo.getName()); + lafItem.addActionListener(e -> setLaF(lafInfo.getClassName())); + if (lafInfo.getClassName().equals(currentLaf.getClass().getName())) { + lafItem.setSelected(true); + } + + lafGroup.add(lafItem); + lafMenu.add(lafItem); + } + + bar.add(lafMenu); + frame2.setJMenuBar(bar); + return List.of(frame1, frame2); + } + + private static void setLaF(String laf) { + try { + UIManager.setLookAndFeel(laf); + SwingUtilities.updateComponentTreeUI(frame1); + SwingUtilities.updateComponentTreeUI(frame2); + } catch (Exception e) { + e.printStackTrace(); + } + } + + // custom window layout required for this test + private static void positionTestWindows(List testWindows, + PassFailJFrame.InstructionUI instructionUI) { + int gap = 5; + int x = instructionUI.getLocation().x + instructionUI.getSize().width + gap; + // the two test frames need to overlap for this test + testWindows.get(0).setLocation(x, instructionUI.getLocation().y); + testWindows.get(1).setLocation((x + SIZE / 2), instructionUI.getLocation().y); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/border/LineBorder/ScaledLineBorderTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/border/LineBorder/ScaledLineBorderTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/border/LineBorder/ScaledLineBorderTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/border/LineBorder/ScaledLineBorderTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,15 +42,18 @@ import javax.swing.JPanel; import javax.swing.SwingUtilities; +import static sun.java2d.pipe.Region.clipRound; + /* * @test - * @bug 8282958 + * @bug 8282958 8349188 * @summary Verify LineBorder edges have the same width * @requires (os.family == "windows") + * @modules java.desktop/sun.java2d.pipe * @run main ScaledLineBorderTest */ public class ScaledLineBorderTest { - private static final Dimension SIZE = new Dimension(120, 25); + private static final Dimension SIZE = new Dimension(250, 50); private static final Color OUTER_COLOR = Color.BLACK; private static final Color BORDER_COLOR = Color.RED; @@ -59,12 +62,19 @@ private static final double[] scales = {1.00, 1.25, 1.50, 1.75, 2.00, 2.50, 3.00}; + private static final int[] thickness = {1, 4, 10, 15}; + + private record TestImage(BufferedImage image, + List panelLocations, + double scale, + int thickness) { + } - private static final List images = - new ArrayList<>(scales.length); + private record TestUI(JComponent content, + List panelLocations, + int thickness) { + } - private static final List panelLocations = - new ArrayList<>(4); public static void main(String[] args) throws Exception { Collection params = Arrays.asList(args); @@ -74,29 +84,38 @@ } private static void testScaling(boolean showFrame, boolean saveImages) { - JComponent content = createUI(); - if (showFrame) { - showFrame(content); + for (int thickness : thickness) { + TestUI testUI = createUI(thickness); + if (showFrame) { + showFrame(testUI.content); + } + + List images = paintToImages(testUI, saveImages); + verifyBorderRendering(images, saveImages); + } + + if (errorCount > 0) { + throw new Error("Test failed: " + + errorCount + " error(s) detected - " + + errorMessage); } - paintToImages(content, saveImages); - verifyBorderRendering(saveImages); } - private static void verifyBorderRendering(final boolean saveImages) { - String errorMessage = null; - int errorCount = 0; - for (int i = 0; i < images.size(); i++) { - BufferedImage img = images.get(i); - double scaling = scales[i]; - try { - int thickness = (int) Math.floor(scaling); + private static String errorMessage = null; + private static int errorCount = 0; - checkVerticalBorders(SIZE.width / 2, thickness, img); + private static void verifyBorderRendering(final List images, + final boolean saveImages) { + for (TestImage test : images) { + final BufferedImage img = test.image; + final int effectiveThickness = clipRound(test.thickness * test.scale); + try { + checkVerticalBorders((int) (SIZE.width * test.scale / 2), effectiveThickness, img); - for (Point p : panelLocations) { - int y = (int) (p.y * scaling) + SIZE.height / 2; - checkHorizontalBorder(y, thickness, img); + for (Point p : test.panelLocations) { + int y = (int) ((p.y + (SIZE.height / 2)) * test.scale); + checkHorizontalBorder(y, effectiveThickness, img); } } catch (Error e) { if (errorMessage == null) { @@ -104,21 +123,13 @@ } errorCount++; - System.err.printf("Scaling: %.2f\n", scaling); + System.err.printf("Scale: %.2f; thickness: %d, effective: %d\n", + test.scale, test.thickness, effectiveThickness); e.printStackTrace(); - // Save the image if it wasn't already saved - if (!saveImages) { - saveImage(img, getImageFileName(scaling)); - } + saveImage(img, getImageFileName(test.scale, test.thickness)); } } - - if (errorCount > 0) { - throw new Error("Test failed: " - + errorCount + " error(s) detected - " - + errorMessage); - } } private static void checkVerticalBorders(final int x, @@ -220,17 +231,19 @@ x, y, color)); } - private static JComponent createUI() { + private static TestUI createUI(int thickness) { Box contentPanel = Box.createVerticalBox(); contentPanel.setBackground(OUTER_COLOR); + List panelLocations = new ArrayList<>(4); + Dimension childSize = null; for (int i = 0; i < 4; i++) { JComponent filler = new JPanel(null); filler.setBackground(INSIDE_COLOR); filler.setPreferredSize(SIZE); filler.setBounds(i, 0, SIZE.width, SIZE.height); - filler.setBorder(BorderFactory.createLineBorder(BORDER_COLOR)); + filler.setBorder(BorderFactory.createLineBorder(BORDER_COLOR, thickness)); JPanel childPanel = new JPanel(new BorderLayout()); childPanel.setBorder(BorderFactory.createEmptyBorder(0, i, 4, 4)); @@ -248,7 +261,7 @@ contentPanel.setSize(childSize.width, childSize.height * 4); - return contentPanel; + return new TestUI(contentPanel, panelLocations, thickness); } private static void showFrame(JComponent content) { @@ -260,28 +273,33 @@ frame.setVisible(true); } - private static void paintToImages(final JComponent content, - final boolean saveImages) { - for (double scaling : scales) { + private static List paintToImages(final TestUI testUI, + final boolean saveImages) { + final List images = new ArrayList<>(scales.length); + final JComponent content = testUI.content; + for (double scale : scales) { BufferedImage image = - new BufferedImage((int) Math.ceil(content.getWidth() * scaling), - (int) Math.ceil(content.getHeight() * scaling), + new BufferedImage((int) Math.ceil(content.getWidth() * scale), + (int) Math.ceil(content.getHeight() * scale), BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = image.createGraphics(); - g2d.scale(scaling, scaling); + g2d.scale(scale, scale); content.paint(g2d); g2d.dispose(); if (saveImages) { - saveImage(image, getImageFileName(scaling)); + saveImage(image, getImageFileName(scale, testUI.thickness)); } - images.add(image); + images.add(new TestImage(image, testUI.panelLocations, + scale, testUI.thickness)); } + return images; } - private static String getImageFileName(final double scaling) { - return String.format("test%.2f.png", scaling); + private static String getImageFileName(final double scaling, + final int thickness) { + return String.format("test%02d@%.2f.png", thickness, scaling); } private static void saveImage(BufferedImage image, String filename) { diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/border/LineBorder/ScaledTextFieldBorderTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/border/LineBorder/ScaledTextFieldBorderTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/border/LineBorder/ScaledTextFieldBorderTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/border/LineBorder/ScaledTextFieldBorderTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,12 +44,15 @@ import javax.swing.SwingUtilities; import javax.swing.border.LineBorder; +import static sun.java2d.pipe.Region.clipRound; + /* * @test - * @bug 8282958 + * @bug 8282958 8349188 * @summary Verify all the borders are rendered consistently for a JTextField * in Windows LaF which uses LineBorder * @requires (os.family == "windows") + * @modules java.desktop/sun.java2d.pipe * @run main ScaledTextFieldBorderTest */ public class ScaledTextFieldBorderTest { @@ -92,7 +95,7 @@ BufferedImage img = images.get(i); double scaling = scales[i]; try { - int thickness = (int) Math.floor(scaling); + int thickness = clipRound(scaling); checkVerticalBorders(textFieldSize.width / 2, thickness, img); diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/border/TransparentTitleTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/border/TransparentTitleTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/border/TransparentTitleTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/border/TransparentTitleTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,122 @@ +/* + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4154572 + * @summary Tests that the area behind a TitledBorder's title string is transparent, + * allowing the component's background to show through + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual TransparentTitleTest + */ + +import java.awt.GridLayout; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Color; +import java.awt.image.BufferedImage; +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.TitledBorder; +import javax.swing.border.LineBorder; + +public class TransparentTitleTest { + private static final String INSTRUCTIONS = """ + If all panels are correctly painted such that the title of the + border allows the underlying panel image (green rectangle) + to show through the background of the text, + then this test passes; else it fails. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("TransparentTitleTest Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(TransparentTitleTest::createTestUI) + .build() + .awaitAndCheck(); + } + + private static JFrame createTestUI() { + JFrame frame = new JFrame("TransparentTitleTest"); + + frame.setLayout(new GridLayout(3, 6, 5, 5)); + + frame.add(new ImagePanel(TitledBorder.TOP, TitledBorder.LEFT)); + frame.add(new ImagePanel(TitledBorder.TOP, TitledBorder.CENTER)); + frame.add(new ImagePanel(TitledBorder.TOP, TitledBorder.RIGHT)); + frame.add(new ImagePanel(TitledBorder.ABOVE_TOP, TitledBorder.LEFT)); + frame.add(new ImagePanel(TitledBorder.ABOVE_TOP, TitledBorder.CENTER)); + frame.add(new ImagePanel(TitledBorder.ABOVE_TOP, TitledBorder.RIGHT)); + frame.add(new ImagePanel(TitledBorder.BELOW_TOP, TitledBorder.LEFT)); + frame.add(new ImagePanel(TitledBorder.BELOW_TOP, TitledBorder.CENTER)); + frame.add(new ImagePanel(TitledBorder.BELOW_TOP, TitledBorder.RIGHT)); + frame.add(new ImagePanel(TitledBorder.BOTTOM, TitledBorder.LEFT)); + frame.add(new ImagePanel(TitledBorder.BOTTOM, TitledBorder.CENTER)); + frame.add(new ImagePanel(TitledBorder.BOTTOM, TitledBorder.RIGHT)); + frame.add(new ImagePanel(TitledBorder.ABOVE_BOTTOM, TitledBorder.LEFT)); + frame.add(new ImagePanel(TitledBorder.ABOVE_BOTTOM, TitledBorder.CENTER)); + frame.add(new ImagePanel(TitledBorder.ABOVE_BOTTOM, TitledBorder.RIGHT)); + frame.add(new ImagePanel(TitledBorder.BELOW_BOTTOM, TitledBorder.LEFT)); + frame.add(new ImagePanel(TitledBorder.BELOW_BOTTOM, TitledBorder.CENTER)); + frame.add(new ImagePanel(TitledBorder.BELOW_BOTTOM, TitledBorder.RIGHT)); + + frame.pack(); + return frame; + } +} + +class ImagePanel extends JPanel { + + private final ImageIcon imageIcon; + + private static final BufferedImage bufferedImage = + new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB); + + static { + Graphics g = bufferedImage.getGraphics(); + g.setColor(Color.GREEN); + g.fillRect(0, 0, 128, 128); + } + + public ImagePanel(int titlePos, int titleJust) { + imageIcon = new ImageIcon(bufferedImage); + + TitledBorder b = new TitledBorder(new LineBorder(Color.black,3), "title text"); + b.setTitlePosition(titlePos); + b.setTitleJustification(titleJust); + b.setTitleColor(Color.black); + setBorder(b); + } + + public Dimension getPreferredSize() { + return new Dimension(imageIcon.getIconWidth(), imageIcon.getIconHeight()); + } + + public void paintComponent(Graphics g) { + imageIcon.paintIcon(this, g, 0, 0); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/plaf/basic/BasicTextUI/PasswordSelectionWordTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/basic/BasicTextUI/PasswordSelectionWordTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/plaf/basic/BasicTextUI/PasswordSelectionWordTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/basic/BasicTextUI/PasswordSelectionWordTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @key headful + * @bug 4231444 8354646 + * @summary Password fields' ActionMap needs to replace + * DefaultEditorKit.selectWordAction with + * DefaultEditorKit.selectLineAction. + * + * @run main PasswordSelectionWordTest + */ + +import javax.swing.Action; +import javax.swing.JPasswordField; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; +import javax.swing.plaf.basic.BasicTextUI; +import javax.swing.text.DefaultEditorKit; +import java.awt.event.ActionEvent; + +public class PasswordSelectionWordTest { + public static void main(String[] args) throws Exception { + for (UIManager.LookAndFeelInfo laf : + UIManager.getInstalledLookAndFeels()) { + System.out.println("Testing LAF: " + laf.getClassName()); + SwingUtilities.invokeAndWait(() -> { + if (setLookAndFeel(laf)) { + runTest(); + } + }); + } + } + + private static boolean setLookAndFeel(UIManager.LookAndFeelInfo laf) { + try { + UIManager.setLookAndFeel(laf.getClassName()); + return true; + } catch (UnsupportedLookAndFeelException e) { + System.err.println("Skipping unsupported look and feel:"); + e.printStackTrace(); + return false; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private static void runTest() { + String str = "one two three"; + JPasswordField field = new JPasswordField(str); + if (!(field.getUI() instanceof BasicTextUI)) { + throw new RuntimeException("Unexpected condition: JPasswordField UI was " + field.getUI()); + } + System.out.println("Testing " + field.getUI()); + + // do something (anything) to initialize the Views: + field.setSize(100, 100); + field.addNotify(); + + Action action = field.getActionMap().get( + DefaultEditorKit.selectWordAction); + action.actionPerformed(new ActionEvent(field, 0, "")); + int selectionStart = field.getSelectionStart(); + int selectionEnd = field.getSelectionEnd(); + System.out.println("selectionStart = " + selectionStart); + System.out.println("selectionEnd = " + selectionEnd); + if (selectionStart != 0 || selectionEnd != str.length()) { + throw new RuntimeException("selectionStart = " + selectionStart + + " and selectionEnd = " + selectionEnd); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/plaf/metal/MetalIconFactory/bug4952462.java openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/metal/MetalIconFactory/bug4952462.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/plaf/metal/MetalIconFactory/bug4952462.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/metal/MetalIconFactory/bug4952462.java 2026-01-15 15:34:19.000000000 +0000 @@ -29,7 +29,7 @@ * @modules java.desktop/sun.awt * @library /test/lib * @key headful - * @run main bug4952462 + * @run main/othervm -Dsun.java2d.uiScale=1 bug4952462 */ import java.awt.Color; @@ -41,10 +41,8 @@ import javax.swing.JRadioButton; import javax.swing.SwingUtilities; import javax.swing.UIManager; -import javax.swing.plaf.metal.MetalTheme; - -import jtreg.SkippedException; -import sun.awt.AppContext; +import javax.swing.plaf.metal.MetalLookAndFeel; +import javax.swing.plaf.metal.OceanTheme; public class bug4952462 { private static JFrame frame; @@ -52,41 +50,35 @@ public static void main(String[] args) throws Exception { try { + MetalLookAndFeel.setCurrentTheme(new OceanTheme()); UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); + Robot r = new Robot(); + SwingUtilities.invokeAndWait(() -> { + frame = new JFrame("Metal JRadioButton Foreground Color Test"); + frame.getContentPane().setLayout(new FlowLayout()); + rb = new JRadioButton("RadioButton", true); + rb.setEnabled(false); + rb.setForeground(Color.RED); + frame.getContentPane().add(rb); + frame.setSize(250, 100); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + }); - MetalTheme theme = (MetalTheme) AppContext.getAppContext().get("currentMetalTheme"); - if (theme == null || !"Ocean".equals(theme.getName())) { - throw new SkippedException("Current theme is not Ocean. Test is " + - "only for Metal's Ocean theme. Skipping test."); - } else { - Robot r = new Robot(); - SwingUtilities.invokeAndWait(() -> { - frame = new JFrame("Metal JRadioButton Foreground Color Test"); - frame.getContentPane().setLayout(new FlowLayout()); - rb = new JRadioButton("RadioButton", true); - rb.setEnabled(false); - rb.setForeground(Color.RED); - frame.getContentPane().add(rb); - frame.setSize(250, 100); - frame.setLocationRelativeTo(null); - frame.setVisible(true); - }); - - r.waitForIdle(); - r.delay(500); - - SwingUtilities.invokeAndWait(() -> { - Point p = rb.getLocationOnScreen(); - for (int i = 0; i < 50; i++) { - Color c = r.getPixelColor(p.x + 10 + i, p.y + (rb.getHeight() / 2)); - System.out.println(c); - if (c.getRed() > 200 && c.getBlue() < 200 && c.getGreen() < 200) { - throw new RuntimeException("Test failed. Radiobutton is red " + - "and not grey."); - } + r.waitForIdle(); + r.delay(500); + + SwingUtilities.invokeAndWait(() -> { + Point p = rb.getLocationOnScreen(); + for (int i = 0; i < 50; i++) { + Color c = r.getPixelColor(p.x + 10 + i, p.y + (rb.getHeight() / 2)); + System.out.println(c); + if (c.getRed() > 200 && c.getBlue() < 80 && c.getGreen() < 80) { + throw new RuntimeException("Test failed. Radiobutton is red " + + "and not grey."); } - }); - } + } + }); } finally { SwingUtilities.invokeAndWait(() -> { if (frame != null) { diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/plaf/windows/bug4991587.java openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/windows/bug4991587.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/plaf/windows/bug4991587.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/plaf/windows/bug4991587.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 4991587 + * @requires (os.family == "windows") + * @summary Tests that disabled JButton text is positioned properly in Windows L&F + * @modules java.desktop/com.sun.java.swing.plaf.windows + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4991587 + */ + +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.Graphics; +import java.awt.Rectangle; + +import javax.swing.AbstractButton; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.UIManager; + +import com.sun.java.swing.plaf.windows.WindowsButtonUI; + +public class bug4991587 { + static final String INSTRUCTIONS = """ + There are two buttons: enabled (left) and disabled (right). + Ensure that the disabled button text is painted entirely + inside the blue bounding rectangle, just like the enabled + button (use it as an example of how this should look like). + """; + + public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); + PassFailJFrame.builder() + .title("bug4991587 Test Instructions") + .instructions(INSTRUCTIONS) + .columns(50) + .testUI(bug4991587::createUI) + .build() + .awaitAndCheck(); + } + + static JFrame createUI() { + JFrame f = new JFrame("Disabled JButton Text Test"); + f.setLayout(new FlowLayout()); + f.setSize(400, 100); + + JButton button1 = new JButton("\u0114 Enabled JButton"); + button1.setUI(new MyButtonUI()); + f.add(button1); + + JButton button2 = new JButton("\u0114 Disabled JButton"); + button2.setEnabled(false); + button2.setUI(new MyButtonUI()); + f.add(button2); + + return f; + } + + static class MyButtonUI extends WindowsButtonUI { + protected void paintText(Graphics g, AbstractButton b, + Rectangle textRect, String text) { + g.setColor(Color.blue); + g.drawRect(textRect.x, + textRect.y, + textRect.width + 1, // add 1 for the shadow, otherwise it + // will be painted over the textRect + textRect.height); + super.paintText(g, b, textRect, text); + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/BoxView/BaselineTest.java openjdk-21-21.0.10+7/test/jdk/javax/swing/text/BoxView/BaselineTest.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/BoxView/BaselineTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/BoxView/BaselineTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4519537 4522866 + * @summary Tests that text and components in paragraph views line up at their baselines. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual BaselineTest + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.GridLayout; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JScrollPane; +import javax.swing.JTextPane; + +import javax.swing.text.ComponentView; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import javax.swing.text.Element; +import javax.swing.text.SimpleAttributeSet; +import javax.swing.text.StyleConstants; +import javax.swing.text.StyledEditorKit; +import javax.swing.text.View; +import javax.swing.text.ViewFactory; + +public class BaselineTest { + + static final String INSTRUCTIONS = """ + Test that components displayed in a JTextPane properly respect their vertical alignment. + There are two text panes, stacked vertically with similar content except the bottom components are taller. + The content consists of a leading and trailing text string, with pink coloured components between. + The text string content means the strings 'Default Size Text' and 'Large Size Text'. + Text content baseline is at the bottom of CAPITAL letters in the text. + Each pink component has a string displaying its alignment setting in the range 0.0 to 1.0 + NB: The position of the strings "align = 0.0" etc is not important, it is the component position that matters. + 0.0 means it should be aligned with its top at the text content baseline, + 1.0 means it should be aligned with its bottom at the text content baseline. + A value in between will be a proportional alignment, eg 0.5 is centered on the text content baseline + If the content displays as described, the test PASSES. + """; + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .title("BaselineTest Test Instructions") + .instructions(INSTRUCTIONS) + .columns(60) + .rows(12) + .testUI(BaselineTest::createUI) + .positionTestUIBottomRowCentered() + .build() + .awaitAndCheck(); + } + + public static JFrame createUI() { + JFrame frame = new JFrame("BaselineTest"); + frame.setLayout(new GridLayout(2, 1)); + + JTextPane prefPane = new JTextPane(); + initJTextPane(prefPane); + frame.add(new JScrollPane(prefPane)); + + JTextPane variablePane = new JTextPane(); + variablePane.setEditorKit(new CustomEditorKit()); + initJTextPane(variablePane); + frame.add(new JScrollPane(variablePane)); + frame.setSize(800, 400); + return frame; + } + + static void initJTextPane(JTextPane tp) { + + try { + Document doc = tp.getDocument(); + + doc.insertString(0, " Default Size Text ", null); + tp.setCaretPosition(doc.getLength()); + tp.insertComponent(new PaintLabel(0.0f)); + tp.insertComponent(new PaintLabel(0.2f)); + tp.insertComponent(new PaintLabel(0.5f)); + tp.insertComponent(new PaintLabel(0.7f)); + tp.insertComponent(new PaintLabel(1.0f)); + SimpleAttributeSet set = new SimpleAttributeSet(); + StyleConstants.setFontSize(set, 20); + tp.setCaretPosition(doc.getLength()); + doc.insertString(doc.getLength(), " Large Size Text ", set); + } catch (BadLocationException ble) { + throw new RuntimeException(ble); + } + } + + static class PaintLabel extends JLabel { + + private int pref = 40; + private int min = pref - 30; + private int max = pref + 30; + + public PaintLabel(float align) { + + setAlignmentY(align); + String alignStr = String.valueOf(align); + + setText("align = " + alignStr); + setOpaque(true); + setBackground(Color.PINK); + } + + public Dimension getMinimumSize() { + return new Dimension(super.getMinimumSize().width, min); + } + + public Dimension getPreferredSize() { + return new Dimension(super.getPreferredSize().width, pref); + } + + public Dimension getMaximumSize() { + return new Dimension(super.getMaximumSize().width, max); + } + + public void paintComponent(Graphics g) { + g.setColor(Color.PINK); + g.fillRect(0, 0, getWidth(), getHeight()); + int y = (int)(getAlignmentY() * getHeight()); + g.setColor(Color.BLACK); + g.drawLine(0, y, getWidth(), y); + g.drawString(getText(), 0, 10); + } + } + + static class CustomComponentView extends ComponentView { + + public CustomComponentView(Element elem) { + super(elem); + } + + public int getResizeWeight(int axis) { + return 1; + } +} + + static class CustomEditorKit extends StyledEditorKit implements ViewFactory { + + public View create(Element elem) { + if (StyleConstants.ComponentElementName.equals(elem.getName())) { + return new CustomComponentView(elem); + } else { + return super.getViewFactory().create(elem); + } + } + + public ViewFactory getViewFactory() { + return this; + } +} + +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/DefaultEditorKit/4278839/bug4278839.java openjdk-21-21.0.10+7/test/jdk/javax/swing/text/DefaultEditorKit/4278839/bug4278839.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/DefaultEditorKit/4278839/bug4278839.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/DefaultEditorKit/4278839/bug4278839.java 2026-01-15 15:34:19.000000000 +0000 @@ -49,6 +49,7 @@ private static JFrame frame; public static void main(String[] args) throws Exception { + int caret; try { robo = new Robot(); @@ -61,24 +62,67 @@ clickMouse(); robo.waitForIdle(); + robo.delay(250); area.setCaretPosition(0); robo.waitForIdle(); + robo.delay(250); - passed &= moveCaret(true) == 1; - passed &= moveCaret(true) == 5; - passed &= moveCaret(true) == 8; - passed &= moveCaret(true) == 9; - passed &= moveCaret(true) == 13; - passed &= moveCaret(true) == 16; - passed &= moveCaret(true) == 17; - passed &= moveCaret(false) == 16; - passed &= moveCaret(false) == 13; - passed &= moveCaret(false) == 9; - passed &= moveCaret(false) == 8; - passed &= moveCaret(false) == 5; - passed &= moveCaret(false) == 1; - passed &= moveCaret(false) == 0; + passed &= (caret = moveCaret(true)) == 1; + System.out.println(" passed " + passed + + " Expected position 1 actual position " + caret); + + passed &= (caret = moveCaret(true)) == 5; + System.out.println(" passed " + passed + + " Expected position 5 actual position " + caret); + + passed &= (caret = moveCaret(true)) == 8; + System.out.println(" passed " + passed + + " Expected position 8 actual position " + caret); + + passed &= (caret = moveCaret(true)) == 9; + System.out.println(" passed " + passed + + " Expected position 9 actual position " + caret); + + passed &= (caret = moveCaret(true)) == 13; + System.out.println(" passed " + passed + + " Expected position 13 actual position " + caret); + + passed &= (caret = moveCaret(true)) == 16; + System.out.println(" passed " + passed + + " Expected position 16 actual position " + caret); + + passed &= (caret = moveCaret(true)) == 17; + System.out.println(" passed " + passed + + " Expected position 17 actual position " + caret); + + passed &= (caret = moveCaret(false)) == 16; + System.out.println(" passed " + passed + + " Expected position 16 actual position " + caret); + + passed &= (caret = moveCaret(false)) == 13; + System.out.println(" passed " + passed + + " Expected position 13 actual position " + caret); + + passed &= (caret = moveCaret(false)) == 9; + System.out.println(" passed " + passed + + " Expected position 9 actual position " + caret); + + passed &= (caret = moveCaret(false)) == 8; + System.out.println(" passed " + passed + + " Expected position 8 actual position " + caret); + + passed &= (caret = moveCaret(false)) == 5; + System.out.println(" passed " + passed + + " Expected position 5 actual position " + caret); + + passed &= (caret = moveCaret(false)) == 1; + System.out.println(" passed " + passed + + " Expected position 1 actual position " + caret); + + passed &= (caret = moveCaret(false)) == 0; + System.out.println(" passed " + passed + + " Expected position 0 actual position " + caret); } catch (Exception e) { throw new RuntimeException("Test failed because of an exception:", @@ -98,6 +142,7 @@ Util.hitKeys(robo, getCtrlKey(), right ? KeyEvent.VK_RIGHT : KeyEvent.VK_LEFT); robo.waitForIdle(); + robo.delay(250); final int[] result = new int[1]; diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/GlyphView/bug4188841.java openjdk-21-21.0.10+7/test/jdk/javax/swing/text/GlyphView/bug4188841.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/GlyphView/bug4188841.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/GlyphView/bug4188841.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4188841 + * @summary Tests a JTextPane wrapping issue + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4188841 +*/ + +import java.awt.Dimension; +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.JTextPane; + +public class bug4188841 { + + static final String INSTRUCTIONS = """ + The text pane contains the phrase "the quick brown fox jumps over the lazy dog", + all the words are separated by tabs. When the test starts, the whole phrase should + appear on one line. If it is wrapped along two or more lines, the test FAILS. + + Otherwise, place the text caret in the very end of the line (e.g. by clicking + in the line and hitting End). Press Enter twice. The text should appear as one + line at all times. If the text wraps when you press Enter, the test FAILS. + """; + + static class NoWrapTextPane extends JTextPane { + + public boolean getScrollableTracksViewportWidth() { + //should not allow text to be wrapped + return false; + } + + public void setSize(Dimension d) { + // don't let the Textpane get sized smaller than its parent + if (d.width < getParent().getSize().width) { + super.setSize(getParent().getSize()); + } + else { + super.setSize(d); + } + } + } + + static JFrame createUI() { + + JFrame frame = new JFrame("bug4188841"); + + NoWrapTextPane nwp = new NoWrapTextPane(); + nwp.setText("the\tquick\tbrown\tfox\tjumps\tover\tthe\tlazy\tdog!"); + nwp.setCaretPosition(nwp.getText().length()); + + JScrollPane scrollPane = new JScrollPane(nwp, + JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, + JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + + frame.add(scrollPane); + frame.setSize(400, 300); + return frame; + } + + public static void main(String args[]) throws Exception { + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(60) + .testUI(bug4188841::createUI) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/bug4473401.java openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/bug4473401.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/bug4473401.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/bug4473401.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4473401 + * @summary Tests if FormSubmitEvent is submitted correctly. + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4473401 +*/ + +import java.io.File; +import javax.swing.JEditorPane; +import javax.swing.JFrame; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; +import javax.swing.text.html.FormSubmitEvent; +import javax.swing.text.html.HTMLEditorKit; + +public class bug4473401 implements HyperlinkListener { + + static final String INSTRUCTIONS = """ + The test window displays an HTML frameset with a frame + on the left and another to the right. + Push the 'Submit Query' button in the left frame to perform testing. + The window should be updated to have only one frame with the + message 'If you see this page the test PASSED'. + If it appears, PASS the test, otherwise FAIL the test. + """; + + static JEditorPane jep; + static JFrame createUI() { + + JFrame frame = new JFrame("bug4473401"); + jep = new JEditorPane(); + jep.addHyperlinkListener(new bug4473401()); + HTMLEditorKit kit = new HTMLEditorKit(); + kit.setAutoFormSubmission(false); + jep.setEditorKit(kit); + jep.setEditable(false); + + try { + File file = new File(System.getProperty("test.src", "."), "frameset.html"); + System.out.println(file.toURI().toURL()); + jep.setPage(file.toURL()); + } catch (Exception e) { + throw new RuntimeException(e); + } + + frame.add(jep); + frame.setSize(500, 500); + return frame; + } + + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e instanceof FormSubmitEvent) { + jep.setText("If you see this page the test PASSED"); + } + } + + public static void main(String args[]) throws Exception { + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4473401::createUI) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/frame1.html openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frame1.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/frame1.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frame1.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,9 @@ + + +Push the Submit query button +
+
+ +
+ + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/frame2.html openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frame2.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/frame2.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frame2.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,4 @@ + + + + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/frameresult.html openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frameresult.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/frameresult.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frameresult.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,5 @@ + + +If you see this page the test FAILED. + + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/frameset.html openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frameset.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/4473401/frameset.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/4473401/frameset.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,11 @@ + + + + Manual test for bug 4463014 + + + + + + + \ No newline at end of file diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/bug4529702.java openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/bug4529702.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FormView/bug4529702.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FormView/bug4529702.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4529702 + * @summary Test that radio buttons with different names should be selectable at the same time + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4529702 +*/ + +import javax.swing.JFrame; +import javax.swing.JTextPane; + +public class bug4529702 { + + static final String INSTRUCTIONS = """ + There are two rows of radio buttons, each row having two buttons. + If you can select radio buttons from the first and the second rows + at the same time the test PASSES otherwise the test FAILS. + """; + + static JFrame createUI() { + JFrame frame = new JFrame("bug4529702"); + JTextPane jtp = new JTextPane(); + jtp.setContentType("text/html"); + jtp.setText("

" + + "
"); + frame.add(jtp); + frame.setSize(200, 200); + return frame; + } + + public static void main(String[] args) throws Exception { + PassFailJFrame.builder() + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4529702::createUI) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/bug4890934.java openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/bug4890934.java --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/bug4890934.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/bug4890934.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @bug 4890934 + * @summary Tests if JEditor Pane updates the correct frame when using + * @library /java/awt/regtesthelpers + * @build PassFailJFrame + * @run main/manual bug4890934 +*/ + +import java.io.File; +import javax.swing.JEditorPane; +import javax.swing.JFrame; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; +import javax.swing.text.html.HTMLDocument; +import javax.swing.text.html.HTMLEditorKit; +import javax.swing.text.html.HTMLFrameHyperlinkEvent; + +public class bug4890934 implements HyperlinkListener { + + static final String INSTRUCTIONS = """ + The test window displays an HTML frameset with a frame + on the left and another to the right. + Click the link in the left frame which should change the view. + The resulting page will tell you if the test PASSED or FAILED. + """; + + static JFrame createUI() { + + JFrame frame = new JFrame("bug4890934"); + JEditorPane jep = new JEditorPane(); + jep.setEditorKit(new HTMLEditorKit()); + jep.setEditable(false); + jep.addHyperlinkListener(new bug4890934()); + + try { + File file = new File(System.getProperty("test.src", "."), "frameset.html"); + System.out.println(file.toURI().toURL()); + jep.setPage(file.toURL()); + } catch (Exception e) { + throw new RuntimeException(e); + } + + frame.add(jep); + frame.setSize(600, 300); + return frame; + } + + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + JEditorPane pane = (JEditorPane) e.getSource(); + if (e instanceof HTMLFrameHyperlinkEvent) { + HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e; + HTMLDocument doc = (HTMLDocument)pane.getDocument(); + doc.processHTMLFrameHyperlinkEvent(evt); + } + } + } + + public static void main(String args[]) throws Exception { + PassFailJFrame.builder() + .title("Test Instructions") + .instructions(INSTRUCTIONS) + .columns(40) + .testUI(bug4890934::createUI) + .build() + .awaitAndCheck(); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame1.html openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame1.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame1.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame1.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,8 @@ + + + + + + a link + + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame2.html openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame2.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame2.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frame2.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,4 @@ + + + + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameresult.html openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameresult.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameresult.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameresult.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,7 @@ + + +If you see this text in the RIGHT frame the test PASSED. +

If you see this text in the LEFT frame the test FAILED. + + + diff -Nru openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameset.html openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameset.html --- openjdk-21-21.0.9+10/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameset.html 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/javax/swing/text/html/FrameSetView/4890934/frameset.html 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,11 @@ + + + + Manual test for bug 4463014 + + + + + + + diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/cgroup/CgroupV1SubsystemControllerTest.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/cgroup/CgroupV1SubsystemControllerTest.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/cgroup/CgroupV1SubsystemControllerTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/cgroup/CgroupV1SubsystemControllerTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Red Hat, Inc. + * Copyright (c) 2022, 2025, Red Hat, Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -64,6 +64,9 @@ assertEquals(expectedPath, ctrl.path()); } + /* + * Less common cases: Containers + */ @Test public void testCgPathSubstring() { String root = "/foo/bar/baz"; @@ -71,8 +74,18 @@ CgroupV1SubsystemController ctrl = new CgroupV1SubsystemController(root, mountPoint); String cgroupPath = "/foo/bar/baz/some"; ctrl.setPath(cgroupPath); - String expectedPath = mountPoint + "/some"; + String expectedPath = mountPoint; assertEquals(expectedPath, ctrl.path()); } + @Test + public void testCgPathToMovedPath() { + String root = "/system.slice/garden.service/garden/good/2f57368b-0eda-4e52-64d8-af5c"; + String mountPoint = "/sys/fs/cgroup/cpu,cpuacct"; + CgroupV1SubsystemController ctrl = new CgroupV1SubsystemController(root, mountPoint); + String cgroupPath = "/system.slice/garden.service/garden/bad/2f57368b-0eda-4e52-64d8-af5c"; + ctrl.setPath(cgroupPath); + String expectedPath = mountPoint; + assertEquals(expectedPath, ctrl.path()); + } } diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2022, Red Hat Inc. + * Copyright (c) 2020, 2025, Red Hat Inc. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,6 +44,7 @@ import jdk.internal.platform.CgroupSubsystemFactory.CgroupTypeResult; import jdk.internal.platform.CgroupV1MetricsImpl; import jdk.internal.platform.cgroupv1.CgroupV1Subsystem; +import jdk.internal.platform.cgroupv1.CgroupV1SubsystemController; import jdk.internal.platform.Metrics; import jdk.test.lib.Utils; import jdk.test.lib.util.FileUtils; @@ -75,8 +76,10 @@ private Path cgroupv1MntInfoDoubleControllers; private Path cgroupv1MntInfoDoubleControllers2; private Path cgroupv1MntInfoColonsHierarchy; + private Path cgroupv1MntInfoNonTrivialRoot; private Path cgroupv1SelfCgroup; private Path cgroupv1SelfColons; + private Path cgroupv1SelfNonTrivialRoot; private Path cgroupv2SelfCgroup; private Path cgroupv1SelfCgroupJoinCtrl; private Path cgroupv1CgroupsOnlyCPUCtrl; @@ -175,6 +178,7 @@ "42 30 0:38 / /sys/fs/cgroup/cpuset rw,nosuid,nodev,noexec,relatime shared:14 - cgroup none rw,seclabel,cpuset\n" + "43 30 0:39 / /sys/fs/cgroup/blkio rw,nosuid,nodev,noexec,relatime shared:15 - cgroup none rw,seclabel,blkio\n" + "44 30 0:40 / /sys/fs/cgroup/freezer rw,nosuid,nodev,noexec,relatime shared:16 - cgroup none rw,seclabel,freezer\n"; + private String mntInfoNonTrivialRoot = "2207 2196 0:43 /system.slice/garden.service/garden/good/2f57368b-0eda-4e52-64d8-af5c /sys/fs/cgroup/cpu,cpuacct ro,nosuid,nodev,noexec,relatime master:25 - cgroup cgroup rw,cpu,cpuacct\n"; private String cgroupsNonZeroHierarchy = "#subsys_name hierarchy num_cgroups enabled\n" + "cpuset 9 1 1\n" + @@ -230,6 +234,7 @@ "2:cpu,cpuacct:/\n" + "1:name=systemd:/user.slice/user-1000.slice/user@1000.service/apps.slice/apps-org.gnome.Terminal.slice/vte-spawn-3c00b338-5b65-439f-8e97-135e183d135d.scope\n" + "0::/user.slice/user-1000.slice/user@1000.service/apps.slice/apps-org.gnome.Terminal.slice/vte-spawn-3c00b338-5b65-439f-8e97-135e183d135d.scope\n"; + private String cgroupv1SelfNTRoot = "11:cpu,cpuacct:/system.slice/garden.service/garden/bad/2f57368b-0eda-4e52-64d8-af5c\n"; private String cgroupv2SelfCgroupContent = "0::/user.slice/user-1000.slice/session-2.scope"; // We have a mix of V1 and V2 controllers, but none of the V1 controllers @@ -294,12 +299,18 @@ cgroupv1MntInfoColonsHierarchy = Paths.get(existingDirectory.toString(), "mountinfo_colons"); Files.writeString(cgroupv1MntInfoColonsHierarchy, mntInfoColons); + cgroupv1MntInfoNonTrivialRoot = Paths.get(existingDirectory.toString(), "mountinfo_nt_root"); + Files.writeString(cgroupv1MntInfoNonTrivialRoot, mntInfoNonTrivialRoot); + cgroupv1SelfCgroup = Paths.get(existingDirectory.toString(), "self_cgroup_cgv1"); Files.writeString(cgroupv1SelfCgroup, cgroupv1SelfCgroupContent); cgroupv1SelfColons = Paths.get(existingDirectory.toString(), "self_colons_cgv1"); Files.writeString(cgroupv1SelfColons, cgroupv1SelfColonsContent); + cgroupv1SelfNonTrivialRoot = Paths.get(existingDirectory.toString(), "self_nt_root_cgv1"); + Files.writeString(cgroupv1SelfNonTrivialRoot, cgroupv1SelfNTRoot); + cgroupv2SelfCgroup = Paths.get(existingDirectory.toString(), "self_cgroup_cgv2"); Files.writeString(cgroupv2SelfCgroup, cgroupv2SelfCgroupContent); @@ -450,6 +461,27 @@ } @Test + public void testMountPrefixCgroupsV1() throws IOException { + String cgroups = cgroupv1CgInfoNonZeroHierarchy.toString(); + String mountInfo = cgroupv1MntInfoNonTrivialRoot.toString(); + String selfCgroup = cgroupv1SelfNonTrivialRoot.toString(); + Optional result = CgroupSubsystemFactory.determineType(mountInfo, cgroups, selfCgroup); + + assertTrue("Expected non-empty cgroup result", result.isPresent()); + CgroupTypeResult res = result.get(); + CgroupInfo cpuInfo = res.getInfos().get("cpu"); + assertEquals(cpuInfo.getCgroupPath(), "/system.slice/garden.service/garden/bad/2f57368b-0eda-4e52-64d8-af5c"); + String expectedMountPoint = "/sys/fs/cgroup/cpu,cpuacct"; + assertEquals(expectedMountPoint, cpuInfo.getMountPoint()); + CgroupV1SubsystemController cgroupv1MemoryController = new CgroupV1SubsystemController(cpuInfo.getMountRoot(), cpuInfo.getMountPoint()); + cgroupv1MemoryController.setPath(cpuInfo.getCgroupPath()); + String actualPath = cgroupv1MemoryController.path(); + assertNotNull(actualPath); + String expectedPath = expectedMountPoint; + assertEquals("Should be equal to the mount point path", expectedPath, actualPath); + } + + @Test public void testZeroHierarchyCgroupsV1() throws IOException { String cgroups = cgroupv1CgInfoZeroHierarchy.toString(); String mountInfo = cgroupv1MntInfoZeroHierarchy.toString(); diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/GetFreeSwapSpaceSize.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/GetFreeSwapSpaceSize.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/GetFreeSwapSpaceSize.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/GetFreeSwapSpaceSize.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020, 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2020, 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/MetricsMemoryTester.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/MetricsMemoryTester.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/MetricsMemoryTester.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/MetricsMemoryTester.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -48,6 +48,8 @@ case "softlimit": testMemorySoftLimit(args[1]); break; + default: + throw new RuntimeException("unknown args: " + args[0] + " for MetricsMemoryTester"); } } @@ -68,7 +70,7 @@ // We need swap to execute this test or will SEGV if (memAndSwapLimit <= memLimit) { - System.out.println("No swap memory limits, test case skipped"); + System.out.println("No swap memory limits. Ignoring test!"); } else { long count = Metrics.systemMetrics().getMemoryFailCount(); diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestDockerBasic.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerBasic.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestDockerBasic.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerBasic.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,6 @@ /* * Copyright (c) 2022, Red Hat, Inc. + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +27,7 @@ * @bug 8293540 * @summary Verify that -XshowSettings:system works * @key cgroups - * @requires docker.support + * @requires container.support * @requires !vm.asan * @library /test/lib * @run main/timeout=360 TestDockerBasic diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestDockerCpuMetrics.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerCpuMetrics.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestDockerCpuMetrics.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerCpuMetrics.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,7 +34,7 @@ * @test * @key cgroups * @summary Test JDK Metrics class when running inside docker container - * @requires docker.support + * @requires container.support * @requires !vm.asan * @library /test/lib * @modules java.base/jdk.internal.platform diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetrics.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetrics.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetrics.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetrics.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,12 +27,13 @@ import jdk.test.lib.containers.docker.DockerRunOptions; import jdk.test.lib.containers.docker.DockerTestUtils; import jdk.test.lib.process.OutputAnalyzer; +import jtreg.SkippedException; /* * @test * @key cgroups * @summary Test JDK Metrics class when running inside docker container - * @requires docker.support + * @requires container.support * @requires !vm.asan * @library /test/lib * @modules java.base/jdk.internal.platform @@ -76,7 +77,7 @@ } testOomKillFlag("100m", true); - testMemoryFailCount("64m"); + testMemoryFailCount("128m"); testMemorySoftLimit("500m","200m"); @@ -112,18 +113,22 @@ // Check whether swapping really works for this test // On some systems there is no swap space enabled. And running - // 'java -Xms{mem-limit} -Xmx{mem-limit} -version' would fail due to swap space size being 0. + // 'java -Xms{mem-limit} -Xmx{mem-limit} -XX:+AlwaysPreTouch -version' + // would fail due to swap space size being 0. Note that when swap is + // properly enabled on the system the container gets the same amount + // of swap as is configured for memory. Thus, 2x{mem-limit} is the actual + // memory and swap bound for this pre-test. DockerRunOptions preOpts = new DockerRunOptions(imageName, "/jdk/bin/java", "-version"); preOpts.addDockerOpts("--volume", Utils.TEST_CLASSES + ":/test-classes/") .addDockerOpts("--memory=" + value) + .addJavaOpts("-XX:+AlwaysPreTouch") .addJavaOpts("-Xms" + value) .addJavaOpts("-Xmx" + value); OutputAnalyzer oa = DockerTestUtils.dockerRunJava(preOpts); String output = oa.getOutput(); if (!output.contains("version")) { - System.out.println("Swapping doesn't work for this test."); - return; + throw new SkippedException("Swapping doesn't work for this test."); } DockerRunOptions opts = @@ -137,8 +142,7 @@ oa = DockerTestUtils.dockerRunJava(opts); output = oa.getOutput(); if (output.contains("Ignoring test")) { - System.out.println("Ignored by the tester"); - return; + throw new SkippedException("Ignored by the tester"); } oa.shouldHaveExitValue(0).shouldContain("TEST PASSED!!!"); } diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetricsSubgroup.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2025, BELLSOFT. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import jdk.internal.platform.Metrics; +import jdk.test.lib.Container; +import jdk.test.lib.Utils; +import jdk.test.lib.containers.docker.Common; +import jdk.test.lib.containers.docker.DockerfileConfig; +import jdk.test.lib.containers.docker.DockerRunOptions; +import jdk.test.lib.containers.docker.DockerTestUtils; +import jdk.test.lib.containers.docker.ContainerRuntimeVersionTestUtils; + +import java.util.ArrayList; + +import jtreg.SkippedException; + +/* + * @test + * @bug 8343191 + * @key cgroups + * @summary Cgroup v1 subsystem fails to set subsystem path + * @requires container.support + * @library /test/lib + * @modules java.base/jdk.internal.platform + * @build MetricsMemoryTester + * @run main TestDockerMemoryMetricsSubgroup + */ + +public class TestDockerMemoryMetricsSubgroup { + private static final String imageName = + DockerfileConfig.getBaseImageName() + ":" + + DockerfileConfig.getBaseImageVersion(); + + static String getEngineInfo(String format) throws Exception { + return DockerTestUtils.execute(Container.ENGINE_COMMAND, "info", "-f", format) + .getStdout(); + } + + static boolean isRootless() throws Exception { + // Docker and Podman have different INFO structures. + // The node path for Podman is .Host.Security.Rootless, that also holds for + // Podman emulating Docker CLI. The node path for Docker is .SecurityOptions. + return (getEngineInfo("{{.Host.Security.Rootless}}").contains("true") || + getEngineInfo("{{.SecurityOptions}}").contains("name=rootless")); + } + + public static void main(String[] args) throws Exception { + Metrics metrics = Metrics.systemMetrics(); + if (metrics == null) { + System.out.println("Cgroup not configured."); + return; + } + if (!DockerTestUtils.canTestDocker()) { + System.out.println("Unable to run docker tests."); + return; + } + + ContainerRuntimeVersionTestUtils.checkContainerVersionSupported(); + + if (isRootless()) { + throw new SkippedException("Test skipped in rootless mode"); + } + + if ("cgroupv1".equals(metrics.getProvider())) { + testMemoryLimitSubgroupV1("200m", "400m", false); + testMemoryLimitSubgroupV1("500m", "1G", false); + testMemoryLimitSubgroupV1("200m", "400m", true); + testMemoryLimitSubgroupV1("500m", "1G", true); + } else if ("cgroupv2".equals(metrics.getProvider())) { + testMemoryLimitSubgroupV2("200m", "400m", false); + testMemoryLimitSubgroupV2("500m", "1G", false); + testMemoryLimitSubgroupV2("200m", "400m", true); + testMemoryLimitSubgroupV2("500m", "1G", true); + } else { + throw new SkippedException("Metrics are from neither cgroup v1 nor v2, skipped for now."); + } + } + + private static void testMemoryLimitSubgroupV1(String innerSize, String outerGroupMemorySize, boolean privateNamespace) throws Exception { + Common.logNewTestCase("testMemoryLimitSubgroup, innerSize = " + innerSize); + DockerRunOptions opts = + new DockerRunOptions(imageName, "sh", "-c"); + opts.javaOpts = new ArrayList<>(); + opts.appendTestJavaOptions = false; + opts.addDockerOpts("--volume", Utils.TEST_CLASSES + ":/test-classes/") + .addDockerOpts("--volume", Utils.TEST_JDK + ":/jdk") + .addDockerOpts("--privileged") + .addDockerOpts("--cgroupns=" + (privateNamespace ? "private" : "host")) + .addDockerOpts("--memory", outerGroupMemorySize); + opts.addClassOptions("mkdir -p /sys/fs/cgroup/memory/test ; " + + "echo " + innerSize + " > /sys/fs/cgroup/memory/test/memory.limit_in_bytes ; " + + "echo $$ > /sys/fs/cgroup/memory/test/cgroup.procs ; " + + "/jdk/bin/java -cp /test-classes/ " + + "--add-exports java.base/jdk.internal.platform=ALL-UNNAMED " + + "MetricsMemoryTester memory " + innerSize); + + DockerTestUtils.dockerRunJava(opts).shouldHaveExitValue(0).shouldContain("TEST PASSED!!!"); + } + + private static void testMemoryLimitSubgroupV2(String innerSize, String outerGroupMemorySize, boolean privateNamespace) throws Exception { + Common.logNewTestCase("testMemoryLimitSubgroup, innerSize = " + innerSize); + DockerRunOptions opts = + new DockerRunOptions(imageName, "sh", "-c"); + opts.javaOpts = new ArrayList<>(); + opts.appendTestJavaOptions = false; + opts.addDockerOpts("--volume", Utils.TEST_CLASSES + ":/test-classes/") + .addDockerOpts("--volume", Utils.TEST_JDK + ":/jdk") + .addDockerOpts("--privileged") + .addDockerOpts("--cgroupns=" + (privateNamespace ? "private" : "host")) + .addDockerOpts("--memory", outerGroupMemorySize); + opts.addClassOptions("mkdir -p /sys/fs/cgroup/memory/test ; " + + "echo $$ > /sys/fs/cgroup/memory/test/cgroup.procs ; " + + "echo '+memory' > /sys/fs/cgroup/cgroup.subtree_control ; " + + "echo '+memory' > /sys/fs/cgroup/memory/cgroup.subtree_control ; " + + "echo " + innerSize + " > /sys/fs/cgroup/memory/test/memory.max ; " + + "/jdk/bin/java -cp /test-classes/ " + + "--add-exports java.base/jdk.internal.platform=ALL-UNNAMED " + + "MetricsMemoryTester memory " + innerSize); + + DockerTestUtils.dockerRunJava(opts).shouldHaveExitValue(0).shouldContain("TEST PASSED!!!"); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,6 @@ /* - * Copyright (C) 2020, 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2020, 2022, Tencent. All rights reserved. + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +26,7 @@ * @test * @key cgroups * @bug 8242480 - * @requires docker.support + * @requires container.support * @requires !vm.asan * @library /test/lib * @build GetFreeSwapSpaceSize diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestLimitsUpdating.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestLimitsUpdating.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestLimitsUpdating.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestLimitsUpdating.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,6 @@ /* * Copyright (c) 2023, Red Hat, Inc. + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -28,7 +29,7 @@ * @bug 8308090 * @key cgroups * @summary Test container limits updating as they get updated at runtime without restart - * @requires docker.support + * @requires container.support * @requires !vm.asan * @library /test/lib * @modules java.base/jdk.internal.platform diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestPidsLimit.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestPidsLimit.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestPidsLimit.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestPidsLimit.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2021 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -27,7 +27,7 @@ * @key cgroups * @summary Test JDK Metrics class when running inside a docker container with limited pids * @bug 8266490 - * @requires docker.support + * @requires container.support * @requires !vm.asan * @library /test/lib * @build TestPidsLimit diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +25,7 @@ * @test * @key cgroups * @summary Test JDK Metrics class when running inside docker container - * @requires docker.support + * @requires container.support * @requires !vm.asan * @library /test/lib * @modules java.base/jdk.internal.platform diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestUseContainerSupport.java openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestUseContainerSupport.java --- openjdk-21-21.0.9+10/test/jdk/jdk/internal/platform/docker/TestUseContainerSupport.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/internal/platform/docker/TestUseContainerSupport.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,6 @@ /* * Copyright (c) 2020, Red Hat, Inc. + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +25,7 @@ /* * @test * @summary UseContainerSupport flag should reflect Metrics being available - * @requires docker.support + * @requires container.support * @requires !vm.asan * @library /test/lib * @modules java.base/jdk.internal.platform diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/jfr/api/flightrecorder/TestSettingsControl.java openjdk-21-21.0.10+7/test/jdk/jdk/jfr/api/flightrecorder/TestSettingsControl.java --- openjdk-21-21.0.9+10/test/jdk/jdk/jfr/api/flightrecorder/TestSettingsControl.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/jfr/api/flightrecorder/TestSettingsControl.java 2026-01-15 15:34:19.000000000 +0000 @@ -28,6 +28,7 @@ import java.util.Set; import jdk.jfr.Event; +import jdk.jfr.Name; import jdk.jfr.Recording; import jdk.jfr.SettingControl; import jdk.jfr.SettingDefinition; @@ -42,7 +43,7 @@ public class TestSettingsControl { static class MySettingsControl extends SettingControl { - public static boolean setWasCalled; + public static boolean myvalueSet; private String value = "default"; @@ -57,7 +58,9 @@ @Override public void setValue(String value) { - setWasCalled = true; + if ("myvalue".equals(value)) { + myvalueSet = true; + } this.value = value; } @@ -67,9 +70,10 @@ } } - + @Name("M") static class MyCustomSettingEvent extends Event { @SettingDefinition + @Name("m") boolean mySetting(MySettingsControl msc) { return true; } @@ -77,13 +81,13 @@ public static void main(String[] args) throws Throwable { Recording r = new Recording(); - r.enable(MyCustomSettingEvent.class).with("mySetting", "myvalue"); + r.enable("M").with("m", "myvalue"); r.start(); MyCustomSettingEvent e = new MyCustomSettingEvent(); e.commit(); r.stop(); r.close(); - assertTrue(MySettingsControl.setWasCalled, "SettingControl.setValue was not called"); + assertTrue(MySettingsControl.myvalueSet, "SettingControl.setValue(\"myvalue\") was not called"); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/compiler/TestCompilerCompile.java openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestCompilerCompile.java --- openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/compiler/TestCompilerCompile.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestCompilerCompile.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,7 +41,7 @@ * @test * @key jfr * @requires vm.hasJFR - * @requires vm.compMode!="Xint" + * @requires vm.compMode == "Xmixed" * @library /test/lib * @build jdk.test.whitebox.WhiteBox * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/compiler/TestCompilerInlining.java openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestCompilerInlining.java --- openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/compiler/TestCompilerInlining.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestCompilerInlining.java 2026-01-15 15:34:19.000000000 +0000 @@ -47,7 +47,7 @@ * @key jfr * @summary Verifies that corresponding JFR events are emitted in case of inlining. * @requires vm.hasJFR - * + * @requires vm.compMode == "Xmixed" * @requires vm.opt.Inline == true | vm.opt.Inline == null * @library /test/lib * @modules java.base/jdk.internal.org.objectweb.asm diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/compiler/TestDeoptimization.java openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestDeoptimization.java --- openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/compiler/TestDeoptimization.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/compiler/TestDeoptimization.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,7 +51,7 @@ * @key jfr * @summary sanity test for Deoptimization event, depends on Compilation event * @requires vm.hasJFR - * @requires vm.compMode != "Xint" + * @requires vm.compMode == "Xmixed" * @requires vm.flavor == "server" & (vm.opt.TieredStopAtLevel == 4 | vm.opt.TieredStopAtLevel == null) * @library /test/lib * @build jdk.test.whitebox.WhiteBox diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWith32BitOops.java openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWith32BitOops.java --- openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWith32BitOops.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWith32BitOops.java 2026-01-15 15:34:19.000000000 +0000 @@ -35,6 +35,8 @@ * @requires vm.gc == "Parallel" | vm.gc == null * @requires os.family == "linux" | os.family == "windows" * @requires sun.arch.data.model == "64" + * @comment Asan changes memory layout and we get a different coops mode + * @requires !vm.asan * @library /test/lib /test/jdk * @build jdk.test.whitebox.WhiteBox * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWithZeroBasedOops.java openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWithZeroBasedOops.java --- openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWithZeroBasedOops.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWithZeroBasedOops.java 2026-01-15 15:34:19.000000000 +0000 @@ -33,6 +33,8 @@ * @requires vm.gc == "Parallel" | vm.gc == null * @requires os.family == "linux" | os.family == "windows" * @requires sun.arch.data.model == "64" + * @comment Asan changes memory layout and we get a different coops mode + * @requires !vm.asan * @library /test/lib /test/jdk * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:-UseFastUnorderedTimeStamps -XX:+UseParallelGC -XX:+UseCompressedOops -Xmx4g jdk.jfr.event.gc.configuration.TestGCHeapConfigurationEventWithZeroBasedOops */ diff -Nru openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/os/TestCPULoad.java openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/os/TestCPULoad.java --- openjdk-21-21.0.9+10/test/jdk/jdk/jfr/event/os/TestCPULoad.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/jdk/jfr/event/os/TestCPULoad.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,7 +30,6 @@ import jdk.test.lib.jfr.EventNames; import jdk.test.lib.jfr.Events; - /** * @test * @key jfr @@ -41,13 +40,32 @@ public class TestCPULoad { private final static String EVENT_NAME = EventNames.CPULoad; + public static boolean isPrime(int num) { + if (num <= 1) return false; + for (int i = 2; i <= Math.sqrt(num); i++) { + if (num % i == 0) return false; + } + return true; + } + + public static int burnCpuCycles(int limit) { + int primeCount = 0; + for (int i = 2; i < limit; i++) { + if (isPrime(i)) { + primeCount++; + } + } + return primeCount; + } + public static void main(String[] args) throws Throwable { Recording recording = new Recording(); recording.enable(EVENT_NAME); recording.start(); - // Need to sleep so a time delta can be calculated - Thread.sleep(100); + // burn some cycles to check increase of CPU related counters + int pn = burnCpuCycles(2500000); recording.stop(); + System.out.println("Found " + pn + " primes while burning cycles"); List events = Events.fromRecording(recording); if (events.isEmpty()) { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/awt/font/TestDevTransform.java openjdk-21-21.0.10+7/test/jdk/sun/awt/font/TestDevTransform.java --- openjdk-21-21.0.9+10/test/jdk/sun/awt/font/TestDevTransform.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/awt/font/TestDevTransform.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,9 +22,31 @@ */ /* - * @test + * @test id=dialog_double * @bug 4269775 8341535 * @summary Check that different text rendering APIs agree + * @run main/othervm TestDevTransform DIALOG DOUBLE + */ + +/* + * @test id=dialog_float + * @bug 4269775 8341535 + * @summary Check that different text rendering APIs agree + * @run main/othervm TestDevTransform DIALOG FLOAT + */ + +/* + * @test id=monospaced_double + * @bug 4269775 8341535 + * @summary Check that different text rendering APIs agree + * @run main/othervm TestDevTransform MONOSPACED DOUBLE + */ + +/* + * @test id=monospaced_float + * @bug 4269775 8341535 + * @summary Check that different text rendering APIs agree + * @run main/othervm TestDevTransform MONOSPACED FLOAT */ /** @@ -66,6 +88,8 @@ static String test = "This is only a test"; static double angle = Math.PI / 6.0; // Rotate 30 degrees static final int W = 400, H = 400; + static boolean useDialog; + static boolean useDouble; static void draw(Graphics2D g2d, TextLayout layout, float x, float y, float scalex) { @@ -101,9 +125,19 @@ g2d.setColor(Color.white); g2d.fillRect(0, 0, W, H); g2d.setColor(Color.black); - g2d.scale(1.481f, 1.481); // Convert to 108 dpi + if (useDouble) { + g2d.scale(1.481, 1.481); // Convert to 108 dpi + } else { + g2d.scale(1.481f, 1.481f); // Convert to 108 dpi + } g2d.addRenderingHints(hints); - Font font = new Font(Font.DIALOG, Font.PLAIN, 12); + String name; + if (useDialog) { + name = Font.DIALOG; + } else { + name = Font.MONOSPACED; + } + Font font = new Font(name, Font.PLAIN, 12); g2d.setFont(font); } @@ -135,6 +169,12 @@ } public static void main(String args[]) throws Exception { + if (args[0].equals("DIALOG")) { + useDialog = true; + } + if (args[1].equals("DOUBLE")) { + useDouble = true; + } BufferedImage tl_Image = new BufferedImage(W, H, BufferedImage.TYPE_INT_RGB); { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/java2d/cmm/ColorConvertOp/FilterSemiCustomImages.java openjdk-21-21.0.10+7/test/jdk/sun/java2d/cmm/ColorConvertOp/FilterSemiCustomImages.java --- openjdk-21-21.0.9+10/test/jdk/sun/java2d/cmm/ColorConvertOp/FilterSemiCustomImages.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/java2d/cmm/ColorConvertOp/FilterSemiCustomImages.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,162 @@ +/* + * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Color; +import java.awt.Point; +import java.awt.color.ColorSpace; +import java.awt.image.BufferedImage; +import java.awt.image.ColorConvertOp; +import java.awt.image.ColorModel; +import java.awt.image.SampleModel; +import java.awt.image.WritableRaster; +import java.io.File; + +import javax.imageio.ImageIO; + +import static java.awt.image.BufferedImage.TYPE_3BYTE_BGR; +import static java.awt.image.BufferedImage.TYPE_4BYTE_ABGR; +import static java.awt.image.BufferedImage.TYPE_4BYTE_ABGR_PRE; +import static java.awt.image.BufferedImage.TYPE_INT_ARGB; +import static java.awt.image.BufferedImage.TYPE_INT_ARGB_PRE; +import static java.awt.image.BufferedImage.TYPE_INT_BGR; +import static java.awt.image.BufferedImage.TYPE_INT_RGB; +import static java.awt.image.BufferedImage.TYPE_USHORT_GRAY; + +/** + * @test + * @bug 8366208 + * @summary Verifies ColorConvertOp works correctly with BufferedImage and + * semi-custom raster + */ +public final class FilterSemiCustomImages { + + private static final int W = 144; + private static final int H = 123; + + private static final int[] TYPES = { + TYPE_INT_RGB, TYPE_INT_ARGB, TYPE_INT_ARGB_PRE, TYPE_INT_BGR, + TYPE_3BYTE_BGR, TYPE_4BYTE_ABGR, TYPE_4BYTE_ABGR_PRE, + TYPE_USHORT_GRAY + }; + + private static final int[] CSS = { + ColorSpace.CS_CIEXYZ, ColorSpace.CS_GRAY, ColorSpace.CS_LINEAR_RGB, + ColorSpace.CS_PYCC, ColorSpace.CS_sRGB + }; + + private static final class CustomRaster extends WritableRaster { + CustomRaster(SampleModel sampleModel, Point origin) { + super(sampleModel, origin); + } + } + + public static void main(String[] args) throws Exception { + for (int fromIndex : CSS) { + for (int toIndex : CSS) { + if (fromIndex != toIndex) { + for (int type : TYPES) { + test(fromIndex, toIndex, type); + } + } + } + } + } + + private static void test(int fromIndex, int toIndex, int type) + throws Exception + { + ColorSpace fromCS = ColorSpace.getInstance(fromIndex); + ColorSpace toCS = ColorSpace.getInstance(toIndex); + ColorConvertOp op = new ColorConvertOp(fromCS, toCS, null); + + // standard source -> standard dst + BufferedImage srcGold = new BufferedImage(W, H, type); + fill(srcGold); + BufferedImage dstGold = new BufferedImage(W, H, type); + op.filter(srcGold, dstGold); + + // custom source -> standard dst + BufferedImage srcCustom = makeCustomBI(srcGold); + fill(srcCustom); + BufferedImage dst = new BufferedImage(W, H, type); + op.filter(srcCustom, dst); + verify(dstGold, dst); + + // standard source -> custom dst + BufferedImage src = new BufferedImage(W, H, type); + fill(src); + BufferedImage dstCustom = makeCustomBI(dstGold); + op.filter(src, dstCustom); + verify(dstGold, dstCustom); + + // custom source -> custom dst + srcCustom = makeCustomBI(srcGold); + fill(srcCustom); + dstCustom = makeCustomBI(dstGold); + op.filter(srcCustom, dstCustom); + verify(dstGold, dstCustom); + } + + private static BufferedImage makeCustomBI(BufferedImage bi) { + ColorModel cm = bi.getColorModel(); + SampleModel sm = bi.getSampleModel(); + CustomRaster cr = new CustomRaster(sm, new Point()); + return new BufferedImage(cm, cr, bi.isAlphaPremultiplied(), null) { + @Override + public int getType() { + return bi.getType(); + } + }; + } + + private static void fill(BufferedImage image) { + int width = image.getWidth(); + int height = image.getHeight(); + for (int x = 0; x < width; ++x) { + for (int y = 0; y < height; ++y) { + // alpha channel may be calculated slightly differently on + // different code paths, so only check fully transparent and + // fully opaque pixels + Color c = new Color(y * 255 / (height - 1), + x * 255 / (width - 1), + x % 255, + (x % 2 == 0) ? 0 : 255); + image.setRGB(x, y, c.getRGB()); + } + } + } + + private static void verify(BufferedImage dstGold, BufferedImage dst) + throws Exception + { + for (int x = 0; x < W; ++x) { + for (int y = 0; y < H; ++y) { + if (dst.getRGB(x, y) != dstGold.getRGB(x, y)) { + ImageIO.write(dst, "png", new File("custom.png")); + ImageIO.write(dstGold, "png", new File("gold.png")); + throw new RuntimeException("Test failed."); + } + } + } + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java openjdk-21-21.0.10+7/test/jdk/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java --- openjdk-21-21.0.9+10/test/jdk/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -74,6 +74,7 @@ public final class MonitorVmStartTerminate { private static final int PROCESS_COUNT = 10; + private static final int ARGS_ATTEMPTS = 10; public static void main(String... args) throws Exception { @@ -175,8 +176,6 @@ } } - private static final int ARGS_ATTEMPTS = 3; - private boolean hasMainArgs(Integer id, String args) { VmIdentifier vmid = null; try { @@ -204,7 +203,10 @@ } catch (MonitorException e) { // Process probably not running or not ours, e.g. // sun.jvmstat.monitor.MonitorException: Could not attach to PID - System.out.println("hasMainArgs(" + id + "): " + e); + // Only log if something else, to avoid filling log: + if (!e.getMessage().contains("Could not attach")) { + System.out.println("hasMainArgs(" + id + "): " + e); + } } } return false; @@ -249,23 +251,15 @@ } private static void waitForRemoval(Path path) { - String timeoutFactorText = System.getProperty("test.timeout.factor", "1.0"); - double timeoutFactor = Double.parseDouble(timeoutFactorText); - long timeoutNanos = 1000_000_000L*(long)(1000*timeoutFactor); long start = System.nanoTime(); + System.out.println("Waiting for " + path + " to be removed"); while (true) { long now = System.nanoTime(); long waited = now - start; - System.out.println("Waiting for " + path + " to be removed, " + waited + " ns"); if (!Files.exists(path)) { + System.out.println("waitForRemoval: " + path + " has been removed in " + waited + " ns"); return; } - if (waited > timeoutNanos) { - System.out.println("Start: " + start); - System.out.println("Now: " + now); - System.out.println("Process timed out after " + waited + " ns. Abort."); - System.exit(1); - } takeNap(); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/AbstractFilePermissionTest.java openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/AbstractFilePermissionTest.java --- openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/AbstractFilePermissionTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/AbstractFilePermissionTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,6 @@ import java.nio.file.attribute.PosixFilePermission; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -47,7 +46,6 @@ * @author Taras Ledkov */ public abstract class AbstractFilePermissionTest { - private final String TEST_CLASS_PATH = System.getProperty("test.class.path"); protected final String TEST_CLASSES = System.getProperty("test.classes"); protected final FileSystem FS = FileSystems.getDefault(); private int MAX_GET_FREE_PORT_TRIES = 10; @@ -169,11 +167,8 @@ final String pp = "-Dcom.sun.management.jmxremote.port=" + jdk.test.lib.Utils.getFreePort(); List command = new ArrayList<>(); - Collections.addAll(command, jdk.test.lib.Utils.getTestJavaOpts()); command.add(mp); command.add(pp); - command.add("-cp"); - command.add(TEST_CLASSES); command.add(className); ProcessBuilder processBuilder = ProcessTools.createTestJavaProcessBuilder(command); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/JMXInterfaceBindingTest.java openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/JMXInterfaceBindingTest.java --- openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/JMXInterfaceBindingTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/JMXInterfaceBindingTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,6 @@ /* * Copyright (c) 2015, Red Hat Inc + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -205,6 +206,7 @@ // This is needed for testing on loopback args.add("-Djava.rmi.server.hostname=" + address); if (useSSL) { + args.add("-Djdk.rmi.ssl.client.enableEndpointIdentification=false"); args.add("-Dcom.sun.management.jmxremote.registry.ssl=true"); args.add("-Djavax.net.ssl.keyStore=" + KEYSTORE_LOC); args.add("-Djavax.net.ssl.trustStore=" + TRUSTSTORE_LOC); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/LocalManagementTest.java openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/LocalManagementTest.java --- openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/LocalManagementTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/LocalManagementTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,12 +24,10 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicReference; import jdk.test.lib.process.ProcessTools; -import jdk.test.lib.Utils; /** * @test @@ -48,7 +46,6 @@ * @run main/othervm/timeout=300 LocalManagementTest */ public class LocalManagementTest { - private static final String TEST_CLASSPATH = System.getProperty("test.class.path"); public static void main(String[] args) throws Exception { int failures = 0; @@ -99,16 +96,13 @@ private static boolean doTest(String testId, String arg) throws Exception { List args = new ArrayList<>(); args.add("-XX:+UsePerfData"); - Collections.addAll(args, Utils.getTestJavaOpts()); - args.add("-cp"); - args.add(TEST_CLASSPATH); if (arg != null) { args.add(arg); } args.add("TestApplication"); ProcessBuilder server = ProcessTools.createTestJavaProcessBuilder( - args.toArray(new String[args.size()]) + args.toArray(new String[0]) ); Process serverPrc = null, clientPrc = null; @@ -134,8 +128,6 @@ System.out.println(" shutdown port : " + port.get()); ProcessBuilder client = ProcessTools.createTestJavaProcessBuilder( - "-cp", - TEST_CLASSPATH, "--add-exports", "jdk.management.agent/jdk.internal.agent=ALL-UNNAMED", "TestManager", String.valueOf(serverPrc.pid()), diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java --- openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -169,6 +169,7 @@ final List credentialFiles = prepareTestFiles(args[0]); Security.setProperty("jdk.tls.disabledAlgorithms", ""); + System.setProperty("jdk.rmi.ssl.client.enableEndpointIdentification", "false"); try { MAX_GET_FREE_PORT_TRIES = Integer.parseInt(System.getProperty("test.getfreeport.max.tries", "10")); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/RmiRegistrySslTest.java openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/RmiRegistrySslTest.java --- openjdk-21-21.0.9+10/test/jdk/sun/management/jmxremote/bootstrap/RmiRegistrySslTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/management/jmxremote/bootstrap/RmiRegistrySslTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,7 +28,6 @@ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; -import java.net.BindException; import java.nio.charset.Charset; import java.nio.file.FileSystem; import java.nio.file.FileSystems; @@ -180,12 +179,10 @@ initTestEnvironment(); List command = new ArrayList<>(); - Collections.addAll(command, Utils.getTestJavaOpts()); + command.add("-Djdk.rmi.ssl.client.enableEndpointIdentification=false"); command.add("-Dtest.src=" + TEST_SRC); command.add("-Dtest.rmi.port=" + port); command.addAll(Arrays.asList(args)); - command.add("-cp"); - command.add(TEST_CLASS_PATH); command.add(className); ProcessBuilder processBuilder = ProcessTools.createTestJavaProcessBuilder(command); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/net/www/protocol/file/FileURLTest.java openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/file/FileURLTest.java --- openjdk-21-21.0.9+10/test/jdk/sun/net/www/protocol/file/FileURLTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/file/FileURLTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ * @test * @bug 4474391 * @summary url: file:///D|/Projects/tmp/test.html: urlConnection.getInputStream() broken. + * @requires os.family == "windows" */ import java.io.*; import java.net.*; @@ -33,10 +34,7 @@ public static void main(String [] args) { - String name = System.getProperty("os.name"); - if (name.startsWith("Windows")) { String urlStr = "file:///C|/nonexisted.txt"; - try { URL url = new URL(urlStr); URLConnection urlConnection = url.openConnection(); @@ -49,6 +47,5 @@ throw new RuntimeException("Can't handle '|' in place of ':' in file urls"); } } - } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java --- openjdk-21-21.0.9+10/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java 2026-01-15 15:34:19.000000000 +0000 @@ -34,379 +34,41 @@ * @author Xuelei Fan */ -import java.net.*; -import java.util.*; -import java.io.*; -import javax.net.ssl.*; -import java.security.Security; + +import java.io.PrintStream; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.URL; +import java.security.KeyPair; +import java.security.KeyPairGenerator; import java.security.KeyStore; -import java.security.KeyFactory; +import java.security.SecureRandom; +import java.security.Security; +import java.security.cert.X509Certificate; + import java.security.cert.Certificate; -import java.security.cert.CertificateFactory; -import java.security.spec.*; -import java.security.interfaces.*; import java.math.BigInteger; import jdk.test.lib.net.URIBuilder; - -/* - * Certificates and key used in the test. - * - * TLS server certificate: - * server private key: - * -----BEGIN RSA PRIVATE KEY----- - * Proc-Type: 4,ENCRYPTED - * DEK-Info: DES-EDE3-CBC,D9AE407F6D0E389A - * - * WPrA7TFol/cQCcp9oHnXWNpYlvRbbIcQj0m+RKT2Iuzfus+DHt3Zadf8nJpKfX2e - * h2rnhlzCN9M7djRDooZKDOPCsdBn51Au7HlZF3S3Opgo7D8XFM1a8t1Je4ke14oI - * nw6QKYsBblRziPnP2PZ0zvX24nOv7bbY8beynlJHGs00VWSFdoH2DS0aE1p6D+3n - * ptJuJ75dVfZFK4X7162APlNXevX8D6PEQpSiRw1rjjGGcnvQ4HdWk3BxDVDcCNJb - * Y1aGNRxsjTDvPi3R9Qx2M+W03QzEPx4SR3ZHVskeSJHaetM0TM/w/45Paq4GokXP - * ZeTnbEx1xmjkA7h+t4doLL4watx5F6yLsJzu8xB3lt/1EtmkYtLz1t7X4BetPAXz - * zS69X/VwhKfsOI3qXBWuL2oHPyhDmT1gcaUQwEPSV6ogHEEQEDXdiUS8heNK13KF - * TCQYFkETvV2BLxUhV1hypPzRQ6tUpJiAbD5KmoK2lD9slshG2QtvKQq0/bgkDY5J - * LhDHV2dtcZ3kDPkkZXpbcJQvoeH3d09C5sIsuTFo2zgNR6oETHUc5TzP6FY2YYRa - * QcK5HcmtsRRiXFm01ac+aMejJUIujjFt84SiKWT/73vC8AmY4tYcJBLjCg4XIxSH - * fdDFLL1YZENNO5ivlp8mdiHqcawx+36L7DrEZQ8RZt6cqST5t/+XTdM74s6k81GT - * pNsa82P2K2zmIUZ/DL2mKjW1vfRByw1NQFEBkN3vdyZxYfM/JyUzX4hbjXBEkh9Q - * QYrcwLKLjis2QzSvK04B3bvRzRb+4ocWiso8ZPAXAIxZFBWDpTMM2A== - * -----END RSA PRIVATE KEY----- - * - * -----BEGIN RSA PRIVATE KEY----- - * MIICXAIBAAKBgQClrFscN6LdmYktsnm4j9VIpecchBeNaZzGrG358h0fORna03Ie - * buxEzHCk3LoAMPagTz1UemFqzFfQCn+VKBg/mtmU8hvIJIh+/p0PPftXUwizIDPU - * PxdHFNHN6gjYDnVOr77M0uyvqXpJ38LZrLgkQJCmA1Yq0DAFQCxPq9l0iQIDAQAB - * AoGAbqcbg1E1mkR99uOJoNeQYKFOJyGiiXTMnXV1TseC4+PDfQBU7Dax35GcesBi - * CtapIpFKKS5D+ozY6b7ZT8ojxuQ/uHLPAvz0WDR3ds4iRF8tyu71Q1ZHcQsJa17y - * yO7UbkSSKn/Mp9Rb+/dKqftUGNXVFLqgHBOzN2s3We3bbbECQQDYBPKOg3hkaGHo - * OhpHKqtQ6EVkldihG/3i4WejRonelXN+HRh1KrB2HBx0M8D/qAzP1i3rNSlSHer4 - * 59YRTJnHAkEAxFX/sVYSn07BHv9Zhn6XXct/Cj43z/tKNbzlNbcxqQwQerw3IH51 - * 8UH2YOA+GD3lXbKp+MytoFLWv8zg4YT/LwJAfqan75Z1R6lLffRS49bIiq8jwE16 - * rTrUJ+kv8jKxMqc9B3vXkxpsS1M/+4E8bqgAmvpgAb8xcsvHsBd9ErdukQJBAKs2 - * j67W75BrPjBI34pQ1LEfp56IGWXOrq1kF8IbCjxv3+MYRT6Z6UJFkpRymNPNDjsC - * dgUYgITiGJHUGXuw3lMCQHEHqo9ZtXz92yFT+VhsNc29B8m/sqUJdtCcMd/jGpAF - * u6GHufjqIZBpQsk63wbwESAPZZ+kk1O1kS5GIRLX608= - * -----END RSA PRIVATE KEY----- - * - * Private-Key: (1024 bit) - * modulus: - * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: - * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: - * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: - * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: - * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: - * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: - * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: - * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: - * 30:05:40:2c:4f:ab:d9:74:89 - * publicExponent: 65537 (0x10001) - * privateExponent: - * 6e:a7:1b:83:51:35:9a:44:7d:f6:e3:89:a0:d7:90: - * 60:a1:4e:27:21:a2:89:74:cc:9d:75:75:4e:c7:82: - * e3:e3:c3:7d:00:54:ec:36:b1:df:91:9c:7a:c0:62: - * 0a:d6:a9:22:91:4a:29:2e:43:fa:8c:d8:e9:be:d9: - * 4f:ca:23:c6:e4:3f:b8:72:cf:02:fc:f4:58:34:77: - * 76:ce:22:44:5f:2d:ca:ee:f5:43:56:47:71:0b:09: - * 6b:5e:f2:c8:ee:d4:6e:44:92:2a:7f:cc:a7:d4:5b: - * fb:f7:4a:a9:fb:54:18:d5:d5:14:ba:a0:1c:13:b3: - * 37:6b:37:59:ed:db:6d:b1 - * prime1: - * 00:d8:04:f2:8e:83:78:64:68:61:e8:3a:1a:47:2a: - * ab:50:e8:45:64:95:d8:a1:1b:fd:e2:e1:67:a3:46: - * 89:de:95:73:7e:1d:18:75:2a:b0:76:1c:1c:74:33: - * c0:ff:a8:0c:cf:d6:2d:eb:35:29:52:1d:ea:f8:e7: - * d6:11:4c:99:c7 - * prime2: - * 00:c4:55:ff:b1:56:12:9f:4e:c1:1e:ff:59:86:7e: - * 97:5d:cb:7f:0a:3e:37:cf:fb:4a:35:bc:e5:35:b7: - * 31:a9:0c:10:7a:bc:37:20:7e:75:f1:41:f6:60:e0: - * 3e:18:3d:e5:5d:b2:a9:f8:cc:ad:a0:52:d6:bf:cc: - * e0:e1:84:ff:2f - * exponent1: - * 7e:a6:a7:ef:96:75:47:a9:4b:7d:f4:52:e3:d6:c8: - * 8a:af:23:c0:4d:7a:ad:3a:d4:27:e9:2f:f2:32:b1: - * 32:a7:3d:07:7b:d7:93:1a:6c:4b:53:3f:fb:81:3c: - * 6e:a8:00:9a:fa:60:01:bf:31:72:cb:c7:b0:17:7d: - * 12:b7:6e:91 - * exponent2: - * 00:ab:36:8f:ae:d6:ef:90:6b:3e:30:48:df:8a:50: - * d4:b1:1f:a7:9e:88:19:65:ce:ae:ad:64:17:c2:1b: - * 0a:3c:6f:df:e3:18:45:3e:99:e9:42:45:92:94:72: - * 98:d3:cd:0e:3b:02:76:05:18:80:84:e2:18:91:d4: - * 19:7b:b0:de:53 - * coefficient: - * 71:07:aa:8f:59:b5:7c:fd:db:21:53:f9:58:6c:35: - * cd:bd:07:c9:bf:b2:a5:09:76:d0:9c:31:df:e3:1a: - * 90:05:bb:a1:87:b9:f8:ea:21:90:69:42:c9:3a:df: - * 06:f0:11:20:0f:65:9f:a4:93:53:b5:91:2e:46:21: - * 12:d7:eb:4f - * - * - * server certificate: - * Data: - * Version: 3 (0x2) - * Serial Number: 7 (0x7) - * Signature Algorithm: md5WithRSAEncryption - * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org - * Validity - * Not Before: Dec 8 03:27:57 2008 GMT - * Not After : Aug 25 03:27:57 2028 GMT - * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Server, CN=localhost - * Subject Public Key Info: - * Public Key Algorithm: rsaEncryption - * RSA Public Key: (1024 bit) - * Modulus (1024 bit): - * 00:a5:ac:5b:1c:37:a2:dd:99:89:2d:b2:79:b8:8f: - * d5:48:a5:e7:1c:84:17:8d:69:9c:c6:ac:6d:f9:f2: - * 1d:1f:39:19:da:d3:72:1e:6e:ec:44:cc:70:a4:dc: - * ba:00:30:f6:a0:4f:3d:54:7a:61:6a:cc:57:d0:0a: - * 7f:95:28:18:3f:9a:d9:94:f2:1b:c8:24:88:7e:fe: - * 9d:0f:3d:fb:57:53:08:b3:20:33:d4:3f:17:47:14: - * d1:cd:ea:08:d8:0e:75:4e:af:be:cc:d2:ec:af:a9: - * 7a:49:df:c2:d9:ac:b8:24:40:90:a6:03:56:2a:d0: - * 30:05:40:2c:4f:ab:d9:74:89 - * Exponent: 65537 (0x10001) - * X509v3 extensions: - * X509v3 Basic Constraints: - * CA:FALSE - * X509v3 Key Usage: - * Digital Signature, Non Repudiation, Key Encipherment - * X509v3 Subject Key Identifier: - * ED:6E:DB:F4:B5:56:C8:FB:1A:06:61:3F:0F:08:BB:A6:04:D8:16:54 - * X509v3 Authority Key Identifier: - * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 - * - * X509v3 Subject Alternative Name: critical - * IP Address:127.0.0.1 - * Signature Algorithm: md5WithRSAEncryption - * - * -----BEGIN CERTIFICATE----- - * MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET - * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK - * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ - * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp - * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD - * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3 - * ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6 - * YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS - * 7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw - * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV - * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB - * MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva - * cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h - * pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun - * nZif - * -----END CERTIFICATE----- - * - * - * TLS client certificate: - * client private key: - * ----BEGIN RSA PRIVATE KEY----- - * Proc-Type: 4,ENCRYPTED - * DEK-Info: DES-EDE3-CBC,FA2A435CD35A9390 - * - * Z+Y2uaETbsUWIyJUyVu1UV2G4rgFYJyACZT6Tp1KjRtxflSh2kXkJ9MpuXMXA0V4 - * Yy3fDzPqCL9NJmQAYRlAx/W/+j4F5EyMWDIx8fUxzONRZyoiwF7jLm+KscAfv6Pf - * q7ItWOdj3z7IYrwlB8YIGd3F2cDKT3S+lYRk7rKb/qT7itbuHnY4Ardh3yl+MZak - * jBp+ELUlRsUqSr1V0LoM+0rCCykarpyfhpxEcqsrl0v9Cyi5uhU50/oKv5zql3SH - * l2ImgDjp3batAs8+Bd4NF2aqi0a7Hy44JUHxRm4caZryU/i/D9N1MbuM6882HLat - * 5N0G+NaIUfywa8mjwq2D5aiit18HqKA6XeRRYeJ5Dvu9DCO4GeFSwcUFIBMI0L46 - * 7s114+oDodg57pMgITi+04vmUxvqlN9aiyd7f5Fgd7PeHGeOdbMz1NaJLJaPI9++ - * NakK8eK9iwT/Gdq0Uap5/CHW7vCT5PO+h3HY0STH0lWStXhdWnFO04zTdywsbSp+ - * DLpHeFT66shfeUlxR0PsCbG9vPRt/QmGLeYQZITppWo/ylSq4j+pRIuXvuWHdBRN - * rTZ8QF4Y7AxQUXVz1j1++s6ZMHTzaK2i9HrhmDs1MbJl+QwWre3Xpv3LvTVz3k5U - * wX8kuY1m3STt71QCaRWENq5sRaMImLxZbxc/ivFl9RAzUqo4NCxLod/QgA4iLqtO - * ztnlpzwlC/F8HbQ1oqYWwnZAPhzU/cULtstl+Yrws2c2atO323LbPXZqbASySgig - * sNpFXQMObdfP6LN23bY+1SvtK7V4NUTNhpdIc6INQAQ= - * -----END RSA PRIVATE KEY----- - * - * -----BEGIN RSA PRIVATE KEY----- - * MIICWwIBAAKBgQC78EA2rCZUTvSjWgAvaSFvuXo6k+yi9uGOx2PYLxIwmS6w8o/4 - * Jy0keCiE9wG/jUR53TvSVfPOPLJbIX3v/TNKsaP/xsibuQ98QTWX+ds6BWAFFa9Z - * F5KjEK0WHOQHU6+odqJWKpLT+SjgeM9eH0irXBnd4WdDunWN9YKsQ5JEGwIDAQAB - * AoGAEbdqNj0wN85hnWyEi/ObJU8UyKTdL9eaF72QGfcF/fLSxfd3vurihIeXOkGW - * tpn4lIxYcVGM9CognhqgJpl11jFTQzn1KqZ+NEJRKkCHA4hDabKJbSC9fXHvRwrf - * BsFpZqgiNxp3HseUTiwnaUVeyPgMt/jAj5nB5Sib+UyUxrECQQDnNQBiF2aifEg6 - * zbJOOC7he5CHAdkFxSxWVFVHL6EfXfqdLVkUohMbgZv+XxyIeU2biOExSg49Kds3 - * FOKgTau1AkEA0Bd1haj6QuCo8I0AXm2WO+MMTZMTvtHD/bGjKNM+fT4I8rKYnQRX - * 1acHdqS9Xx2rNJqZgkMmpESIdPR2fc4yjwJALFeM6EMmqvj8/VIf5UJ/Mz14fXwM - * PEARfckUxd9LnnFutCBTWlKvKXJVEZb6KO5ixPaegc57Jp3Vbh3yTN44lQJADD/1 - * SSMDaIB1MYP7a5Oj7m6VQNPRq8AJe5vDcRnOae0G9dKRrVyeFxO4GsHj6/+BHp2j - * P8nYMn9eURQ7DXjf/QJAAQzMlWnKGSO8pyTDtnQx3hRMoUkOEhmNq4bQhLkYqtnY - * FcqpUQ2qMjW+NiNWk5HnTrMS3L9EdJobMUzaNZLy4w== - * -----END RSA PRIVATE KEY----- - * - * Private-Key: (1024 bit) - * modulus: - * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: - * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: - * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: - * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: - * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: - * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: - * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: - * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: - * 75:8d:f5:82:ac:43:92:44:1b - * publicExponent: 65537 (0x10001) - * privateExponent: - * 11:b7:6a:36:3d:30:37:ce:61:9d:6c:84:8b:f3:9b: - * 25:4f:14:c8:a4:dd:2f:d7:9a:17:bd:90:19:f7:05: - * fd:f2:d2:c5:f7:77:be:ea:e2:84:87:97:3a:41:96: - * b6:99:f8:94:8c:58:71:51:8c:f4:2a:20:9e:1a:a0: - * 26:99:75:d6:31:53:43:39:f5:2a:a6:7e:34:42:51: - * 2a:40:87:03:88:43:69:b2:89:6d:20:bd:7d:71:ef: - * 47:0a:df:06:c1:69:66:a8:22:37:1a:77:1e:c7:94: - * 4e:2c:27:69:45:5e:c8:f8:0c:b7:f8:c0:8f:99:c1: - * e5:28:9b:f9:4c:94:c6:b1 - * prime1: - * 00:e7:35:00:62:17:66:a2:7c:48:3a:cd:b2:4e:38: - * 2e:e1:7b:90:87:01:d9:05:c5:2c:56:54:55:47:2f: - * a1:1f:5d:fa:9d:2d:59:14:a2:13:1b:81:9b:fe:5f: - * 1c:88:79:4d:9b:88:e1:31:4a:0e:3d:29:db:37:14: - * e2:a0:4d:ab:b5 - * prime2: - * 00:d0:17:75:85:a8:fa:42:e0:a8:f0:8d:00:5e:6d: - * 96:3b:e3:0c:4d:93:13:be:d1:c3:fd:b1:a3:28:d3: - * 3e:7d:3e:08:f2:b2:98:9d:04:57:d5:a7:07:76:a4: - * bd:5f:1d:ab:34:9a:99:82:43:26:a4:44:88:74:f4: - * 76:7d:ce:32:8f - * exponent1: - * 2c:57:8c:e8:43:26:aa:f8:fc:fd:52:1f:e5:42:7f: - * 33:3d:78:7d:7c:0c:3c:40:11:7d:c9:14:c5:df:4b: - * 9e:71:6e:b4:20:53:5a:52:af:29:72:55:11:96:fa: - * 28:ee:62:c4:f6:9e:81:ce:7b:26:9d:d5:6e:1d:f2: - * 4c:de:38:95 - * exponent2: - * 0c:3f:f5:49:23:03:68:80:75:31:83:fb:6b:93:a3: - * ee:6e:95:40:d3:d1:ab:c0:09:7b:9b:c3:71:19:ce: - * 69:ed:06:f5:d2:91:ad:5c:9e:17:13:b8:1a:c1:e3: - * eb:ff:81:1e:9d:a3:3f:c9:d8:32:7f:5e:51:14:3b: - * 0d:78:df:fd - * coefficient: - * 01:0c:cc:95:69:ca:19:23:bc:a7:24:c3:b6:74:31: - * de:14:4c:a1:49:0e:12:19:8d:ab:86:d0:84:b9:18: - * aa:d9:d8:15:ca:a9:51:0d:aa:32:35:be:36:23:56: - * 93:91:e7:4e:b3:12:dc:bf:44:74:9a:1b:31:4c:da: - * 35:92:f2:e3 - * - * client certificate: - * Data: - * Version: 3 (0x2) - * Serial Number: 6 (0x6) - * Signature Algorithm: md5WithRSAEncryption - * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org - * Validity - * Not Before: Dec 8 03:27:34 2008 GMT - * Not After : Aug 25 03:27:34 2028 GMT - * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org, OU=SSL-Client, CN=localhost - * Subject Public Key Info: - * Public Key Algorithm: rsaEncryption - * RSA Public Key: (1024 bit) - * Modulus (1024 bit): - * 00:bb:f0:40:36:ac:26:54:4e:f4:a3:5a:00:2f:69: - * 21:6f:b9:7a:3a:93:ec:a2:f6:e1:8e:c7:63:d8:2f: - * 12:30:99:2e:b0:f2:8f:f8:27:2d:24:78:28:84:f7: - * 01:bf:8d:44:79:dd:3b:d2:55:f3:ce:3c:b2:5b:21: - * 7d:ef:fd:33:4a:b1:a3:ff:c6:c8:9b:b9:0f:7c:41: - * 35:97:f9:db:3a:05:60:05:15:af:59:17:92:a3:10: - * ad:16:1c:e4:07:53:af:a8:76:a2:56:2a:92:d3:f9: - * 28:e0:78:cf:5e:1f:48:ab:5c:19:dd:e1:67:43:ba: - * 75:8d:f5:82:ac:43:92:44:1b - * Exponent: 65537 (0x10001) - * X509v3 extensions: - * X509v3 Basic Constraints: - * CA:FALSE - * X509v3 Key Usage: - * Digital Signature, Non Repudiation, Key Encipherment - * X509v3 Subject Key Identifier: - * CD:BB:C8:85:AA:91:BD:FD:1D:BE:CD:67:7C:FF:B3:E9:4C:A8:22:E6 - * X509v3 Authority Key Identifier: - * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 - * - * X509v3 Subject Alternative Name: critical - * IP Address:127.0.0.1 - * Signature Algorithm: md5WithRSAEncryption - * - * -----BEGIN CERTIFICATE----- - * MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET - * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK - * EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ - * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp - * dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD - * VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas - * JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV - * 8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq - * ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw - * CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV - * HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB - * MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx - * HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP - * i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC - * I9aw - * -----END CERTIFICATE----- - * - * - * - * Trusted CA certificate: - * Certificate: - * Data: - * Version: 3 (0x2) - * Serial Number: 0 (0x0) - * Signature Algorithm: md5WithRSAEncryption - * Issuer: C=US, ST=Some-State, L=Some-City, O=Some-Org - * Validity - * Not Before: Dec 8 02:43:36 2008 GMT - * Not After : Aug 25 02:43:36 2028 GMT - * Subject: C=US, ST=Some-State, L=Some-City, O=Some-Org - * Subject Public Key Info: - * Public Key Algorithm: rsaEncryption - * RSA Public Key: (1024 bit) - * Modulus (1024 bit): - * 00:cb:c4:38:20:07:be:88:a7:93:b0:a1:43:51:2d: - * d7:8e:85:af:54:dd:ad:a2:7b:23:5b:cf:99:13:53: - * 99:45:7d:ee:6d:ba:2d:bf:e3:ad:6e:3d:9f:1a:f9: - * 03:97:e0:17:55:ae:11:26:57:de:01:29:8e:05:3f: - * 21:f7:e7:36:e8:2e:37:d7:48:ac:53:d6:60:0e:c7: - * 50:6d:f6:c5:85:f7:8b:a6:c5:91:35:72:3c:94:ee: - * f1:17:f0:71:e3:ec:1b:ce:ca:4e:40:42:b0:6d:ee: - * 6a:0e:d6:e5:ad:3c:0f:c9:ba:82:4f:78:f8:89:97: - * 89:2a:95:12:4c:d8:09:2a:e9 - * Exponent: 65537 (0x10001) - * X509v3 extensions: - * X509v3 Subject Key Identifier: - * FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 - * X509v3 Authority Key Identifier: - * keyid:FA:B9:51:BF:4C:E7:D9:86:98:33:F9:E7:CB:1E:F1:33:49:F7:A8:14 - * DirName:/C=US/ST=Some-State/L=Some-City/O=Some-Org - * serial:00 - * - * X509v3 Basic Constraints: - * CA:TRUE - * Signature Algorithm: md5WithRSAEncryption - * - * -----BEGIN CERTIFICATE----- - * MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET - * MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK - * EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ - * BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp - * dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB - * gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX - * 4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj - * 7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G - * A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ - * hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt - * U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw - * DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA - * ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ - * LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P - * 6Mvf0r1PNTY2hwTJLJmKtg== - * -----END CERTIFICATE--- - */ +import jdk.test.lib.security.CertificateBuilder; +import jdk.test.lib.security.CertificateBuilder.KeyUsage; +import sun.security.x509.AuthorityKeyIdentifierExtension; +import sun.security.x509.GeneralName; +import sun.security.x509.GeneralNames; +import sun.security.x509.KeyIdentifier; +import sun.security.x509.SerialNumber; +import sun.security.x509.X500Name; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLServerSocket; +import javax.net.ssl.SSLServerSocketFactory; +import javax.net.ssl.SSLSocket; +import javax.net.ssl.TrustManagerFactory; public class IPIdentities { - static Map cookies; - ServerSocket ss; /* * ============================================================= @@ -421,208 +83,14 @@ */ static boolean separateServerThread = true; - /* - * Where do we find the keystores? - */ - static String trusedCertStr = - "-----BEGIN CERTIFICATE-----\n" + - "MIICrDCCAhWgAwIBAgIBADANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + - "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + - "EwhTb21lLU9yZzAeFw0wODEyMDgwMjQzMzZaFw0yODA4MjUwMjQzMzZaMEkxCzAJ\n" + - "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + - "dHkxETAPBgNVBAoTCFNvbWUtT3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB\n" + - "gQDLxDggB76Ip5OwoUNRLdeOha9U3a2ieyNbz5kTU5lFfe5tui2/461uPZ8a+QOX\n" + - "4BdVrhEmV94BKY4FPyH35zboLjfXSKxT1mAOx1Bt9sWF94umxZE1cjyU7vEX8HHj\n" + - "7BvOyk5AQrBt7moO1uWtPA/JuoJPePiJl4kqlRJM2Akq6QIDAQABo4GjMIGgMB0G\n" + - "A1UdDgQWBBT6uVG/TOfZhpgz+efLHvEzSfeoFDBxBgNVHSMEajBogBT6uVG/TOfZ\n" + - "hpgz+efLHvEzSfeoFKFNpEswSTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUt\n" + - "U3RhdGUxEjAQBgNVBAcTCVNvbWUtQ2l0eTERMA8GA1UEChMIU29tZS1PcmeCAQAw\n" + - "DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBcIm534U123Hz+rtyYO5uA\n" + - "ofd81G6FnTfEAV8Kw9fGyyEbQZclBv34A9JsFKeMvU4OFIaixD7nLZ/NZ+IWbhmZ\n" + - "LovmJXyCkOufea73pNiZ+f/4/ScZaIlM/PRycQSqbFNd4j9Wott+08qxHPLpsf3P\n" + - "6Mvf0r1PNTY2hwTJLJmKtg==\n" + - "-----END CERTIFICATE-----"; - - static String serverCertStr = - "-----BEGIN CERTIFICATE-----\n" + - "MIICnzCCAgigAwIBAgIBBzANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + - "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + - "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3NTdaFw0yODA4MjUwMzI3NTdaMHIxCzAJ\n" + - "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + - "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtU2VydmVyMRIwEAYD\n" + - "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWsWxw3\n" + - "ot2ZiS2yebiP1Uil5xyEF41pnMasbfnyHR85GdrTch5u7ETMcKTcugAw9qBPPVR6\n" + - "YWrMV9AKf5UoGD+a2ZTyG8gkiH7+nQ89+1dTCLMgM9Q/F0cU0c3qCNgOdU6vvszS\n" + - "7K+peknfwtmsuCRAkKYDVirQMAVALE+r2XSJAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" + - "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTtbtv0tVbI+xoGYT8PCLumBNgWVDAfBgNV\n" + - "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" + - "MA0GCSqGSIb3DQEBBAUAA4GBAFJjItCtCBZcjD69wdqfIbKmRFa6eJAjR6LcoDva\n" + - "cKC/sDOLelpspiZ66Zb0Xdv5qQ7QrfOXt3K8QqJKRMdZLF9WfUfy0gJDM32ub91h\n" + - "pu+TmcGPs+6RdrAQcuvU1ZDV9X8SMj7BtKaim4d5sqFw1npncKiA5xFn8vOYwdun\n" + - "nZif\n" + - "-----END CERTIFICATE-----"; - - static String clientCertStr = - "-----BEGIN CERTIFICATE-----\n" + - "MIICnzCCAgigAwIBAgIBBjANBgkqhkiG9w0BAQQFADBJMQswCQYDVQQGEwJVUzET\n" + - "MBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEBxMJU29tZS1DaXR5MREwDwYDVQQK\n" + - "EwhTb21lLU9yZzAeFw0wODEyMDgwMzI3MzRaFw0yODA4MjUwMzI3MzRaMHIxCzAJ\n" + - "BgNVBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQHEwlTb21lLUNp\n" + - "dHkxETAPBgNVBAoTCFNvbWUtT3JnMRMwEQYDVQQLEwpTU0wtQ2xpZW50MRIwEAYD\n" + - "VQQDEwlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALvwQDas\n" + - "JlRO9KNaAC9pIW+5ejqT7KL24Y7HY9gvEjCZLrDyj/gnLSR4KIT3Ab+NRHndO9JV\n" + - "8848slshfe/9M0qxo//GyJu5D3xBNZf52zoFYAUVr1kXkqMQrRYc5AdTr6h2olYq\n" + - "ktP5KOB4z14fSKtcGd3hZ0O6dY31gqxDkkQbAgMBAAGjbjBsMAkGA1UdEwQCMAAw\n" + - "CwYDVR0PBAQDAgXgMB0GA1UdDgQWBBTNu8iFqpG9/R2+zWd8/7PpTKgi5jAfBgNV\n" + - "HSMEGDAWgBT6uVG/TOfZhpgz+efLHvEzSfeoFDASBgNVHREBAf8ECDAGhwR/AAAB\n" + - "MA0GCSqGSIb3DQEBBAUAA4GBACjj9PS+W6XOF7toFMwMOv/AemZeBOpcEF1Ei1Hx\n" + - "HjvB6EOHkMY8tFm5OPzkiWiK3+s3awpSW0jWdzMYwrQJ3/klMsPDpI7PEuirqwHP\n" + - "i5Wyl/vk7jmfWVcBO9MVhPUo4BYl4vS9aj6JA5QbkbkB95LOgT/BowY0WmHeVsXC\n" + - "I9aw\n" + - "-----END CERTIFICATE-----"; - - - static byte serverPrivateExponent[] = { - (byte)0x6e, (byte)0xa7, (byte)0x1b, (byte)0x83, - (byte)0x51, (byte)0x35, (byte)0x9a, (byte)0x44, - (byte)0x7d, (byte)0xf6, (byte)0xe3, (byte)0x89, - (byte)0xa0, (byte)0xd7, (byte)0x90, (byte)0x60, - (byte)0xa1, (byte)0x4e, (byte)0x27, (byte)0x21, - (byte)0xa2, (byte)0x89, (byte)0x74, (byte)0xcc, - (byte)0x9d, (byte)0x75, (byte)0x75, (byte)0x4e, - (byte)0xc7, (byte)0x82, (byte)0xe3, (byte)0xe3, - (byte)0xc3, (byte)0x7d, (byte)0x00, (byte)0x54, - (byte)0xec, (byte)0x36, (byte)0xb1, (byte)0xdf, - (byte)0x91, (byte)0x9c, (byte)0x7a, (byte)0xc0, - (byte)0x62, (byte)0x0a, (byte)0xd6, (byte)0xa9, - (byte)0x22, (byte)0x91, (byte)0x4a, (byte)0x29, - (byte)0x2e, (byte)0x43, (byte)0xfa, (byte)0x8c, - (byte)0xd8, (byte)0xe9, (byte)0xbe, (byte)0xd9, - (byte)0x4f, (byte)0xca, (byte)0x23, (byte)0xc6, - (byte)0xe4, (byte)0x3f, (byte)0xb8, (byte)0x72, - (byte)0xcf, (byte)0x02, (byte)0xfc, (byte)0xf4, - (byte)0x58, (byte)0x34, (byte)0x77, (byte)0x76, - (byte)0xce, (byte)0x22, (byte)0x44, (byte)0x5f, - (byte)0x2d, (byte)0xca, (byte)0xee, (byte)0xf5, - (byte)0x43, (byte)0x56, (byte)0x47, (byte)0x71, - (byte)0x0b, (byte)0x09, (byte)0x6b, (byte)0x5e, - (byte)0xf2, (byte)0xc8, (byte)0xee, (byte)0xd4, - (byte)0x6e, (byte)0x44, (byte)0x92, (byte)0x2a, - (byte)0x7f, (byte)0xcc, (byte)0xa7, (byte)0xd4, - (byte)0x5b, (byte)0xfb, (byte)0xf7, (byte)0x4a, - (byte)0xa9, (byte)0xfb, (byte)0x54, (byte)0x18, - (byte)0xd5, (byte)0xd5, (byte)0x14, (byte)0xba, - (byte)0xa0, (byte)0x1c, (byte)0x13, (byte)0xb3, - (byte)0x37, (byte)0x6b, (byte)0x37, (byte)0x59, - (byte)0xed, (byte)0xdb, (byte)0x6d, (byte)0xb1 - }; - - static byte serverModulus[] = { - (byte)0x00, - (byte)0xa5, (byte)0xac, (byte)0x5b, (byte)0x1c, - (byte)0x37, (byte)0xa2, (byte)0xdd, (byte)0x99, - (byte)0x89, (byte)0x2d, (byte)0xb2, (byte)0x79, - (byte)0xb8, (byte)0x8f, (byte)0xd5, (byte)0x48, - (byte)0xa5, (byte)0xe7, (byte)0x1c, (byte)0x84, - (byte)0x17, (byte)0x8d, (byte)0x69, (byte)0x9c, - (byte)0xc6, (byte)0xac, (byte)0x6d, (byte)0xf9, - (byte)0xf2, (byte)0x1d, (byte)0x1f, (byte)0x39, - (byte)0x19, (byte)0xda, (byte)0xd3, (byte)0x72, - (byte)0x1e, (byte)0x6e, (byte)0xec, (byte)0x44, - (byte)0xcc, (byte)0x70, (byte)0xa4, (byte)0xdc, - (byte)0xba, (byte)0x00, (byte)0x30, (byte)0xf6, - (byte)0xa0, (byte)0x4f, (byte)0x3d, (byte)0x54, - (byte)0x7a, (byte)0x61, (byte)0x6a, (byte)0xcc, - (byte)0x57, (byte)0xd0, (byte)0x0a, (byte)0x7f, - (byte)0x95, (byte)0x28, (byte)0x18, (byte)0x3f, - (byte)0x9a, (byte)0xd9, (byte)0x94, (byte)0xf2, - (byte)0x1b, (byte)0xc8, (byte)0x24, (byte)0x88, - (byte)0x7e, (byte)0xfe, (byte)0x9d, (byte)0x0f, - (byte)0x3d, (byte)0xfb, (byte)0x57, (byte)0x53, - (byte)0x08, (byte)0xb3, (byte)0x20, (byte)0x33, - (byte)0xd4, (byte)0x3f, (byte)0x17, (byte)0x47, - (byte)0x14, (byte)0xd1, (byte)0xcd, (byte)0xea, - (byte)0x08, (byte)0xd8, (byte)0x0e, (byte)0x75, - (byte)0x4e, (byte)0xaf, (byte)0xbe, (byte)0xcc, - (byte)0xd2, (byte)0xec, (byte)0xaf, (byte)0xa9, - (byte)0x7a, (byte)0x49, (byte)0xdf, (byte)0xc2, - (byte)0xd9, (byte)0xac, (byte)0xb8, (byte)0x24, - (byte)0x40, (byte)0x90, (byte)0xa6, (byte)0x03, - (byte)0x56, (byte)0x2a, (byte)0xd0, (byte)0x30, - (byte)0x05, (byte)0x40, (byte)0x2c, (byte)0x4f, - (byte)0xab, (byte)0xd9, (byte)0x74, (byte)0x89 - }; - - static byte clientPrivateExponent[] = { - (byte)0x11, (byte)0xb7, (byte)0x6a, (byte)0x36, - (byte)0x3d, (byte)0x30, (byte)0x37, (byte)0xce, - (byte)0x61, (byte)0x9d, (byte)0x6c, (byte)0x84, - (byte)0x8b, (byte)0xf3, (byte)0x9b, (byte)0x25, - (byte)0x4f, (byte)0x14, (byte)0xc8, (byte)0xa4, - (byte)0xdd, (byte)0x2f, (byte)0xd7, (byte)0x9a, - (byte)0x17, (byte)0xbd, (byte)0x90, (byte)0x19, - (byte)0xf7, (byte)0x05, (byte)0xfd, (byte)0xf2, - (byte)0xd2, (byte)0xc5, (byte)0xf7, (byte)0x77, - (byte)0xbe, (byte)0xea, (byte)0xe2, (byte)0x84, - (byte)0x87, (byte)0x97, (byte)0x3a, (byte)0x41, - (byte)0x96, (byte)0xb6, (byte)0x99, (byte)0xf8, - (byte)0x94, (byte)0x8c, (byte)0x58, (byte)0x71, - (byte)0x51, (byte)0x8c, (byte)0xf4, (byte)0x2a, - (byte)0x20, (byte)0x9e, (byte)0x1a, (byte)0xa0, - (byte)0x26, (byte)0x99, (byte)0x75, (byte)0xd6, - (byte)0x31, (byte)0x53, (byte)0x43, (byte)0x39, - (byte)0xf5, (byte)0x2a, (byte)0xa6, (byte)0x7e, - (byte)0x34, (byte)0x42, (byte)0x51, (byte)0x2a, - (byte)0x40, (byte)0x87, (byte)0x03, (byte)0x88, - (byte)0x43, (byte)0x69, (byte)0xb2, (byte)0x89, - (byte)0x6d, (byte)0x20, (byte)0xbd, (byte)0x7d, - (byte)0x71, (byte)0xef, (byte)0x47, (byte)0x0a, - (byte)0xdf, (byte)0x06, (byte)0xc1, (byte)0x69, - (byte)0x66, (byte)0xa8, (byte)0x22, (byte)0x37, - (byte)0x1a, (byte)0x77, (byte)0x1e, (byte)0xc7, - (byte)0x94, (byte)0x4e, (byte)0x2c, (byte)0x27, - (byte)0x69, (byte)0x45, (byte)0x5e, (byte)0xc8, - (byte)0xf8, (byte)0x0c, (byte)0xb7, (byte)0xf8, - (byte)0xc0, (byte)0x8f, (byte)0x99, (byte)0xc1, - (byte)0xe5, (byte)0x28, (byte)0x9b, (byte)0xf9, - (byte)0x4c, (byte)0x94, (byte)0xc6, (byte)0xb1 - }; - - static byte clientModulus[] = { - (byte)0x00, - (byte)0xbb, (byte)0xf0, (byte)0x40, (byte)0x36, - (byte)0xac, (byte)0x26, (byte)0x54, (byte)0x4e, - (byte)0xf4, (byte)0xa3, (byte)0x5a, (byte)0x00, - (byte)0x2f, (byte)0x69, (byte)0x21, (byte)0x6f, - (byte)0xb9, (byte)0x7a, (byte)0x3a, (byte)0x93, - (byte)0xec, (byte)0xa2, (byte)0xf6, (byte)0xe1, - (byte)0x8e, (byte)0xc7, (byte)0x63, (byte)0xd8, - (byte)0x2f, (byte)0x12, (byte)0x30, (byte)0x99, - (byte)0x2e, (byte)0xb0, (byte)0xf2, (byte)0x8f, - (byte)0xf8, (byte)0x27, (byte)0x2d, (byte)0x24, - (byte)0x78, (byte)0x28, (byte)0x84, (byte)0xf7, - (byte)0x01, (byte)0xbf, (byte)0x8d, (byte)0x44, - (byte)0x79, (byte)0xdd, (byte)0x3b, (byte)0xd2, - (byte)0x55, (byte)0xf3, (byte)0xce, (byte)0x3c, - (byte)0xb2, (byte)0x5b, (byte)0x21, (byte)0x7d, - (byte)0xef, (byte)0xfd, (byte)0x33, (byte)0x4a, - (byte)0xb1, (byte)0xa3, (byte)0xff, (byte)0xc6, - (byte)0xc8, (byte)0x9b, (byte)0xb9, (byte)0x0f, - (byte)0x7c, (byte)0x41, (byte)0x35, (byte)0x97, - (byte)0xf9, (byte)0xdb, (byte)0x3a, (byte)0x05, - (byte)0x60, (byte)0x05, (byte)0x15, (byte)0xaf, - (byte)0x59, (byte)0x17, (byte)0x92, (byte)0xa3, - (byte)0x10, (byte)0xad, (byte)0x16, (byte)0x1c, - (byte)0xe4, (byte)0x07, (byte)0x53, (byte)0xaf, - (byte)0xa8, (byte)0x76, (byte)0xa2, (byte)0x56, - (byte)0x2a, (byte)0x92, (byte)0xd3, (byte)0xf9, - (byte)0x28, (byte)0xe0, (byte)0x78, (byte)0xcf, - (byte)0x5e, (byte)0x1f, (byte)0x48, (byte)0xab, - (byte)0x5c, (byte)0x19, (byte)0xdd, (byte)0xe1, - (byte)0x67, (byte)0x43, (byte)0xba, (byte)0x75, - (byte)0x8d, (byte)0xf5, (byte)0x82, (byte)0xac, - (byte)0x43, (byte)0x92, (byte)0x44, (byte)0x1b - }; + static X509Certificate trustedCert; + + static X509Certificate serverCert; + + static X509Certificate clientCert; + + static KeyPair serverKeys; + static KeyPair clientKeys; static char passphrase[] = "passphrase".toCharArray(); @@ -639,7 +107,7 @@ /* * Turn on SSL debugging? */ - static boolean debug = false; + static boolean debug = Boolean.getBoolean("test.debug"); private SSLServerSocket sslServerSocket = null; @@ -650,8 +118,8 @@ * to avoid infinite hangs. */ void doServerSide() throws Exception { - SSLContext context = getSSLContext(trusedCertStr, serverCertStr, - serverModulus, serverPrivateExponent, passphrase); + SSLContext context = getSSLContext(trustedCert, serverCert, + serverKeys, passphrase); SSLServerSocketFactory sslssf = context.getServerSocketFactory(); // doClientSide() connects to the loopback address @@ -706,8 +174,8 @@ void doClientSide() throws Exception { SSLContext reservedSSLContext = SSLContext.getDefault(); try { - SSLContext context = getSSLContext(trusedCertStr, clientCertStr, - clientModulus, clientPrivateExponent, passphrase); + SSLContext context = getSSLContext(trustedCert, clientCert, + clientKeys, passphrase); SSLContext.setDefault(context); /* @@ -755,6 +223,65 @@ volatile Exception serverException = null; volatile Exception clientException = null; + private static X509Certificate createTrustedCert(KeyPair caKeys) throws Exception { + SecureRandom random = new SecureRandom(); + + KeyIdentifier kid = new KeyIdentifier(caKeys.getPublic()); + GeneralNames gns = new GeneralNames(); + GeneralName name = new GeneralName(new X500Name( + "O=Some-Org, L=Some-City, ST=Some-State, C=US")); + gns.add(name); + BigInteger serialNumber = BigInteger.valueOf(random.nextLong(1000000)+1); + return CertificateBuilder.newCertificateBuilder( + "O=Some-Org, L=Some-City, ST=Some-State, C=US", + caKeys.getPublic(), caKeys.getPublic()) + .setSerialNumber(serialNumber) + .addExtension(new AuthorityKeyIdentifierExtension(kid, gns, + new SerialNumber(serialNumber))) + .addBasicConstraintsExt(true, true, -1) + .setOneHourValidity() + .build(null, caKeys.getPrivate(), "MD5WithRSA"); + } + + private static void setupCertificates() throws Exception { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); + KeyPair caKeys = kpg.generateKeyPair(); + serverKeys = kpg.generateKeyPair(); + clientKeys = kpg.generateKeyPair(); + + trustedCert = createTrustedCert(caKeys); + if (debug) { + System.out.println("----------- Trusted Cert -----------"); + CertificateBuilder.printCertificate(trustedCert, System.out); + } + + serverCert = CertificateBuilder.newCertificateBuilder( + "O=Some-Org, L=Some-City, ST=Some-State, C=US", + serverKeys.getPublic(), caKeys.getPublic(), + KeyUsage.DIGITAL_SIGNATURE, KeyUsage.NONREPUDIATION, KeyUsage.KEY_ENCIPHERMENT) + .addBasicConstraintsExt(false, false, -1) + .addExtension(CertificateBuilder.createIPSubjectAltNameExt(true, "127.0.0.1")) + .setOneHourValidity() + .build(trustedCert, caKeys.getPrivate(), "MD5WithRSA"); + if (debug) { + System.out.println("----------- Server Cert -----------"); + CertificateBuilder.printCertificate(serverCert, System.out); + } + + clientCert = CertificateBuilder.newCertificateBuilder( + "CN=localhost, OU=SSL-Client, O=Some-Org, L=Some-City, ST=Some-State, C=US", + clientKeys.getPublic(), caKeys.getPublic(), + KeyUsage.DIGITAL_SIGNATURE, KeyUsage.NONREPUDIATION, KeyUsage.KEY_ENCIPHERMENT) + .addExtension(CertificateBuilder.createIPSubjectAltNameExt(true, "127.0.0.1")) + .addBasicConstraintsExt(false, false, -1) + .setOneHourValidity() + .build(trustedCert, caKeys.getPrivate(), "MD5WithRSA"); + if (debug) { + System.out.println("----------- Client Cert -----------"); + CertificateBuilder.printCertificate(clientCert, System.out); + } + } + public static void main(String args[]) throws Exception { // MD5 is used in this test case, don't disable MD5 algorithm. Security.setProperty("jdk.certpath.disabledAlgorithms", @@ -762,8 +289,11 @@ Security.setProperty("jdk.tls.disabledAlgorithms", "SSLv3, RC4, DH keySize < 768"); - if (debug) + if (debug) { System.setProperty("javax.net.debug", "all"); + } + + setupCertificates(); /* * Start the tests. @@ -855,45 +385,23 @@ } // get the ssl context - private static SSLContext getSSLContext(String trusedCertStr, - String keyCertStr, byte[] modulus, - byte[] privateExponent, char[] passphrase) throws Exception { - - // generate certificate from cert string - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - - ByteArrayInputStream is = - new ByteArrayInputStream(trusedCertStr.getBytes()); - Certificate trusedCert = cf.generateCertificate(is); - is.close(); + private static SSLContext getSSLContext(X509Certificate trustedCert, + X509Certificate keyCert, KeyPair key, char[] passphrase) throws Exception { // create a key store - KeyStore ks = KeyStore.getInstance("JKS"); + KeyStore ks = KeyStore.getInstance("PKCS12"); ks.load(null, null); // import the trused cert - ks.setCertificateEntry("RSA Export Signer", trusedCert); - - if (keyCertStr != null) { - // generate the private key. - RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec( - new BigInteger(modulus), - new BigInteger(privateExponent)); - KeyFactory kf = KeyFactory.getInstance("RSA"); - RSAPrivateKey priKey = - (RSAPrivateKey)kf.generatePrivate(priKeySpec); - - // generate certificate chain - is = new ByteArrayInputStream(keyCertStr.getBytes()); - Certificate keyCert = cf.generateCertificate(is); - is.close(); + ks.setCertificateEntry("RSA Export Signer", trustedCert); + if (keyCert != null) { Certificate[] chain = new Certificate[2]; chain[0] = keyCert; - chain[1] = trusedCert; + chain[1] = trustedCert; // import the key entry. - ks.setKeyEntry("Whatever", priKey, passphrase, chain); + ks.setKeyEntry("Whatever", key.getPrivate(), passphrase, chain); } // create SSL context @@ -902,7 +410,7 @@ SSLContext ctx = SSLContext.getInstance("TLSv1.2"); - if (keyCertStr != null) { + if (keyCert != null) { KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, passphrase); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/TEST.properties openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/TEST.properties --- openjdk-21-21.0.9+10/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/TEST.properties 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/net/www/protocol/https/HttpsURLConnection/TEST.properties 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,3 @@ +modules = \ + java.base/sun.security.util \ + java.base/sun.security.x509 diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/jgss/GssContextCleanup.java openjdk-21-21.0.10+7/test/jdk/sun/security/jgss/GssContextCleanup.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/jgss/GssContextCleanup.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/jgss/GssContextCleanup.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -59,4 +59,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/jgss/GssNameCleanup.java openjdk-21-21.0.10+7/test/jdk/sun/security/jgss/GssNameCleanup.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/jgss/GssNameCleanup.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/jgss/GssNameCleanup.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -66,4 +66,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/krb5/Krb5NameEquals.java openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/Krb5NameEquals.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/krb5/Krb5NameEquals.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/Krb5NameEquals.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,57 +22,65 @@ */ /* + * @test * @bug 4634392 - * @summary JDK code doesn't respect contract for equals and hashCode + * @summary Ensure the GSSName has the correct impl which respects + * the contract for equals and hashCode across different configurations. + * @library /test/lib * @author Andrew Fan + * + * @run main/othervm -Djava.security.krb5.realm=R -Djava.security.krb5.kdc=127.0.0.1 Krb5NameEquals + * @run main/othervm -Dsun.security.jgss.native=true Krb5NameEquals */ -import org.ietf.jgss.*; +import jtreg.SkippedException; +import org.ietf.jgss.GSSManager; +import org.ietf.jgss.GSSName; +import org.ietf.jgss.Oid; public class Krb5NameEquals { - private static String NAME_STR1 = "service@localhost"; - private static String NAME_STR2 = "service2@localhost"; + private static final String NAME_STR1 = "service@localhost"; + private static final String NAME_STR2 = "service2@localhost"; private static final Oid MECH; static { - Oid temp = null; try { - temp = new Oid("1.2.840.113554.1.2.2"); // KRB5 + MECH = new Oid("1.2.840.113554.1.2.2"); // KRB5 } catch (Exception e) { // should never happen + throw new RuntimeException("Exception initialising Oid", e); } - MECH = temp; } public static void main(String[] argv) throws Exception { - GSSManager mgr = GSSManager.getInstance(); + final GSSManager mgr = GSSManager.getInstance(); + + // Checking if native GSS is installed, throwing skip exception if it's not. + if (Boolean.getBoolean("sun.security.jgss.native")) { + final var mechs = mgr.getMechs(); + if (mechs == null || mechs.length == 0) { + throw new SkippedException("NativeGSS not supported"); + } + } - boolean result = true; // Create GSSName and check their equals(), hashCode() impl - GSSName name1 = mgr.createName(NAME_STR1, - GSSName.NT_HOSTBASED_SERVICE, MECH); - GSSName name2 = mgr.createName(NAME_STR2, - GSSName.NT_HOSTBASED_SERVICE, MECH); - GSSName name3 = mgr.createName(NAME_STR1, - GSSName.NT_HOSTBASED_SERVICE, MECH); - - if (!name1.equals(name1) || !name1.equals(name3) || - !name1.equals((Object) name1) || - !name1.equals((Object) name3)) { - System.out.println("Error: should be the same name"); - result = false; + final GSSName name1 = mgr.createName(NAME_STR1, + GSSName.NT_HOSTBASED_SERVICE, MECH); + final GSSName name2 = mgr.createName(NAME_STR2, + GSSName.NT_HOSTBASED_SERVICE, MECH); + final GSSName name3 = mgr.createName(NAME_STR1, + GSSName.NT_HOSTBASED_SERVICE, MECH); + + if (!name1.equals(name3) || !name1.equals((Object) name3)) { + throw new RuntimeException("Error: should be the same name"); } else if (name1.hashCode() != name3.hashCode()) { - System.out.println("Error: should have same hash"); - result = false; + throw new RuntimeException("Error: should have same hash"); } if (name1.equals(name2) || name1.equals((Object) name2)) { - System.out.println("Error: should be different names"); - result = false; + throw new RuntimeException("Error: should be different names"); } - if (result) { - System.out.println("Done"); - } else System.exit(1); + System.out.println("Done"); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/krb5/MicroTime.java openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/MicroTime.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/krb5/MicroTime.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/MicroTime.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,9 +44,10 @@ count++; } } - // We believe a nice KerberosTime can at least tell the - // difference of 100 musec. - if (count < 10000) { + // Before JDK-6882687, KerberosTime was measured in milliseconds. + // Now it's in microseconds. We should be able to record more than + // 1000 distinct KerberosTime values within one second. + if (count < 1001) { throw new Exception("What? only " + (1000000/count) + " musec precision?"); } diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/krb5/auto/SaslBasic.java openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/auto/SaslBasic.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/krb5/auto/SaslBasic.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/auto/SaslBasic.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,12 +32,11 @@ * @run main/othervm -Djdk.net.hosts.file=TestHosts SaslBasic unbound auth-conf * @run main/othervm -Djdk.net.hosts.file=TestHosts SaslBasic bound auth */ -import java.io.IOException; +import static jdk.test.lib.Asserts.assertEquals; + import java.util.Arrays; import java.util.HashMap; import javax.security.auth.callback.Callback; -import javax.security.auth.callback.CallbackHandler; -import javax.security.auth.callback.UnsupportedCallbackException; import javax.security.sasl.*; // The basic krb5 test skeleton you can copy from @@ -61,15 +60,12 @@ srvprops.put(Sasl.QOP, "auth,auth-int,auth-conf"); SaslServer ss = Sasl.createSaslServer("GSSAPI", "server", bound? name: null, srvprops, - new CallbackHandler() { - public void handle(Callback[] callbacks) - throws IOException, UnsupportedCallbackException { - for (Callback cb : callbacks) { - if (cb instanceof RealmCallback) { - ((RealmCallback) cb).setText(OneKDC.REALM); - } else if (cb instanceof AuthorizeCallback) { - ((AuthorizeCallback) cb).setAuthorized(true); - } + callbacks -> { + for (Callback cb : callbacks) { + if (cb instanceof RealmCallback) { + ((RealmCallback) cb).setText(OneKDC.REALM); + } else if (cb instanceof AuthorizeCallback) { + ((AuthorizeCallback) cb).setAuthorized(true); } } }); @@ -89,28 +85,85 @@ String boundName = (String)ss.getNegotiatedProperty( Sasl.BOUND_SERVER_NAME); if (!boundName.equals(name)) { - throw new Exception("Wrong bound server name"); + throw new RuntimeException("Wrong bound server name"); } } Object key = ss.getNegotiatedProperty( "com.sun.security.jgss.inquiretype.krb5_get_session_key"); if (key == null) { - throw new Exception("Extended negotiated property not read"); + throw new RuntimeException("Extended negotiated property not read"); } if (args[1].equals("auth")) { // 8170732. These are the maximum size bytes after jgss/krb5 wrap. if (lastClientToken[17] != 0 || lastClientToken[18] != 0 || lastClientToken[19] != 0) { - throw new Exception("maximum size for auth must be 0"); + throw new RuntimeException("maximum size for auth must be 0"); } + testWrapUnwrapNoSecLayer(sc, ss); } else { - byte[] hello = "hello".getBytes(); - token = sc.wrap(hello, 0, hello.length); - token = ss.unwrap(token, 0, token.length); - if (!Arrays.equals(hello, token)) { - throw new Exception("Message altered"); - } + testWrapUnwrapWithSecLayer(sc, ss); + } + } + + private static void testWrapUnwrapWithSecLayer(SaslClient sc, SaslServer ss) + throws SaslException { + byte[] token; + byte[] hello = "hello".getBytes(); + + // test client wrap and server unwrap + token = sc.wrap(hello, 0, hello.length); + token = ss.unwrap(token, 0, token.length); + + if (!Arrays.equals(hello, token)) { + throw new RuntimeException("Client message altered"); + } + + // test server wrap and client unwrap + token = ss.wrap(hello, 0, hello.length); + token = sc.unwrap(token, 0, token.length); + + if (!Arrays.equals(hello, token)) { + throw new RuntimeException("Server message altered"); + } + } + + private static void testWrapUnwrapNoSecLayer(SaslClient sc, SaslServer ss) + throws SaslException { + byte[] clntBuf = new byte[]{0, 1, 2, 3}; + byte[] srvBuf = new byte[]{10, 11, 12, 13}; + String expectedError = "No security layer negotiated"; + + try { + sc.wrap(clntBuf, 0, clntBuf.length); + throw new RuntimeException( + "client wrap should not be allowed w/no security layer"); + } catch (IllegalStateException e) { + assertEquals(expectedError, e.getMessage()); + } + + try { + ss.wrap(srvBuf, 0, srvBuf.length); + throw new RuntimeException( + "server wrap should not be allowed w/no security layer"); + } catch (IllegalStateException e) { + assertEquals(expectedError, e.getMessage()); + } + + try { + sc.unwrap(clntBuf, 0, clntBuf.length); + throw new RuntimeException( + "client unwrap should not be allowed w/no security layer"); + } catch (IllegalStateException e) { + assertEquals(expectedError, e.getMessage()); + } + + try { + ss.unwrap(srvBuf, 0, srvBuf.length); + throw new RuntimeException( + "server unwrap should not be allowed w/no security layer"); + } catch (IllegalStateException e) { + assertEquals(expectedError, e.getMessage()); } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/krb5/runNameEquals.sh openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/runNameEquals.sh --- openjdk-21-21.0.9+10/test/jdk/sun/security/krb5/runNameEquals.sh 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/krb5/runNameEquals.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,127 +0,0 @@ -# -# Copyright (c) 2009, 2024, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. -# -# This code 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 -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# @test -# @bug 6317711 6944847 8024046 -# @summary Ensure the GSSName has the correct impl which respects -# the contract for equals and hashCode across different configurations. - -# set a few environment variables so that the shell-script can run stand-alone -# in the source directory - -if [ "${TESTSRC}" = "" ] ; then - TESTSRC="." -fi - -if [ "${TESTCLASSES}" = "" ] ; then - TESTCLASSES="." -fi - -if [ "${TESTJAVA}" = "" ] ; then - echo "TESTJAVA not set. Test cannot execute." - echo "FAILED!!!" - exit 1 -fi - -if [ "${COMPILEJAVA}" = "" ]; then - COMPILEJAVA="${TESTJAVA}" -fi - -NATIVE=false - -# set platform-dependent variables -OS=`uname -s` -case "$OS" in - Linux | Darwin ) - PATHSEP=":" - FILESEP="/" - NATIVE=true - # Not all *nix has native GSS libs installed - krb5-config --libs 2> /dev/null - if [ $? != 0 ]; then - # Fedora has a different path - /usr/kerberos/bin/krb5-config --libs 2> /dev/null - if [ $? != 0 ]; then - NATIVE=false - fi - fi - ;; - AIX ) - PATHSEP=":" - FILESEP="/" - ;; - CYGWIN* ) - PATHSEP=";" - FILESEP="/" - ;; - Windows* ) - PATHSEP=";" - FILESEP="\\" - ;; - * ) - echo "Unrecognized system!" - exit 1; - ;; -esac - -TEST=Krb5NameEquals - -${COMPILEJAVA}${FILESEP}bin${FILESEP}javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} \ - -d ${TESTCLASSES}${FILESEP} \ - ${TESTSRC}${FILESEP}${TEST}.java - -EXIT_STATUS=0 - -if [ "${NATIVE}" = "true" ] ; then - echo "Testing native provider" - ${TESTJAVA}${FILESEP}bin${FILESEP}java ${TESTVMOPTS} ${TESTJAVAOPTS} \ - -classpath ${TESTCLASSES} \ - -Dsun.security.jgss.native=true \ - ${TEST} - if [ $? != 0 ] ; then - echo "Native provider fails" - EXIT_STATUS=1 - if [ "$OS" = "Linux" -a `arch` = "x86_64" ]; then - ${TESTJAVA}${FILESEP}bin${FILESEP}java -XshowSettings:properties -version 2> allprop - cat allprop | grep sun.arch.data.model | grep 32 - if [ "$?" = "0" ]; then - echo "Running 32-bit JDK on 64-bit Linux. Maybe only 64-bit library is installed." - echo "Please manually check if this is the case. Treated as PASSED now." - EXIT_STATUS=0 - fi - fi - fi -fi - -echo "Testing java provider" -${TESTJAVA}${FILESEP}bin${FILESEP}java ${TESTVMOPTS} ${TESTJAVAOPTS} \ - -classpath ${TESTCLASSES} \ - -Djava.security.krb5.realm=R \ - -Djava.security.krb5.kdc=127.0.0.1 \ - ${TEST} -if [ $? != 0 ] ; then - echo "Java provider fails" - EXIT_STATUS=1 -fi - -exit ${EXIT_STATUS} diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/SupportedDHKeys.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/SupportedDHKeys.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/SupportedDHKeys.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/SupportedDHKeys.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,8 @@ * @run main/othervm -Djava.security.manager=allow SupportedDHKeys sm */ +import jtreg.SkippedException; + import java.math.BigInteger; import java.security.KeyPair; import java.security.KeyPairGenerator; @@ -63,8 +65,7 @@ @Override public void main(Provider provider) throws Exception { if (provider.getService("KeyPairGenerator", "DiffieHellman") == null) { - System.out.println("No support of DH KeyPairGenerator, skipping"); - return; + throw new SkippedException("No support of DH KeyPairGenerator, skipping"); } for (SupportedKeySize keySize : SupportedKeySize.values()) { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/TestDH.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestDH.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/TestDH.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestDH.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,14 +39,14 @@ import javax.crypto.KeyAgreement; import javax.crypto.SecretKey; import jdk.test.lib.security.SecurityUtils; +import jtreg.SkippedException; public class TestDH extends PKCS11Test { @Override public void main(Provider p) throws Exception { if (p.getService("KeyAgreement", "DH") == null) { - System.out.println("DH not supported, skipping"); - return; + throw new SkippedException("DH not supported, skipping"); } String kpgAlgorithm = "DH"; KeyPairGenerator kpg = KeyPairGenerator.getInstance(kpgAlgorithm, p); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/TestInterop.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestInterop.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/TestInterop.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestInterop.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,6 +41,7 @@ import javax.crypto.spec.DHPublicKeySpec; import jdk.test.lib.security.DiffieHellmanGroup; import jdk.test.lib.security.SecurityUtils; +import jtreg.SkippedException; public class TestInterop extends PKCS11Test { @@ -77,8 +78,7 @@ @Override public void main(Provider prov) throws Exception { if (prov.getService("KeyAgreement", "DH") == null) { - System.out.println("DH not supported, skipping"); - return; + throw new SkippedException("DH not supported, skipping"); } try { System.out.println("testing generateSecret()"); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/TestShort.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestShort.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/TestShort.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/TestShort.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,6 +32,8 @@ * @run main/othervm -Djava.security.manager=allow TestShort sm */ +import jtreg.SkippedException; + import java.math.BigInteger; import java.security.KeyFactory; import java.security.PrivateKey; @@ -91,12 +93,10 @@ @Override public void main(Provider provider) throws Exception { if (provider.getService("KeyAgreement", "DH") == null) { - System.out.println("DH not supported, skipping"); - return; + throw new SkippedException("DH not supported, skipping"); } + try { - DHPublicKeySpec publicSpec; - DHPrivateKeySpec privateSpec; KeyFactory kf = KeyFactory.getInstance("DH", provider); KeyAgreement ka = KeyAgreement.getInstance("DH", provider); @@ -107,7 +107,7 @@ ka.init(pr1); ka.doPhase(pu2, true); byte[] n2 = ka.generateSecret(); - if (Arrays.equals(s2, n2) == false) { + if (!Arrays.equals(s2, n2)) { throw new Exception("mismatch 2"); } System.out.println("short ok"); @@ -115,7 +115,7 @@ ka.init(pr1); ka.doPhase(pu3, true); byte[] n3 = ka.generateSecret(); - if (Arrays.equals(s3, n3) == false) { + if (!Arrays.equals(s3, n3)) { throw new Exception("mismatch 3"); } System.out.println("normal ok"); @@ -124,27 +124,6 @@ ex.printStackTrace(); throw ex; } - -/* - KeyPairGenerator kpg = KeyPairGenerator.getInstance("DH", provider); - kpg.initialize(512); -// KeyPair kp1 = kpg.generateKeyPair(); -// System.out.println(kp1.getPublic()); -// System.out.println(kp1.getPrivate()); - while (true) { - KeyAgreement ka = KeyAgreement.getInstance("DH", provider); - ka.init(pr1); - KeyPair kp2 = kpg.generateKeyPair(); - ka.doPhase(kp2.getPublic(), true); - byte[] sec = ka.generateSecret(); - if (sec.length == 64) { - System.out.println(kp2.getPrivate()); - System.out.println(kp2.getPublic()); - System.out.println(toString(sec)); - break; - } - } -/**/ } public static void main(String[] args) throws Exception { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/UnsupportedDHKeys.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/UnsupportedDHKeys.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyAgreement/UnsupportedDHKeys.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyAgreement/UnsupportedDHKeys.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,8 @@ * @run main/othervm -Djava.security.manager=allow UnsupportedDHKeys sm */ +import jtreg.SkippedException; + import java.security.InvalidParameterException; import java.security.KeyPairGenerator; import java.security.Provider; @@ -60,8 +62,7 @@ @Override public void main(Provider provider) throws Exception { if (provider.getService("KeyPairGenerator", "DiffieHellman") == null) { - System.out.println("No supported of DH KeyPairGenerator, skipping"); - return; + throw new SkippedException("DH (DiffieHellman) is not supported in KeyPairGenerator, skipping"); } for (UnsupportedKeySize keySize : UnsupportedKeySize.values()) { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyGenerator/DESParity.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/DESParity.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyGenerator/DESParity.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/DESParity.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,8 @@ * @run main/othervm -Djava.security.manager=allow DESParity sm */ +import jtreg.SkippedException; + import java.security.Provider; import java.util.Random; import javax.crypto.SecretKey; @@ -46,8 +48,7 @@ @Override public void main(Provider p) throws Exception { if (p.getService("SecretKeyFactory", "DES") == null) { - System.out.println("Not supported by provider, skipping"); - return; + throw new SkippedException("Not supported by provider, skipping"); } Random random = new Random(); SecretKeyFactory kf; @@ -58,7 +59,7 @@ random.nextBytes(b); SecretKeySpec spec = new SecretKeySpec(b, "DES"); SecretKey key = kf.generateSecret(spec); - if (DESKeySpec.isParityAdjusted(key.getEncoded(), 0) == false) { + if (!DESKeySpec.isParityAdjusted(key.getEncoded(), 0)) { throw new Exception("DES key not parity adjusted"); } } @@ -69,7 +70,7 @@ random.nextBytes(b); SecretKeySpec spec = new SecretKeySpec(b, "DESede"); SecretKey key = kf.generateSecret(spec); - if (DESedeKeySpec.isParityAdjusted(key.getEncoded(), 0) == false) { + if (!DESedeKeySpec.isParityAdjusted(key.getEncoded(), 0)) { throw new Exception("DESede key not parity adjusted"); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyGenerator/TestAES.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestAES.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyGenerator/TestAES.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestAES.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,13 +30,14 @@ * @library /test/lib .. * @run main TestAES */ +import jtreg.SkippedException; +import sun.security.util.SecurityProviderConstants; + import java.security.Provider; -import java.security.InvalidAlgorithmParameterException; import java.security.InvalidParameterException; import java.security.NoSuchAlgorithmException; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; -import static sun.security.util.SecurityProviderConstants.*; public class TestAES extends PKCS11Test { @@ -53,17 +54,16 @@ try { kg = KeyGenerator.getInstance(ALGO, p); } catch (NoSuchAlgorithmException nsae) { - System.out.println("Skip; no support for " + ALGO); - return; + throw new SkippedException("Skip; no support for " + ALGO, nsae); } // first try w/o setting a key length and check if the generated key // length matches SecretKey key = kg.generateKey(); byte[] keyValue = key.getEncoded(); - if (key.getEncoded().length != getDefAESKeySize() >> 3) { + if (key.getEncoded().length != SecurityProviderConstants.getDefAESKeySize() >> 3) { throw new RuntimeException("Default AES key length should be " + - getDefAESKeySize()); + SecurityProviderConstants.getDefAESKeySize()); } for (int keySize : new int[] { 16, 32, 64, 128, 256, 512, 1024 }) { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyGenerator/TestChaCha20.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestChaCha20.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyGenerator/TestChaCha20.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestChaCha20.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,8 @@ * @library /test/lib .. * @run main/othervm TestChaCha20 */ +import jtreg.SkippedException; + import java.security.Provider; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidParameterException; @@ -54,8 +56,7 @@ try { kg = KeyGenerator.getInstance(ALGO, p); } catch (NoSuchAlgorithmException nsae) { - System.out.println("Skip; no support for " + ALGO); - return; + throw new SkippedException("Skip; no support for " + ALGO, nsae); } try { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyGenerator/TestKeyGenerator.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDH2048.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDH2048.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDH2048.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDH2048.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,6 +32,8 @@ * @run main/othervm -Djava.security.manager=allow TestDH2048 sm */ +import jtreg.SkippedException; + import java.security.InvalidParameterException; import java.security.KeyPair; import java.security.KeyPairGenerator; @@ -51,8 +53,7 @@ @Override public void main(Provider p) throws Exception { if (p.getService("KeyPairGenerator", "DH") == null) { - System.out.println("KPG for DH not supported, skipping"); - return; + throw new SkippedException("KPG for DH not supported, skipping"); } KeyPairGenerator kpg = KeyPairGenerator.getInstance("DH", p); kpg.initialize(512); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDefaultDHPrivateExpSize.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDefaultDHPrivateExpSize.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDefaultDHPrivateExpSize.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyPairGenerator/TestDefaultDHPrivateExpSize.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -21,12 +21,12 @@ * questions. */ -import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.Provider; -import java.security.PrivateKey; import javax.crypto.spec.DHParameterSpec; import javax.crypto.interfaces.DHPrivateKey; + +import jtreg.SkippedException; import sun.security.util.SecurityProviderConstants; import sun.security.provider.ParameterCache; @@ -47,8 +47,7 @@ System.out.println("Testing " + p.getName()); if (p.getService("KeyPairGenerator", "DH") == null) { - System.out.println("Skip, no support for DH KeyPairGenerator"); - return; + throw new SkippedException("Skip, no support for DH KeyPairGenerator"); } KeyPairGenerator kpg = KeyPairGenerator.getInstance("DH", p); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyStore/CertChainRemoval.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,15 +28,17 @@ * @run testng/othervm CertChainRemoval */ import jdk.test.lib.SecurityTools; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; import java.nio.file.Path; -import java.util.*; import java.security.Key; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.Provider; import java.security.cert.Certificate; +import java.util.Arrays; +import java.util.Enumeration; import jtreg.SkippedException; import org.testng.SkipException; @@ -125,8 +127,7 @@ p11ks.load(null, PKCS11KS.passwd); printKeyStore("Initial PKCS11 KeyStore: ", p11ks); } catch (Exception e) { - System.out.println("Skip test, due to " + e); - return; + throw new SkippedException("Skip test, due to " + e, e); } // get the necessary keys from the temp keystore diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyStore/ClientAuth.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyStore/ClientAuth.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/KeyStore/ClientAuth.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/KeyStore/ClientAuth.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -260,8 +260,7 @@ try { javax.crypto.Cipher.getInstance("RSA/ECB/PKCS1Padding", p); } catch (GeneralSecurityException e) { - System.out.println("Not supported by provider, skipping"); - return; + throw new SkippedException("Not supported by provider, skipping"); } this.provider = p; diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/PKCS11Test.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/PKCS11Test.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/PKCS11Test.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/PKCS11Test.java 2026-01-15 15:34:19.000000000 +0000 @@ -82,7 +82,7 @@ // Version of the NSS artifact. This coincides with the version of // the NSS version - private static final String NSS_BUNDLE_VERSION = "3.107"; + private static final String NSS_BUNDLE_VERSION = "3.111"; private static final String NSSLIB = "jpg.tests.jdk.nsslib"; static double nss_version = -1; diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/SecretKeyFactory/TestGeneral.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecretKeyFactory/TestGeneral.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/SecretKeyFactory/TestGeneral.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecretKeyFactory/TestGeneral.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,10 +30,14 @@ * @run main/othervm TestGeneral */ +import jtreg.SkippedException; + import java.security.NoSuchAlgorithmException; import java.security.Provider; import java.security.SecureRandom; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import javax.crypto.SecretKeyFactory; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; @@ -57,8 +61,11 @@ try { skf = SecretKeyFactory.getInstance(algorithm, p); } catch (NoSuchAlgorithmException e) { - System.out.println("Not supported, skipping: " + e); - return; + throw new SkippedException("[algorithm: " + algorithm + + ", key: " + key.getAlgorithm() + "]" + + ", provider: " + p.getName() + "]" + + ", expectedTestResult: " + expected + "]" + + "Not supported, skipping: " + e); } try { SecretKey key2 = skf.translateKey(key); @@ -99,21 +106,31 @@ SecretKey bf_128Key = new SecretKeySpec(rawBytes, 0, 16, "Blowfish"); SecretKey cc20Key = new SecretKeySpec(rawBytes, 0, 32, "ChaCha20"); - // fixed key length - test("AES", aes_128Key, p, TestResult.PASS); - test("AES", aes_256Key, p, TestResult.PASS); - test("AES", cc20Key, p, TestResult.FAIL); - - test("ChaCha20", aes_128Key, p, TestResult.FAIL); - test("ChaCha20", aes_256Key, p, TestResult.FAIL); - test("ChaCha20", cc20Key, p, TestResult.PASS); - - // variable key length - // Different PKCS11 impls may have different ranges - // of supported key sizes for variable-key-length - // algorithms. - test("Blowfish", aes_128Key, p, TestResult.FAIL); - test("Blowfish", cc20Key, p, TestResult.FAIL); - test("Blowfish", bf_128Key, p, TestResult.PASS); + List skippedList = new ArrayList<>(); + try { + // fixed key length + test("AES", aes_128Key, p, TestResult.PASS); + test("AES", aes_256Key, p, TestResult.PASS); + test("AES", cc20Key, p, TestResult.FAIL); + + test("ChaCha20", aes_128Key, p, TestResult.FAIL); + test("ChaCha20", aes_256Key, p, TestResult.FAIL); + test("ChaCha20", cc20Key, p, TestResult.PASS); + + // variable key length + // Different PKCS11 impls may have different ranges + // of supported key sizes for variable-key-length + // algorithms. + test("Blowfish", aes_128Key, p, TestResult.FAIL); + test("Blowfish", cc20Key, p, TestResult.FAIL); + test("Blowfish", bf_128Key, p, TestResult.PASS); + } catch (SkippedException skippedException){ + skippedException.printStackTrace(); + skippedList.add(skippedException.getMessage()); + } + + if (!skippedList.isEmpty()) { + throw new SkippedException("One or more tests skipped " + skippedList); + } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/SecureRandom/Basic.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecureRandom/Basic.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/SecureRandom/Basic.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecureRandom/Basic.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,6 +33,8 @@ * @run main/othervm -Djava.security.manager=allow Basic sm */ +import jtreg.SkippedException; + import java.security.NoSuchAlgorithmException; import java.security.Provider; import java.security.SecureRandom; @@ -45,9 +47,8 @@ try { random = SecureRandom.getInstance("PKCS11"); } catch (NoSuchAlgorithmException e) { - System.out.println("Provider " + p + " does not support SecureRandom, skipping"); e.printStackTrace(); - return; + throw new SkippedException("Provider " + p + " does not support SecureRandom, skipping", e); } byte[] b = new byte[32]; random.nextBytes(b); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/SecureRandom/TestDeserialization.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecureRandom/TestDeserialization.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/SecureRandom/TestDeserialization.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/SecureRandom/TestDeserialization.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,8 @@ * @modules jdk.crypto.cryptoki */ +import jtreg.SkippedException; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; @@ -43,18 +45,16 @@ public void main(Provider p) throws Exception { // Skip this test for providers not found by java.security.Security if (Security.getProvider(p.getName()) != p) { - System.out.println("Skip test for provider " + p.getName()); - return; + throw new SkippedException("Skip test for provider " + p.getName()); } SecureRandom r; try { r = SecureRandom.getInstance("PKCS11", p); System.out.println("SecureRandom instance " + r); } catch (NoSuchAlgorithmException e) { - System.out.println("Provider " + p + - " does not support SecureRandom, skipping"); e.printStackTrace(); - return; + throw new SkippedException("Provider " + p + + " does not support SecureRandom, skipping"); } r.setSeed(System.currentTimeMillis()); byte[] buf = new byte[16]; diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/Serialize/SerializeProvider.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/Serialize/SerializeProvider.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/Serialize/SerializeProvider.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/Serialize/SerializeProvider.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,9 +41,9 @@ public class SerializeProvider extends PKCS11Test { public void main(Provider p) throws Exception { + if (Security.getProvider(p.getName()) != p) { - System.out.println("Provider not installed in Security, skipping"); - return; + Security.addProvider(p); } ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -57,7 +57,7 @@ InputStream in = new ByteArrayInputStream(data); ObjectInputStream oin = new ObjectInputStream(in); - Provider p2 = (Provider)oin.readObject(); + Provider p2 = (Provider) oin.readObject(); System.out.println("Reconstituted: " + p2); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/tls/tls12/FipsModeTLS12.java openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/tls/tls12/FipsModeTLS12.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/pkcs11/tls/tls12/FipsModeTLS12.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/pkcs11/tls/tls12/FipsModeTLS12.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,6 @@ /* * Copyright (c) 2019, Red Hat, Inc. + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -63,6 +64,7 @@ import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManagerFactory; +import jdk.test.lib.security.SecurityUtils; import sun.security.internal.spec.TlsMasterSecretParameterSpec; import sun.security.internal.spec.TlsPrfParameterSpec; import sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec; @@ -80,6 +82,9 @@ private static PublicKey publicKey; public static void main(String[] args) throws Exception { + // Re-enable TLS_RSA_* since test depends on it. + SecurityUtils.removeFromDisabledTlsAlgs("TLS_RSA_*"); + try { initialize(); } catch (Exception e) { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/ClientHandshaker/LengthCheckTest.java openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/ClientHandshaker/LengthCheckTest.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/ClientHandshaker/LengthCheckTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/ClientHandshaker/LengthCheckTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -270,8 +270,8 @@ * Main entry point for this test. */ public static void main(String args[]) throws Exception { - // Re-enable TLSv1 since test depends on it. - SecurityUtils.removeFromDisabledTlsAlgs("TLSv1"); + // Re-enable TLSv1 and TLS_RSA_* since test depends on it. + SecurityUtils.removeFromDisabledTlsAlgs("TLSv1", "TLS_RSA_*"); List ccsTests = new ArrayList<>(); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/EngineArgs/DebugReportsOneExtraByte.java openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/EngineArgs/DebugReportsOneExtraByte.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/EngineArgs/DebugReportsOneExtraByte.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/EngineArgs/DebugReportsOneExtraByte.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -100,8 +100,8 @@ System.out.println("Test Passed."); } else { - // Re-enable TLSv1 since test depends on it - SecurityUtils.removeFromDisabledTlsAlgs("TLSv1"); + // Re-enable TLSv1 and TLS_RSA_* since test depends on it + SecurityUtils.removeFromDisabledTlsAlgs("TLSv1", "TLS_RSA_*"); DebugReportsOneExtraByte test = new DebugReportsOneExtraByte(); test.runTest(); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureDTLS12.java openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureDTLS12.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureDTLS12.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureDTLS12.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8340321 + * @summary Disable SHA-1 in TLS/DTLS 1.2 signatures. + * This test only covers DTLS 1.2. + * @library /javax/net/ssl/templates + * /test/lib + * @run main/othervm DisableSHA1inHandshakeSignatureDTLS12 + */ + +public class DisableSHA1inHandshakeSignatureDTLS12 extends + DisableSHA1inHandshakeSignatureTLS12 { + + protected DisableSHA1inHandshakeSignatureDTLS12() throws Exception { + super(); + } + + public static void main(String[] args) throws Exception { + new DisableSHA1inHandshakeSignatureDTLS12().run(); + } + + @Override + protected String getProtocol() { + return "DTLSv1.2"; + } + + // No CertificateRequest in DTLS server flight. + @Override + protected void checkCertificateRequest() { + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS12.java openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS12.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS12.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS12.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8340321 + * @summary Disable SHA-1 in TLS/DTLS 1.2 signatures. + * This test only covers TLS 1.2. + * @library /javax/net/ssl/templates + * /test/lib + * @run main/othervm DisableSHA1inHandshakeSignatureTLS12 + */ + +import static jdk.test.lib.Asserts.assertFalse; +import static jdk.test.lib.Asserts.assertTrue; + +import java.util.List; + +public class DisableSHA1inHandshakeSignatureTLS12 extends + AbstractCheckSignatureSchemes { + + protected DisableSHA1inHandshakeSignatureTLS12() throws Exception { + super(); + } + + public static void main(String[] args) throws Exception { + new DisableSHA1inHandshakeSignatureTLS12().run(); + } + + @Override + protected String getProtocol() { + return "TLSv1.2"; + } + + // Run things in TLS handshake order. + protected void run() throws Exception { + + // Produce client_hello + clientEngine.wrap(clientOut, cTOs); + cTOs.flip(); + + checkClientHello(); + + // Consume client_hello. + serverEngine.unwrap(cTOs, serverIn); + runDelegatedTasks(serverEngine); + + // Produce server_hello. + serverEngine.wrap(serverOut, sTOc); + sTOc.flip(); + + checkCertificateRequest(); + } + + // Returns SHA-1 signature schemes supported for TLSv1.2 handshake + protected List getDisabledSignatureSchemes() { + return List.of( + "ecdsa_sha1", + "rsa_pkcs1_sha1", + "dsa_sha1" + ); + } + + protected void checkClientHello() throws Exception { + // Get signature_algorithms extension signature schemes. + List sigAlgsSS = getSigSchemesCliHello( + extractHandshakeMsg(cTOs, TLS_HS_CLI_HELLO), + SIG_ALGS_EXT); + + // Should not be present in signature_algorithms extension. + getDisabledSignatureSchemes().forEach(ss -> + assertFalse(sigAlgsSS.contains(ss), + "Signature Scheme " + ss + + " present in ClientHello's signature_algorithms extension")); + + // Get signature_algorithms_cert extension signature schemes. + List sigAlgsCertSS = getSigSchemesCliHello( + extractHandshakeMsg(cTOs, TLS_HS_CLI_HELLO), + SIG_ALGS_CERT_EXT); + + // Should be present in signature_algorithms_cert extension. + getDisabledSignatureSchemes().forEach(ss -> + assertTrue(sigAlgsCertSS.contains(ss), + "Signature Scheme " + ss + + " isn't present in ClientHello's" + + " signature_algorithms extension")); + } + + protected void checkCertificateRequest() throws Exception { + // Get CertificateRequest message signature schemes. + List sigAlgsCertSS = getSigSchemesCertReq( + extractHandshakeMsg(sTOc, TLS_HS_CERT_REQ)); + + // Should not be present in CertificateRequest message. + getDisabledSignatureSchemes().forEach(ss -> + assertFalse(sigAlgsCertSS.contains(ss), + "Signature Scheme " + ss + + " present in CertificateRequest")); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS13.java openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS13.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS13.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/DisableSHA1inHandshakeSignatureTLS13.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8340321 + * @summary Disable SHA-1 in TLS/DTLS 1.2 signatures. + * This test only covers TLS 1.3. + * @library /javax/net/ssl/templates + * /test/lib + * @run main/othervm DisableSHA1inHandshakeSignatureTLS13 + */ + +import java.security.Security; +import java.util.List; + +public class DisableSHA1inHandshakeSignatureTLS13 extends + DisableSHA1inHandshakeSignatureTLS12 { + + protected DisableSHA1inHandshakeSignatureTLS13() throws Exception { + super(); + } + + public static void main(String[] args) throws Exception { + // SHA-1 algorithm MUST NOT be used in any TLSv1.3 handshake signatures. + // This is regardless of jdk.tls.disabledAlgorithms configuration. + Security.setProperty("jdk.tls.disabledAlgorithms", ""); + new DisableSHA1inHandshakeSignatureTLS13().run(); + } + + @Override + protected String getProtocol() { + return "TLSv1.3"; + } + + // Returns SHA-1 signature schemes NOT supported for TLSv1.3 handshake + // signatures, but supported for TLSv1.3 certificate signatures. + @Override + protected List getDisabledSignatureSchemes() { + return List.of("ecdsa_sha1", "rsa_pkcs1_sha1"); + } + + // TLSv1.3 sends CertificateRequest signature schemes in + // signature_algorithms and signature_algorithms_cert extensions. Same as + // ClientHello, but they are encrypted. So we skip CertificateRequest + // signature schemes verification for TLSv1.3. + @Override + protected void checkCertificateRequest() { + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS12.java openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS12.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS12.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS12.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,6 +1,6 @@ /* * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. - * Copyright (C) 2021, 2024 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2021, 2024, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS13.java openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS13.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS13.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/ssl/SignatureScheme/SigAlgosExtTestWithTLS13.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,6 +1,6 @@ /* * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. - * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2021, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/tools/jarsigner/EC.java openjdk-21-21.0.10+7/test/jdk/sun/security/tools/jarsigner/EC.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/tools/jarsigner/EC.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/tools/jarsigner/EC.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ * @bug 6870812 * @summary enhance security tools to use ECC algorithm * @library /test/lib + * @run main/timeout=300 EC */ import jdk.test.lib.SecurityTools; diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/tools/jarsigner/VerifyJarEntryName.java openjdk-21-21.0.10+7/test/jdk/sun/security/tools/jarsigner/VerifyJarEntryName.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/tools/jarsigner/VerifyJarEntryName.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/tools/jarsigner/VerifyJarEntryName.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8339280 + * @summary Test that jarsigner -verify emits a warning when the filename of + * an entry in the LOC is changed + * @library /test/lib + * @run junit VerifyJarEntryName + */ + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.FileOutputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.jar.JarFile; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import jdk.test.lib.SecurityTools; +import static org.junit.jupiter.api.Assertions.fail; + +public class VerifyJarEntryName { + + private static final Path ORIGINAL_JAR = Path.of("test.jar"); + private static final Path MODIFIED_JAR = Path.of("modified_test.jar"); + + @BeforeAll + static void setup() throws Exception { + try (FileOutputStream fos = new FileOutputStream(ORIGINAL_JAR.toFile()); + ZipOutputStream zos = new ZipOutputStream(fos)) { + zos.putNextEntry(new ZipEntry(JarFile.MANIFEST_NAME)); + zos.write("Manifest-Version: 1.0\nCreated-By: Test\n". + getBytes(StandardCharsets.UTF_8)); + zos.closeEntry(); + + // Add hello.txt file + ZipEntry textEntry = new ZipEntry("hello.txt"); + zos.putNextEntry(textEntry); + zos.write("hello".getBytes(StandardCharsets.UTF_8)); + zos.closeEntry(); + } + + SecurityTools.keytool("-genkeypair -keystore ks -storepass changeit " + + "-alias mykey -keyalg rsa -dname CN=me "); + + SecurityTools.jarsigner("-keystore ks -storepass changeit " + + ORIGINAL_JAR + " mykey") + .shouldHaveExitValue(0); + } + + @BeforeEach + void cleanup() throws Exception { + Files.deleteIfExists(MODIFIED_JAR); + } + + /* + * Modify a single byte in "MANIFEST.MF" filename in LOC, and + * validate that jarsigner -verify emits a warning message. + */ + @Test + void verifyManifestEntryName() throws Exception { + modifyJarEntryName(ORIGINAL_JAR, MODIFIED_JAR, "META-INF/MANIFEST.MF"); + SecurityTools.jarsigner("-verify -verbose " + MODIFIED_JAR) + .shouldContain("This JAR file contains internal " + + "inconsistencies that may result in different " + + "contents when reading via JarFile and JarInputStream:") + .shouldContain("- Manifest is missing when " + + "reading via JarInputStream") + .shouldHaveExitValue(0); + } + + /* + * Modify a single byte in signature filename in LOC, and + * validate that jarsigner -verify emits a warning message. + */ + @Test + void verifySignatureEntryName() throws Exception { + modifyJarEntryName(ORIGINAL_JAR, MODIFIED_JAR, "META-INF/MYKEY.SF"); + SecurityTools.jarsigner("-verify -verbose " + MODIFIED_JAR) + .shouldContain("This JAR file contains internal " + + "inconsistencies that may result in different " + + "contents when reading via JarFile and JarInputStream:") + .shouldContain("- Entry XETA-INF/MYKEY.SF is present when reading " + + "via JarInputStream but missing when reading via JarFile") + .shouldHaveExitValue(0); + } + + /* + * Validate that jarsigner -verify on a valid JAR works without + * emitting warnings about internal inconsistencies. + */ + @Test + void verifyOriginalJar() throws Exception { + SecurityTools.jarsigner("-verify -verbose " + ORIGINAL_JAR) + .shouldNotContain("This JAR file contains internal " + + "inconsistencies that may result in different contents when " + + "reading via JarFile and JarInputStream:") + .shouldHaveExitValue(0); + } + + private void modifyJarEntryName(Path origJar, Path modifiedJar, + String entryName) throws Exception { + byte[] jarBytes = Files.readAllBytes(origJar); + byte[] entryNameBytes = entryName.getBytes(StandardCharsets.UTF_8); + int pos = 0; + try { + while (!Arrays.equals(jarBytes, pos, pos + entryNameBytes.length, + entryNameBytes, 0, entryNameBytes.length)) pos++; + } catch (ArrayIndexOutOfBoundsException ignore) { + fail(entryName + " is not present in the JAR"); + } + jarBytes[pos] = 'X'; + Files.write(modifiedJar, jarBytes); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/util/Resources/TEST.properties openjdk-21-21.0.10+7/test/jdk/sun/security/util/Resources/TEST.properties --- openjdk-21-21.0.9+10/test/jdk/sun/security/util/Resources/TEST.properties 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/util/Resources/TEST.properties 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -# disabled till JDK-8219408 is fixed -allowSmartActionArgs=false diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/x509/URICertStore/AIACertTimeout.java openjdk-21-21.0.10+7/test/jdk/sun/security/x509/URICertStore/AIACertTimeout.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/x509/URICertStore/AIACertTimeout.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/x509/URICertStore/AIACertTimeout.java 2026-01-15 15:34:19.000000000 +0000 @@ -47,6 +47,7 @@ import java.io.*; import java.math.BigInteger; import java.net.InetSocketAddress; +import java.security.Security; import java.security.cert.*; import java.security.KeyPair; import java.security.KeyPairGenerator; @@ -69,6 +70,7 @@ private static X509Certificate eeCert; public static void main(String[] args) throws Exception { + Security.setProperty("com.sun.security.allowedAIALocations", "any"); int servTimeoutMsec = (args != null && args.length >= 1) ? Integer.parseInt(args[0]) : -1; boolean expectedPass = args != null && args.length >= 2 && diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/x509/URICertStore/ExtensionsWithLDAP.java openjdk-21-21.0.10+7/test/jdk/sun/security/x509/URICertStore/ExtensionsWithLDAP.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/x509/URICertStore/ExtensionsWithLDAP.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/x509/URICertStore/ExtensionsWithLDAP.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,6 +38,7 @@ import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; +import java.security.Security; import java.security.cert.CertPath; import java.security.cert.CertPathValidator; import java.security.cert.CertPathValidatorException; @@ -47,7 +48,6 @@ import java.security.cert.TrustAnchor; import java.security.cert.X509Certificate; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -67,25 +67,27 @@ * Not After : Jan 17 18:03:59 2043 GMT * Subject: CN=Root */ - private static final String CA_CERT = "" - + "-----BEGIN CERTIFICATE-----\n" - + "MIIC8TCCAdmgAwIBAgIJAJsSNtj5wdqqMA0GCSqGSIb3DQEBDQUAMA8xDTALBgNV\n" - + "BAMMBFJvb3QwHhcNMTUwOTAxMTgwMzU5WhcNNDMwMTE3MTgwMzU5WjAPMQ0wCwYD\n" - + "VQQDDARSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvj892vPm\n" - + "bB++x9QqqyBveP+ZqQ2B1stV7vh5JmDnOTevkZUOcemp3SXu/esNLSbpL+fARYXH\n" - + "V5ubnrfip6RbvcxPfVIIDJrRTLIIsU6W7M6/LJLbLkEVGy4ZV4IHkOw9W2O92rcv\n" - + "BkoqhzZnOTGR6uT3rRcKx4RevEKBKhZO+OPPf//lnckOybmYL7t7yQrajzHro76b\n" - + "QTXYjAUq/DKhglXfC7vF/JzlAvG2IunGmIfjGcnuDo/9X3Bxef/q5TxCS35fvb7t\n" - + "svC+g2QhTcBkQh4uNW2jSjlTIVp1uErCfP5aCjLaez5mqmb1hxPIlcvsNR23HwU6\n" - + "bQO7z7NBo9Do6QIDAQABo1AwTjAdBgNVHQ4EFgQUmLZNOBBkqdYoElyxklPYHmAb\n" - + "QXIwHwYDVR0jBBgwFoAUmLZNOBBkqdYoElyxklPYHmAbQXIwDAYDVR0TBAUwAwEB\n" - + "/zANBgkqhkiG9w0BAQ0FAAOCAQEAYV4fOhDi5q7+XNXCxO8Eil2frR9jqdP4LaQp\n" - + "3L0evW0gvPX68s2WmkPWzIu4TJcpdGFQqxyQFSXuKBXjthyiln77QItGTHWeafES\n" - + "q5ESrKdSaJZq1bTIrrReCIP74f+fY/F4Tnb3dCqzaljXfzpdbeRsIW6gF71xcOUQ\n" - + "nnPEjGVPLUegN+Wn/jQpeLxxIB7FmNXncdRUfMfZ43xVSKuMCy1UUYqJqTa/pXZj\n" - + "jCMeRPThRjRqHlJ69jStfWUQATbLyj9KN09rUaJxzmUSt61UqJi7sjcGySaCjAJc\n" - + "IcCdVmX/DmRLsdv8W36O3MgrvpT1zR3kaAlv2d8HppnBqcL3xg==\n" - + "-----END CERTIFICATE-----"; + private static final String CA_CERT = + """ + -----BEGIN CERTIFICATE----- + MIIC8TCCAdmgAwIBAgIJAJsSNtj5wdqqMA0GCSqGSIb3DQEBDQUAMA8xDTALBgNV + BAMMBFJvb3QwHhcNMTUwOTAxMTgwMzU5WhcNNDMwMTE3MTgwMzU5WjAPMQ0wCwYD + VQQDDARSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvj892vPm + bB++x9QqqyBveP+ZqQ2B1stV7vh5JmDnOTevkZUOcemp3SXu/esNLSbpL+fARYXH + V5ubnrfip6RbvcxPfVIIDJrRTLIIsU6W7M6/LJLbLkEVGy4ZV4IHkOw9W2O92rcv + BkoqhzZnOTGR6uT3rRcKx4RevEKBKhZO+OPPf//lnckOybmYL7t7yQrajzHro76b + QTXYjAUq/DKhglXfC7vF/JzlAvG2IunGmIfjGcnuDo/9X3Bxef/q5TxCS35fvb7t + svC+g2QhTcBkQh4uNW2jSjlTIVp1uErCfP5aCjLaez5mqmb1hxPIlcvsNR23HwU6 + bQO7z7NBo9Do6QIDAQABo1AwTjAdBgNVHQ4EFgQUmLZNOBBkqdYoElyxklPYHmAb + QXIwHwYDVR0jBBgwFoAUmLZNOBBkqdYoElyxklPYHmAbQXIwDAYDVR0TBAUwAwEB + /zANBgkqhkiG9w0BAQ0FAAOCAQEAYV4fOhDi5q7+XNXCxO8Eil2frR9jqdP4LaQp + 3L0evW0gvPX68s2WmkPWzIu4TJcpdGFQqxyQFSXuKBXjthyiln77QItGTHWeafES + q5ESrKdSaJZq1bTIrrReCIP74f+fY/F4Tnb3dCqzaljXfzpdbeRsIW6gF71xcOUQ + nnPEjGVPLUegN+Wn/jQpeLxxIB7FmNXncdRUfMfZ43xVSKuMCy1UUYqJqTa/pXZj + jCMeRPThRjRqHlJ69jStfWUQATbLyj9KN09rUaJxzmUSt61UqJi7sjcGySaCjAJc + IcCdVmX/DmRLsdv8W36O3MgrvpT1zR3kaAlv2d8HppnBqcL3xg== + -----END CERTIFICATE----- + """; /* * Certificate: @@ -106,39 +108,41 @@ * Authority Information Access: * CA Issuers - URI:ldap://ldap.host.for.aia/dc=Root?cACertificate */ - private static final String EE_CERT = "" - + "-----BEGIN CERTIFICATE-----\n" - + "MIIDHTCCAgWgAwIBAgIBBzANBgkqhkiG9w0BAQ0FADAPMQ0wCwYDVQQDDARSb290\n" - + "MB4XDTE1MDkwMTE4MDM1OVoXDTQzMDExNzE4MDM1OVowDTELMAkGA1UEAwwCRUUw\n" - + "ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpyz97liuWPDYcLH9TX8Bi\n" - + "T78olCmAfmevvch6ncXUVuCzbdaKuKXwn4EVbDszsVJLoK5zdtP+X3iDhutj+IgK\n" - + "mLhuczF3M9VIcWr+JJUyTH4+3h/RT8cjCDZOmk9iXkb5ifruVsLqzb9g+Vp140Oz\n" - + "7leikne7KmclHvTfvFd0WDI7Gb9vo4f5rT717BXJ/n+M6pNk8DLpLiEu6eziYvXR\n" - + "v5x+t5Go3x0eCXdaxEQUf2j876Wfr2qHRJK7lDfFe1DDsMg/KpKGiILYZ+g2qtVM\n" - + "ZSxtp5BZEtfB5qV/IE5kWO+mCIAGpXSZIdbERR6pZUq8GLEe1T9e+sO6H24w2F19\n" - + "AgMBAAGjgYUwgYIwNAYDVR0fBC0wKzApoCegJYYjbGRhcDovL2xkYXAuaG9zdC5m\n" - + "b3IuY3JsZHAvbWFpbi5jcmwwSgYIKwYBBQUHAQEEPjA8MDoGCCsGAQUFBzAChi5s\n" - + "ZGFwOi8vbGRhcC5ob3N0LmZvci5haWEvZGM9Um9vdD9jQUNlcnRpZmljYXRlMA0G\n" - + "CSqGSIb3DQEBDQUAA4IBAQBWDfZHpuUx0yn5d3+BuztFqoks1MkGdk+USlH0TB1/\n" - + "gWWBd+4S4PCKlpSur0gj2rMW4fP5HQfNlHci8JV8/bG4KuKRAXW56dg1818Hl3pc\n" - + "iIrUSRn8uUjH3p9qb+Rb/u3mmVQRyJjN2t/zceNsO8/+Dd808OB9aEwGs8lMT0nn\n" - + "ZYaaAqYz1GIY/Ecyx1vfEZEQ1ljo6i/r70C3igbypBUShxSiGsleiVTLOGNA+MN1\n" - + "/a/Qh0bkaQyTGqK3bwvzzMeQVqWu2EWTBD/PmND5ExkpRICdv8LBVXfLnpoBr4lL\n" - + "hnxn9+e0Ah+t8dS5EKfn44w5bI5PCu2bqxs6RCTxNjcY\n" - + "-----END CERTIFICATE-----"; + private static final String EE_CERT = + """ + -----BEGIN CERTIFICATE----- + MIIDHTCCAgWgAwIBAgIBBzANBgkqhkiG9w0BAQ0FADAPMQ0wCwYDVQQDDARSb290 + MB4XDTE1MDkwMTE4MDM1OVoXDTQzMDExNzE4MDM1OVowDTELMAkGA1UEAwwCRUUw + ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpyz97liuWPDYcLH9TX8Bi + T78olCmAfmevvch6ncXUVuCzbdaKuKXwn4EVbDszsVJLoK5zdtP+X3iDhutj+IgK + mLhuczF3M9VIcWr+JJUyTH4+3h/RT8cjCDZOmk9iXkb5ifruVsLqzb9g+Vp140Oz + 7leikne7KmclHvTfvFd0WDI7Gb9vo4f5rT717BXJ/n+M6pNk8DLpLiEu6eziYvXR + v5x+t5Go3x0eCXdaxEQUf2j876Wfr2qHRJK7lDfFe1DDsMg/KpKGiILYZ+g2qtVM + ZSxtp5BZEtfB5qV/IE5kWO+mCIAGpXSZIdbERR6pZUq8GLEe1T9e+sO6H24w2F19 + AgMBAAGjgYUwgYIwNAYDVR0fBC0wKzApoCegJYYjbGRhcDovL2xkYXAuaG9zdC5m + b3IuY3JsZHAvbWFpbi5jcmwwSgYIKwYBBQUHAQEEPjA8MDoGCCsGAQUFBzAChi5s + ZGFwOi8vbGRhcC5ob3N0LmZvci5haWEvZGM9Um9vdD9jQUNlcnRpZmljYXRlMA0G + CSqGSIb3DQEBDQUAA4IBAQBWDfZHpuUx0yn5d3+BuztFqoks1MkGdk+USlH0TB1/ + gWWBd+4S4PCKlpSur0gj2rMW4fP5HQfNlHci8JV8/bG4KuKRAXW56dg1818Hl3pc + iIrUSRn8uUjH3p9qb+Rb/u3mmVQRyJjN2t/zceNsO8/+Dd808OB9aEwGs8lMT0nn + ZYaaAqYz1GIY/Ecyx1vfEZEQ1ljo6i/r70C3igbypBUShxSiGsleiVTLOGNA+MN1 + /a/Qh0bkaQyTGqK3bwvzzMeQVqWu2EWTBD/PmND5ExkpRICdv8LBVXfLnpoBr4lL + hnxn9+e0Ah+t8dS5EKfn44w5bI5PCu2bqxs6RCTxNjcY + -----END CERTIFICATE-----"""; public static void main(String[] args) throws Exception { String extension = args[0]; String targetHost = args[1]; - + Security.setProperty("com.sun.security.allowedAIALocations", + "ldap://" + targetHost + "/dc=Root"); X509Certificate trustedCert = loadCertificate(CA_CERT); X509Certificate eeCert = loadCertificate(EE_CERT); Set trustedCertsSet = new HashSet<>(); trustedCertsSet.add(new TrustAnchor(trustedCert, null)); - CertPath cp = (CertPath) CertificateFactory.getInstance("X509") - .generateCertPath(Arrays.asList(eeCert)); + CertPath cp = CertificateFactory.getInstance("X509") + .generateCertPath(List.of(eeCert)); // CertPath validator should try to parse CRLDP and AIA extensions, // and load CRLs/certs which they point to. diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/security/x509/X509CertImpl/V3Certificate.java openjdk-21-21.0.10+7/test/jdk/sun/security/x509/X509CertImpl/V3Certificate.java --- openjdk-21-21.0.9+10/test/jdk/sun/security/x509/X509CertImpl/V3Certificate.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/security/x509/X509CertImpl/V3Certificate.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 8049237 8242151 + * @bug 8049237 8242151 8347841 * @modules java.base/sun.security.x509 * java.base/sun.security.util * jdk.crypto.ec @@ -114,7 +114,7 @@ // Validity interval Date firstDate = new Date(); - Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("PST")); + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles")); cal.set(2014, 03, 10, 12, 30, 30); Date lastDate = cal.getTime(); CertificateValidity interval = new CertificateValidity(firstDate, diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/text/resources/LocaleData openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleData --- openjdk-21-21.0.9+10/test/jdk/sun/text/resources/LocaleData 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleData 2026-01-15 15:34:19.000000000 +0000 @@ -9,7 +9,7 @@ LocaleNames//es=Spanish # bug #4052679 -LocaleNames/fr/fr=fran\u00e7ais +LocaleNames/fr/fr=français # bug #4055602, 4290801, 8013836 CurrencyNames/pt_BR/BRL=R$ @@ -33,13 +33,13 @@ FormatData/pt_BR/DayAbbreviations/2=Ter FormatData/pt_BR/DayNames/0=Domingo FormatData/pt_BR/DayNames/1=Segunda-feira -FormatData/pt_BR/DayNames/2=Ter\u00e7a-feira +FormatData/pt_BR/DayNames/2=Terça-feira CalendarData/pt_BR/firstDayOfWeek=1 CalendarData/pt_BR/minimalDaysInFirstWeek=1 FormatData/pt_BR/MonthNames/0=Janeiro FormatData/pt_BR/MonthNames/1=Fevereiro -FormatData/pt_BR/MonthNames/2=Mar\u00e7o -LocaleNames/pt_BR/pt=portugu\u00eas +FormatData/pt_BR/MonthNames/2=Março +LocaleNames/pt_BR/pt=português LocaleNames/pt_BR/PT=Portugal LocaleNames/pt_BR/BR=Brasil @@ -47,17 +47,17 @@ CalendarData/hr/firstDayOfWeek=2 # bug #4066550 -FormatData/ja/Eras/0=\u7d00\u5143\u524d -FormatData/ja/Eras/1=\u897f\u66a6 +FormatData/ja/Eras/0=紀元前 +FormatData/ja/Eras/1=西暦 # bug #4067619 LocaleNames//LT=Lithuania LocaleNames/en/LT=Lithuania # bug #4068012, 4290801, 4942982 -CurrencyNames/ru_RU/RUB=\u0440\u0443\u0431. +CurrencyNames/ru_RU/RUB=руб. FormatData/ru_RU/NumberPatterns/0=#,##0.###;-#,##0.### -# FormatData/ru_RU/NumberPatterns/1=#,##0.##'\u0440.';-#,##0.##'\u0440.' # Changed; see bug 4122840 +# FormatData/ru_RU/NumberPatterns/1=#,##0.##'р.';-#,##0.##'р.' # Changed; see bug 4122840 FormatData/ru_RU/NumberPatterns/2=#,##0% # bug #4070174 @@ -89,60 +89,60 @@ # FormatData/it_IT/NumberPatterns/1='L.' #,##0;-'L.' #,##0 # Changed; see bug 4122840 # bug #4071782 -FormatData/ru/DayAbbreviations/0=\u0412\u0441 -FormatData/ru/DayAbbreviations/1=\u041f\u043d -FormatData/ru/DayAbbreviations/2=\u0412\u0442 -FormatData/ru/DayAbbreviations/3=\u0421\u0440 -FormatData/ru/DayAbbreviations/4=\u0427\u0442 -FormatData/ru/DayAbbreviations/5=\u041f\u0442 -FormatData/ru/DayAbbreviations/6=\u0421\u0431 +FormatData/ru/DayAbbreviations/0=Вс +FormatData/ru/DayAbbreviations/1=Пн +FormatData/ru/DayAbbreviations/2=Вт +FormatData/ru/DayAbbreviations/3=Ср +FormatData/ru/DayAbbreviations/4=Чт +FormatData/ru/DayAbbreviations/5=Пт +FormatData/ru/DayAbbreviations/6=Сб # bug #4072013 - obsoleted by 6386647: Full date format in DateFormat does not include day of the week for UK locale #FormatData/en_GB/DatePatterns/0=dd MMMM yyyy # bug #4072388 -LocaleNames/cs/cs=\u010de\u0161tina +LocaleNames/cs/cs=čeština # bug #4072773 FormatData/ja/DatePatterns/2=yyyy/MM/dd FormatData/ja/DatePatterns/3=yy/MM/dd # bug #4075404, 4290801, 4942982 -CurrencyNames/ru_RU/RUB=\u0440\u0443\u0431. +CurrencyNames/ru_RU/RUB=руб. FormatData/ru_RU/TimePatterns/0=H:mm:ss z FormatData/ru_RU/TimePatterns/1=H:mm:ss z FormatData/ru_RU/TimePatterns/2=H:mm:ss FormatData/ru_RU/TimePatterns/3=H:mm -FormatData/ru_RU/DatePatterns/0=d MMMM yyyy '\u0433.' -FormatData/ru_RU/DatePatterns/1=d MMMM yyyy '\u0433.' +FormatData/ru_RU/DatePatterns/0=d MMMM yyyy 'г.' +FormatData/ru_RU/DatePatterns/1=d MMMM yyyy 'г.' FormatData/ru_RU/DatePatterns/2=dd.MM.yyyy FormatData/ru_RU/DatePatterns/3=dd.MM.yy FormatData/ru_RU/DateTimePatterns/0={1} {0} # bug #4084356, 4290801 -CurrencyNames/pl_PL/PLN=z\u0142 +CurrencyNames/pl_PL/PLN=zł FormatData/pl_PL/NumberPatterns/0=#,##0.###;-#,##0.### -# FormatData/pl_PL/NumberPatterns/1=#,##0.## z\u0142;-#,##0.## z\u0142 # Changed; see bug 4122840 +# FormatData/pl_PL/NumberPatterns/1=#,##0.## zł;-#,##0.## zł # Changed; see bug 4122840 FormatData/pl_PL/NumberPatterns/2=#,##0% FormatData/pl_PL/DayNames/0=niedziela -FormatData/pl_PL/DayNames/1=poniedzia\u0142ek +FormatData/pl_PL/DayNames/1=poniedziałek FormatData/pl_PL/DayNames/2=wtorek -FormatData/pl_PL/DayNames/3=\u015broda +FormatData/pl_PL/DayNames/3=środa FormatData/pl_PL/DayNames/4=czwartek -FormatData/pl_PL/DayNames/5=pi\u0105tek +FormatData/pl_PL/DayNames/5=piątek FormatData/pl_PL/DayNames/6=sobota -FormatData/pl_PL/standalone.MonthNames/0=stycze\u0144 +FormatData/pl_PL/standalone.MonthNames/0=styczeń FormatData/pl_PL/standalone.MonthNames/1=luty FormatData/pl_PL/standalone.MonthNames/2=marzec -FormatData/pl_PL/standalone.MonthNames/3=kwiecie\u0144 +FormatData/pl_PL/standalone.MonthNames/3=kwiecień FormatData/pl_PL/standalone.MonthNames/4=maj FormatData/pl_PL/standalone.MonthNames/5=czerwiec FormatData/pl_PL/standalone.MonthNames/6=lipiec -FormatData/pl_PL/standalone.MonthNames/7=sierpie\u0144 -FormatData/pl_PL/standalone.MonthNames/8=wrzesie\u0144 -FormatData/pl_PL/standalone.MonthNames/9=pa\u017adziernik +FormatData/pl_PL/standalone.MonthNames/7=sierpień +FormatData/pl_PL/standalone.MonthNames/8=wrzesień +FormatData/pl_PL/standalone.MonthNames/9=październik FormatData/pl_PL/standalone.MonthNames/10=listopad -FormatData/pl_PL/standalone.MonthNames/11=grudzie\u0144 +FormatData/pl_PL/standalone.MonthNames/11=grudzień FormatData/pl_PL/standalone.MonthNames/12= LocaleNames/pl_PL/pl=polski FormatData/pl_PL/TimePatterns/0=HH:mm:ss z @@ -156,23 +156,23 @@ FormatData/pl_PL/DatePatterns/3=dd.MM.yy FormatData/pl_PL/DateTimePatterns/0={1} {0} FormatData/pl_PL/NumberElements/0=, -FormatData/pl_PL/NumberElements/1=\u00a0 +FormatData/pl_PL/NumberElements/1=  FormatData/pl_PL/NumberElements/2=; FormatData/pl_PL/NumberElements/3=% FormatData/pl_PL/NumberElements/4=0 FormatData/pl_PL/NumberElements/5=# FormatData/pl_PL/NumberElements/6=- FormatData/pl_PL/NumberElements/7=E -FormatData/pl_PL/NumberElements/8=\u2030 -FormatData/pl_PL/NumberElements/9=\u221e -FormatData/pl_PL/NumberElements/10=\ufffd +FormatData/pl_PL/NumberElements/8=‰ +FormatData/pl_PL/NumberElements/9=∞ +FormatData/pl_PL/NumberElements/10=� FormatData/pl_PL/Eras/0=p.n.e. FormatData/pl_PL/Eras/1=n.e. LocaleNames/pl_PL/PL=Polska FormatData/pl_PL/DayAbbreviations/0=N FormatData/pl_PL/DayAbbreviations/1=Pn FormatData/pl_PL/DayAbbreviations/2=Wt -FormatData/pl_PL/DayAbbreviations/3=\u015ar +FormatData/pl_PL/DayAbbreviations/3=Śr FormatData/pl_PL/DayAbbreviations/4=Cz FormatData/pl_PL/DayAbbreviations/5=Pt FormatData/pl_PL/DayAbbreviations/6=So @@ -185,7 +185,7 @@ FormatData/pl_PL/MonthAbbreviations/6=lip FormatData/pl_PL/MonthAbbreviations/7=sie FormatData/pl_PL/MonthAbbreviations/8=wrz -FormatData/pl_PL/MonthAbbreviations/9=pa\u017a +FormatData/pl_PL/MonthAbbreviations/9=paź FormatData/pl_PL/MonthAbbreviations/10=lis FormatData/pl_PL/MonthAbbreviations/11=gru FormatData/pl_PL/MonthAbbreviations/12= @@ -196,8 +196,8 @@ # bug #4087238, 4290801 # bug 4156708 - changed currency symbol from 00a5 to ffe5 -CurrencyNames/ja_JP/JPY=\uffe5 -# FormatData/ja_JP/NumberPatterns/1=\u00a5#,##0.00 # Changed; see bug 4122840 +CurrencyNames/ja_JP/JPY=¥ +# FormatData/ja_JP/NumberPatterns/1=¥#,##0.00 # Changed; see bug 4122840 # bug #4092361 FormatData/en_US/TimePatterns/0=h:mm:ss a z @@ -211,113 +211,113 @@ FormatData/en_US/DateTimePatterns/0={1} {0} # bug #4094033, 4290801, 4942982 -CurrencyNames/ru_RU/RUB=\u0440\u0443\u0431. +CurrencyNames/ru_RU/RUB=руб. FormatData/ru_RU/NumberPatterns/0=#,##0.###;-#,##0.### -# FormatData/ru_RU/NumberPatterns/1=#,##0.##'\u0440.';-#,##0.##'\u0440.' # Changed; see bug 4122840 +# FormatData/ru_RU/NumberPatterns/1=#,##0.##'р.';-#,##0.##'р.' # Changed; see bug 4122840 FormatData/ru_RU/NumberPatterns/2=#,##0% -FormatData/ru_RU/MonthNames/0=\u044f\u043d\u0432\u0430\u0440\u044f -FormatData/ru_RU/MonthNames/1=\u0444\u0435\u0432\u0440\u0430\u043b\u044f -FormatData/ru_RU/MonthNames/2=\u043c\u0430\u0440\u0442\u0430 -FormatData/ru_RU/MonthNames/3=\u0430\u043f\u0440\u0435\u043b\u044f -FormatData/ru_RU/MonthNames/4=\u043c\u0430\u044f -FormatData/ru_RU/MonthNames/5=\u0438\u044e\u043d\u044f -FormatData/ru_RU/MonthNames/6=\u0438\u044e\u043b\u044f -FormatData/ru_RU/MonthNames/7=\u0430\u0432\u0433\u0443\u0441\u0442\u0430 -FormatData/ru_RU/MonthNames/8=\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f -FormatData/ru_RU/MonthNames/9=\u043e\u043a\u0442\u044f\u0431\u0440\u044f -FormatData/ru_RU/MonthNames/10=\u043d\u043e\u044f\u0431\u0440\u044f -FormatData/ru_RU/MonthNames/11=\u0434\u0435\u043a\u0430\u0431\u0440\u044f +FormatData/ru_RU/MonthNames/0=января +FormatData/ru_RU/MonthNames/1=февраля +FormatData/ru_RU/MonthNames/2=марта +FormatData/ru_RU/MonthNames/3=апреля +FormatData/ru_RU/MonthNames/4=мая +FormatData/ru_RU/MonthNames/5=июня +FormatData/ru_RU/MonthNames/6=июля +FormatData/ru_RU/MonthNames/7=августа +FormatData/ru_RU/MonthNames/8=сентября +FormatData/ru_RU/MonthNames/9=октября +FormatData/ru_RU/MonthNames/10=ноября +FormatData/ru_RU/MonthNames/11=декабря FormatData/ru_RU/MonthNames/12= -FormatData/ru_RU/standalone.MonthNames/0=\u042f\u043d\u0432\u0430\u0440\u044c -FormatData/ru_RU/standalone.MonthNames/1=\u0424\u0435\u0432\u0440\u0430\u043b\u044c -FormatData/ru_RU/standalone.MonthNames/2=\u041c\u0430\u0440\u0442 -FormatData/ru_RU/standalone.MonthNames/3=\u0410\u043f\u0440\u0435\u043b\u044c -FormatData/ru_RU/standalone.MonthNames/4=\u041c\u0430\u0439 -FormatData/ru_RU/standalone.MonthNames/5=\u0418\u044e\u043d\u044c -FormatData/ru_RU/standalone.MonthNames/6=\u0418\u044e\u043b\u044c -FormatData/ru_RU/standalone.MonthNames/7=\u0410\u0432\u0433\u0443\u0441\u0442 -FormatData/ru_RU/standalone.MonthNames/8=\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c -FormatData/ru_RU/standalone.MonthNames/9=\u041e\u043a\u0442\u044f\u0431\u0440\u044c -FormatData/ru_RU/standalone.MonthNames/10=\u041d\u043e\u044f\u0431\u0440\u044c -FormatData/ru_RU/standalone.MonthNames/11=\u0414\u0435\u043a\u0430\u0431\u0440\u044c +FormatData/ru_RU/standalone.MonthNames/0=Январь +FormatData/ru_RU/standalone.MonthNames/1=Февраль +FormatData/ru_RU/standalone.MonthNames/2=Март +FormatData/ru_RU/standalone.MonthNames/3=Апрель +FormatData/ru_RU/standalone.MonthNames/4=Май +FormatData/ru_RU/standalone.MonthNames/5=Июнь +FormatData/ru_RU/standalone.MonthNames/6=Июль +FormatData/ru_RU/standalone.MonthNames/7=Август +FormatData/ru_RU/standalone.MonthNames/8=Сентябрь +FormatData/ru_RU/standalone.MonthNames/9=Октябрь +FormatData/ru_RU/standalone.MonthNames/10=Ноябрь +FormatData/ru_RU/standalone.MonthNames/11=Декабрь FormatData/ru_RU/standalone.MonthNames/12= -FormatData/ru_RU/Eras/0=\u0434\u043e \u043d.\u044d. -FormatData/ru_RU/Eras/1=\u043d.\u044d. -LocaleNames/ru_RU/ru=\u0440\u0443\u0441\u0441\u043a\u0438\u0439 -FormatData/ru_RU/MonthAbbreviations/0=\u044f\u043d\u0432 -FormatData/ru_RU/MonthAbbreviations/1=\u0444\u0435\u0432 -FormatData/ru_RU/MonthAbbreviations/2=\u043c\u0430\u0440 -FormatData/ru_RU/MonthAbbreviations/3=\u0430\u043f\u0440 -FormatData/ru_RU/MonthAbbreviations/4=\u043c\u0430\u044f -FormatData/ru_RU/MonthAbbreviations/5=\u0438\u044e\u043d -FormatData/ru_RU/MonthAbbreviations/6=\u0438\u044e\u043b -FormatData/ru_RU/MonthAbbreviations/7=\u0430\u0432\u0433 -FormatData/ru_RU/MonthAbbreviations/8=\u0441\u0435\u043d -FormatData/ru_RU/MonthAbbreviations/9=\u043e\u043a\u0442 -FormatData/ru_RU/MonthAbbreviations/10=\u043d\u043e\u044f -FormatData/ru_RU/MonthAbbreviations/11=\u0434\u0435\u043a +FormatData/ru_RU/Eras/0=до н.э. +FormatData/ru_RU/Eras/1=н.э. +LocaleNames/ru_RU/ru=русский +FormatData/ru_RU/MonthAbbreviations/0=янв +FormatData/ru_RU/MonthAbbreviations/1=фев +FormatData/ru_RU/MonthAbbreviations/2=мар +FormatData/ru_RU/MonthAbbreviations/3=апр +FormatData/ru_RU/MonthAbbreviations/4=мая +FormatData/ru_RU/MonthAbbreviations/5=июн +FormatData/ru_RU/MonthAbbreviations/6=июл +FormatData/ru_RU/MonthAbbreviations/7=авг +FormatData/ru_RU/MonthAbbreviations/8=сен +FormatData/ru_RU/MonthAbbreviations/9=окт +FormatData/ru_RU/MonthAbbreviations/10=ноя +FormatData/ru_RU/MonthAbbreviations/11=дек FormatData/ru_RU/MonthAbbreviations/12= -# FormatData/ru_RU/standalone.MonthAbbreviations/0=\u044f\u043d\u0432 -# FormatData/ru_RU/standalone.MonthAbbreviations/1=\u0444\u0435\u0432 -# FormatData/ru_RU/standalone.MonthAbbreviations/2=\u043c\u0430\u0440 -# FormatData/ru_RU/standalone.MonthAbbreviations/3=\u0430\u043f\u0440 -# FormatData/ru_RU/standalone.MonthAbbreviations/4=\u043c\u0430\u0439 -# FormatData/ru_RU/standalone.MonthAbbreviations/5=\u0438\u044e\u043d -# FormatData/ru_RU/standalone.MonthAbbreviations/6=\u0438\u044e\u043b -# FormatData/ru_RU/standalone.MonthAbbreviations/7=\u0430\u0432\u0433 -# FormatData/ru_RU/standalone.MonthAbbreviations/8=\u0441\u0435\u043d -# FormatData/ru_RU/standalone.MonthAbbreviations/9=\u043e\u043a\u0442 -# FormatData/ru_RU/standalone.MonthAbbreviations/10=\u043d\u043e\u044f -# FormatData/ru_RU/standalone.MonthAbbreviations/11=\u0434\u0435\u043a +# FormatData/ru_RU/standalone.MonthAbbreviations/0=янв +# FormatData/ru_RU/standalone.MonthAbbreviations/1=фев +# FormatData/ru_RU/standalone.MonthAbbreviations/2=мар +# FormatData/ru_RU/standalone.MonthAbbreviations/3=апр +# FormatData/ru_RU/standalone.MonthAbbreviations/4=май +# FormatData/ru_RU/standalone.MonthAbbreviations/5=июн +# FormatData/ru_RU/standalone.MonthAbbreviations/6=июл +# FormatData/ru_RU/standalone.MonthAbbreviations/7=авг +# FormatData/ru_RU/standalone.MonthAbbreviations/8=сен +# FormatData/ru_RU/standalone.MonthAbbreviations/9=окт +# FormatData/ru_RU/standalone.MonthAbbreviations/10=ноя +# FormatData/ru_RU/standalone.MonthAbbreviations/11=дек # FormatData/ru_RU/standalone.MonthAbbreviations/12= -FormatData/ru_RU/standalone.MonthAbbreviations/0=\u042f\u043d\u0432. -FormatData/ru_RU/standalone.MonthAbbreviations/1=\u0424\u0435\u0432\u0440. -FormatData/ru_RU/standalone.MonthAbbreviations/2=\u041c\u0430\u0440\u0442 -FormatData/ru_RU/standalone.MonthAbbreviations/3=\u0410\u043f\u0440. -FormatData/ru_RU/standalone.MonthAbbreviations/4=\u041c\u0430\u0439 -FormatData/ru_RU/standalone.MonthAbbreviations/5=\u0418\u044e\u043d\u044c -FormatData/ru_RU/standalone.MonthAbbreviations/6=\u0418\u044e\u043b\u044c -FormatData/ru_RU/standalone.MonthAbbreviations/7=\u0410\u0432\u0433. -FormatData/ru_RU/standalone.MonthAbbreviations/8=\u0421\u0435\u043d\u0442. -FormatData/ru_RU/standalone.MonthAbbreviations/9=\u041e\u043a\u0442. -FormatData/ru_RU/standalone.MonthAbbreviations/10=\u041d\u043e\u044f\u0431. -FormatData/ru_RU/standalone.MonthAbbreviations/11=\u0414\u0435\u043a. +FormatData/ru_RU/standalone.MonthAbbreviations/0=Янв. +FormatData/ru_RU/standalone.MonthAbbreviations/1=Февр. +FormatData/ru_RU/standalone.MonthAbbreviations/2=Март +FormatData/ru_RU/standalone.MonthAbbreviations/3=Апр. +FormatData/ru_RU/standalone.MonthAbbreviations/4=Май +FormatData/ru_RU/standalone.MonthAbbreviations/5=Июнь +FormatData/ru_RU/standalone.MonthAbbreviations/6=Июль +FormatData/ru_RU/standalone.MonthAbbreviations/7=Авг. +FormatData/ru_RU/standalone.MonthAbbreviations/8=Сент. +FormatData/ru_RU/standalone.MonthAbbreviations/9=Окт. +FormatData/ru_RU/standalone.MonthAbbreviations/10=Нояб. +FormatData/ru_RU/standalone.MonthAbbreviations/11=Дек. FormatData/ru_RU/standalone.MonthAbbreviations/12= FormatData/ru_RU/TimePatterns/0=H:mm:ss z FormatData/ru_RU/TimePatterns/1=H:mm:ss z FormatData/ru_RU/TimePatterns/2=H:mm:ss FormatData/ru_RU/TimePatterns/3=H:mm -FormatData/ru_RU/DatePatterns/0=d MMMM yyyy '\u0433.' -FormatData/ru_RU/DatePatterns/1=d MMMM yyyy '\u0433.' +FormatData/ru_RU/DatePatterns/0=d MMMM yyyy 'г.' +FormatData/ru_RU/DatePatterns/1=d MMMM yyyy 'г.' FormatData/ru_RU/DatePatterns/2=dd.MM.yyyy FormatData/ru_RU/DatePatterns/3=dd.MM.yy FormatData/ru_RU/DateTimePatterns/0={1} {0} -FormatData/ru_RU/DayNames/0=\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435 -FormatData/ru_RU/DayNames/1=\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a -FormatData/ru_RU/DayNames/2=\u0432\u0442\u043e\u0440\u043d\u0438\u043a -FormatData/ru_RU/DayNames/3=\u0441\u0440\u0435\u0434\u0430 -FormatData/ru_RU/DayNames/4=\u0447\u0435\u0442\u0432\u0435\u0440\u0433 -FormatData/ru_RU/DayNames/5=\u043f\u044f\u0442\u043d\u0438\u0446\u0430 -FormatData/ru_RU/DayNames/6=\u0441\u0443\u0431\u0431\u043e\u0442\u0430 +FormatData/ru_RU/DayNames/0=воскресенье +FormatData/ru_RU/DayNames/1=понедельник +FormatData/ru_RU/DayNames/2=вторник +FormatData/ru_RU/DayNames/3=среда +FormatData/ru_RU/DayNames/4=четверг +FormatData/ru_RU/DayNames/5=пятница +FormatData/ru_RU/DayNames/6=суббота FormatData/ru_RU/NumberElements/0=, -FormatData/ru_RU/NumberElements/1=\u00a0 +FormatData/ru_RU/NumberElements/1=  FormatData/ru_RU/NumberElements/2=; FormatData/ru_RU/NumberElements/3=% FormatData/ru_RU/NumberElements/4=0 FormatData/ru_RU/NumberElements/5=# FormatData/ru_RU/NumberElements/6=- FormatData/ru_RU/NumberElements/7=E -FormatData/ru_RU/NumberElements/8=\u2030 -FormatData/ru_RU/NumberElements/9=\u221e -FormatData/ru_RU/NumberElements/10=\ufffd -LocaleNames/ru_RU/RU=\u0420\u043e\u0441\u0441\u0438\u044f -FormatData/ru_RU/DayAbbreviations/0=\u0412\u0441 -FormatData/ru_RU/DayAbbreviations/1=\u041f\u043d -FormatData/ru_RU/DayAbbreviations/2=\u0412\u0442 -FormatData/ru_RU/DayAbbreviations/3=\u0421\u0440 -FormatData/ru_RU/DayAbbreviations/4=\u0427\u0442 -FormatData/ru_RU/DayAbbreviations/5=\u041f\u0442 -FormatData/ru_RU/DayAbbreviations/6=\u0421\u0431 +FormatData/ru_RU/NumberElements/8=‰ +FormatData/ru_RU/NumberElements/9=∞ +FormatData/ru_RU/NumberElements/10=� +LocaleNames/ru_RU/RU=Россия +FormatData/ru_RU/DayAbbreviations/0=Вс +FormatData/ru_RU/DayAbbreviations/1=Пн +FormatData/ru_RU/DayAbbreviations/2=Вт +FormatData/ru_RU/DayAbbreviations/3=Ср +FormatData/ru_RU/DayAbbreviations/4=Чт +FormatData/ru_RU/DayAbbreviations/5=Пт +FormatData/ru_RU/DayAbbreviations/6=Сб FormatData/ru_RU/AmPmMarkers/0=AM FormatData/ru_RU/AmPmMarkers/1=PM CalendarData/ru_RU/firstDayOfWeek=2 @@ -503,20 +503,20 @@ FormatData/es_EC/NumberElements/0=, FormatData/es_EC/NumberElements/1=. FormatData/es_EC/NumberElements/2=; -LocaleNames/es/ES=Espa\u00f1a +LocaleNames/es/ES=España LocaleNames/es/AR=Argentina LocaleNames/es/BO=Bolivia LocaleNames/es/CL=Chile LocaleNames/es/CO=Colombia LocaleNames/es/CR=Costa Rica -LocaleNames/es/DO=Rep\u00fablica Dominicana +LocaleNames/es/DO=República Dominicana LocaleNames/es/EC=Ecuador LocaleNames/es/GT=Guatemala LocaleNames/es/HN=Honduras -LocaleNames/es/MX=M\u00e9xico +LocaleNames/es/MX=México LocaleNames/es/NI=Nicaragua -LocaleNames/es/PA=Panam\u00e1 -LocaleNames/es/PE=Per\u00fa +LocaleNames/es/PA=Panamá +LocaleNames/es/PE=Perú LocaleNames/es/PR=Puerto Rico LocaleNames/es/PY=Paraguay # LocaleNames/es/SV=El SalvadorUY # Changed, see bug 4331446 @@ -698,19 +698,19 @@ FormatData/es_VE/NumberElements/2=; # bug #4099810, 4290801, 6868106, 6916787 -CurrencyNames/uk_UA/UAH=\u0433\u0440\u043d. +CurrencyNames/uk_UA/UAH=грн. FormatData/uk_UA/NumberPatterns/0=#,##0.###;-#,##0.### -# FormatData/uk_UA/NumberPatterns/1=#,##0.## '\u0433\u0440\u0432.';-#,##0.## '\u0433\u0440\u0432.' # Changed; see bug 4122840 +# FormatData/uk_UA/NumberPatterns/1=#,##0.## 'грв.';-#,##0.## 'грв.' # Changed; see bug 4122840 FormatData/uk_UA/NumberPatterns/2=#,##0% # bug 6245766 -FormatData/uk/DatePatterns/0=EEEE, d MMMM yyyy \u0440. +FormatData/uk/DatePatterns/0=EEEE, d MMMM yyyy р. FormatData/uk/DatePatterns/1=d MMMM yyyy FormatData/uk/DatePatterns/2=d MMM yyyy FormatData/uk/DatePatterns/3=dd.MM.yy # bug #4103218 -# FormatData/ko_KR/NumberPatterns/1=\u20a9#,##0;-\u20a9#,##0 # Changed; see bug 4122840 +# FormatData/ko_KR/NumberPatterns/1=₩#,##0;-₩#,##0 # Changed; see bug 4122840 # bug #4103220 should be adequately tested by the above tests, which represent a pretty # good cross-section of the locale data @@ -732,57 +732,57 @@ FormatData/fr_CA/TimePatterns/1=HH:mm:ss z # bug #4113638, 4290801 -CurrencyNames/ar_AE/AED=\u062f.\u0625.\u200f +CurrencyNames/ar_AE/AED=د.إ.‏ FormatData/ar_AE/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_AE/NumberPatterns/1='\u062f.\u0625.\u200f' #,##0.###;'\u062f.\u0625.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_AE/NumberPatterns/1='د.إ.‏' #,##0.###;'د.إ.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_AE/NumberPatterns/2=#,##0% -FormatData/ar_AE/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_AE/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_AE/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_AE/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_AE/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_AE/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_AE/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_AE/DayNames/0=الأحد +FormatData/ar_AE/DayNames/1=الاثنين +FormatData/ar_AE/DayNames/2=الثلاثاء +FormatData/ar_AE/DayNames/3=الأربعاء +FormatData/ar_AE/DayNames/4=الخميس +FormatData/ar_AE/DayNames/5=الجمعة +FormatData/ar_AE/DayNames/6=السبت CalendarData/ar_AE/firstDayOfWeek=7 CalendarData/ar_AE/minimalDaysInFirstWeek=1 -FormatData/ar_AE/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_AE/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_AE/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_AE/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_AE/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_AE/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_AE/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_AE/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_AE/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_AE/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_AE/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_AE/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_AE/MonthAbbreviations/0=ينا +FormatData/ar_AE/MonthAbbreviations/1=فبر +FormatData/ar_AE/MonthAbbreviations/2=مار +FormatData/ar_AE/MonthAbbreviations/3=أبر +FormatData/ar_AE/MonthAbbreviations/4=ماي +FormatData/ar_AE/MonthAbbreviations/5=يون +FormatData/ar_AE/MonthAbbreviations/6=يول +FormatData/ar_AE/MonthAbbreviations/7=أغس +FormatData/ar_AE/MonthAbbreviations/8=سبت +FormatData/ar_AE/MonthAbbreviations/9=أكت +FormatData/ar_AE/MonthAbbreviations/10=نوف +FormatData/ar_AE/MonthAbbreviations/11=ديس FormatData/ar_AE/MonthAbbreviations/12= -FormatData/ar_AE/Eras/0=\u0642.\u0645 -FormatData/ar_AE/Eras/1=\u0645 -FormatData/ar_AE/DayAbbreviations/0=\u062d -FormatData/ar_AE/DayAbbreviations/1=\u0646 -FormatData/ar_AE/DayAbbreviations/2=\u062b -FormatData/ar_AE/DayAbbreviations/3=\u0631 -FormatData/ar_AE/DayAbbreviations/4=\u062e -FormatData/ar_AE/DayAbbreviations/5=\u062c -FormatData/ar_AE/DayAbbreviations/6=\u0633 -LocaleNames/ar_AE/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_AE/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_AE/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_AE/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_AE/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_AE/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_AE/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_AE/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_AE/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_AE/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_AE/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_AE/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_AE/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_AE/Eras/0=ق.م +FormatData/ar_AE/Eras/1=م +FormatData/ar_AE/DayAbbreviations/0=ح +FormatData/ar_AE/DayAbbreviations/1=ن +FormatData/ar_AE/DayAbbreviations/2=ث +FormatData/ar_AE/DayAbbreviations/3=ر +FormatData/ar_AE/DayAbbreviations/4=خ +FormatData/ar_AE/DayAbbreviations/5=ج +FormatData/ar_AE/DayAbbreviations/6=س +LocaleNames/ar_AE/ar=العربية +FormatData/ar_AE/MonthNames/0=يناير +FormatData/ar_AE/MonthNames/1=فبراير +FormatData/ar_AE/MonthNames/2=مارس +FormatData/ar_AE/MonthNames/3=أبريل +FormatData/ar_AE/MonthNames/4=مايو +FormatData/ar_AE/MonthNames/5=يونيو +FormatData/ar_AE/MonthNames/6=يوليو +FormatData/ar_AE/MonthNames/7=أغسطس +FormatData/ar_AE/MonthNames/8=سبتمبر +FormatData/ar_AE/MonthNames/9=أكتوبر +FormatData/ar_AE/MonthNames/10=نوفمبر +FormatData/ar_AE/MonthNames/11=ديسمبر FormatData/ar_AE/MonthNames/12= -FormatData/ar_AE/AmPmMarkers/0=\u0635 -FormatData/ar_AE/AmPmMarkers/1=\u0645 +FormatData/ar_AE/AmPmMarkers/0=ص +FormatData/ar_AE/AmPmMarkers/1=م FormatData/ar_AE/TimePatterns/0=z hh:mm:ss a FormatData/ar_AE/TimePatterns/1=z hh:mm:ss a FormatData/ar_AE/TimePatterns/2=hh:mm:ss a @@ -792,23 +792,23 @@ FormatData/ar_AE/DatePatterns/2=dd/MM/yyyy FormatData/ar_AE/DatePatterns/3=dd/MM/yy FormatData/ar_AE/DateTimePatterns/0={1} {0} -LocaleNames/ar_AE/EG=\u0645\u0635\u0631 -LocaleNames/ar_AE/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_AE/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_AE/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_AE/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_AE/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_AE/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_AE/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_AE/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_AE/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_AE/QA=\u0642\u0637\u0631 -LocaleNames/ar_AE/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_AE/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_AE/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_AE/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_AE/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_AE/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_AE/EG=مصر +LocaleNames/ar_AE/DZ=الجزائر +LocaleNames/ar_AE/BH=البحرين +LocaleNames/ar_AE/IQ=العراق +LocaleNames/ar_AE/JO=الأردن +LocaleNames/ar_AE/KW=الكويت +LocaleNames/ar_AE/LB=لبنان +LocaleNames/ar_AE/LY=ليبيا +LocaleNames/ar_AE/MA=المغرب +LocaleNames/ar_AE/OM=عُمان +LocaleNames/ar_AE/QA=قطر +LocaleNames/ar_AE/SA=المملكة العربية السعودية +LocaleNames/ar_AE/SD=السودان +LocaleNames/ar_AE/SY=سوريا +LocaleNames/ar_AE/TN=تونس +LocaleNames/ar_AE/AE=الإمارات العربية المتحدة +LocaleNames/ar_AE/YE=اليمن FormatData/ar_AE/NumberElements/0=. FormatData/ar_AE/NumberElements/1=, FormatData/ar_AE/NumberElements/2=; @@ -817,60 +817,60 @@ FormatData/ar_AE/NumberElements/5=# FormatData/ar_AE/NumberElements/6=- FormatData/ar_AE/NumberElements/7=E -FormatData/ar_AE/NumberElements/8=\u2030 -FormatData/ar_AE/NumberElements/9=\u221e -FormatData/ar_AE/NumberElements/10=\ufffd -CurrencyNames/ar_BH/BHD=\u062f.\u0628.\u200f +FormatData/ar_AE/NumberElements/8=‰ +FormatData/ar_AE/NumberElements/9=∞ +FormatData/ar_AE/NumberElements/10=� +CurrencyNames/ar_BH/BHD=د.ب.‏ FormatData/ar_BH/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_BH/NumberPatterns/1='\u062f.\u0628.\u200f' #,##0.###;'\u062f.\u0628.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_BH/NumberPatterns/1='د.ب.‏' #,##0.###;'د.ب.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_BH/NumberPatterns/2=#,##0% -FormatData/ar_BH/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_BH/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_BH/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_BH/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_BH/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_BH/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_BH/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_BH/DayNames/0=الأحد +FormatData/ar_BH/DayNames/1=الاثنين +FormatData/ar_BH/DayNames/2=الثلاثاء +FormatData/ar_BH/DayNames/3=الأربعاء +FormatData/ar_BH/DayNames/4=الخميس +FormatData/ar_BH/DayNames/5=الجمعة +FormatData/ar_BH/DayNames/6=السبت CalendarData/ar_BH/firstDayOfWeek=7 CalendarData/ar_BH/minimalDaysInFirstWeek=1 -FormatData/ar_BH/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_BH/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_BH/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_BH/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_BH/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_BH/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_BH/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_BH/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_BH/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_BH/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_BH/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_BH/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_BH/MonthAbbreviations/0=ينا +FormatData/ar_BH/MonthAbbreviations/1=فبر +FormatData/ar_BH/MonthAbbreviations/2=مار +FormatData/ar_BH/MonthAbbreviations/3=أبر +FormatData/ar_BH/MonthAbbreviations/4=ماي +FormatData/ar_BH/MonthAbbreviations/5=يون +FormatData/ar_BH/MonthAbbreviations/6=يول +FormatData/ar_BH/MonthAbbreviations/7=أغس +FormatData/ar_BH/MonthAbbreviations/8=سبت +FormatData/ar_BH/MonthAbbreviations/9=أكت +FormatData/ar_BH/MonthAbbreviations/10=نوف +FormatData/ar_BH/MonthAbbreviations/11=ديس FormatData/ar_BH/MonthAbbreviations/12= -FormatData/ar_BH/Eras/0=\u0642.\u0645 -FormatData/ar_BH/Eras/1=\u0645 -FormatData/ar_BH/DayAbbreviations/0=\u062d -FormatData/ar_BH/DayAbbreviations/1=\u0646 -FormatData/ar_BH/DayAbbreviations/2=\u062b -FormatData/ar_BH/DayAbbreviations/3=\u0631 -FormatData/ar_BH/DayAbbreviations/4=\u062e -FormatData/ar_BH/DayAbbreviations/5=\u062c -FormatData/ar_BH/DayAbbreviations/6=\u0633 -LocaleNames/ar_BH/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_BH/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_BH/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_BH/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_BH/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_BH/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_BH/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_BH/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_BH/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_BH/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_BH/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_BH/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_BH/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_BH/Eras/0=ق.م +FormatData/ar_BH/Eras/1=م +FormatData/ar_BH/DayAbbreviations/0=ح +FormatData/ar_BH/DayAbbreviations/1=ن +FormatData/ar_BH/DayAbbreviations/2=ث +FormatData/ar_BH/DayAbbreviations/3=ر +FormatData/ar_BH/DayAbbreviations/4=خ +FormatData/ar_BH/DayAbbreviations/5=ج +FormatData/ar_BH/DayAbbreviations/6=س +LocaleNames/ar_BH/ar=العربية +FormatData/ar_BH/MonthNames/0=يناير +FormatData/ar_BH/MonthNames/1=فبراير +FormatData/ar_BH/MonthNames/2=مارس +FormatData/ar_BH/MonthNames/3=أبريل +FormatData/ar_BH/MonthNames/4=مايو +FormatData/ar_BH/MonthNames/5=يونيو +FormatData/ar_BH/MonthNames/6=يوليو +FormatData/ar_BH/MonthNames/7=أغسطس +FormatData/ar_BH/MonthNames/8=سبتمبر +FormatData/ar_BH/MonthNames/9=أكتوبر +FormatData/ar_BH/MonthNames/10=نوفمبر +FormatData/ar_BH/MonthNames/11=ديسمبر FormatData/ar_BH/MonthNames/12= -FormatData/ar_BH/AmPmMarkers/0=\u0635 -FormatData/ar_BH/AmPmMarkers/1=\u0645 +FormatData/ar_BH/AmPmMarkers/0=ص +FormatData/ar_BH/AmPmMarkers/1=م FormatData/ar_BH/TimePatterns/0=z hh:mm:ss a FormatData/ar_BH/TimePatterns/1=z hh:mm:ss a FormatData/ar_BH/TimePatterns/2=hh:mm:ss a @@ -880,23 +880,23 @@ FormatData/ar_BH/DatePatterns/2=dd/MM/yyyy FormatData/ar_BH/DatePatterns/3=dd/MM/yy FormatData/ar_BH/DateTimePatterns/0={1} {0} -LocaleNames/ar_BH/EG=\u0645\u0635\u0631 -LocaleNames/ar_BH/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_BH/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_BH/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_BH/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_BH/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_BH/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_BH/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_BH/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_BH/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_BH/QA=\u0642\u0637\u0631 -LocaleNames/ar_BH/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_BH/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_BH/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_BH/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_BH/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_BH/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_BH/EG=مصر +LocaleNames/ar_BH/DZ=الجزائر +LocaleNames/ar_BH/BH=البحرين +LocaleNames/ar_BH/IQ=العراق +LocaleNames/ar_BH/JO=الأردن +LocaleNames/ar_BH/KW=الكويت +LocaleNames/ar_BH/LB=لبنان +LocaleNames/ar_BH/LY=ليبيا +LocaleNames/ar_BH/MA=المغرب +LocaleNames/ar_BH/OM=عُمان +LocaleNames/ar_BH/QA=قطر +LocaleNames/ar_BH/SA=المملكة العربية السعودية +LocaleNames/ar_BH/SD=السودان +LocaleNames/ar_BH/SY=سوريا +LocaleNames/ar_BH/TN=تونس +LocaleNames/ar_BH/AE=الإمارات العربية المتحدة +LocaleNames/ar_BH/YE=اليمن FormatData/ar_BH/NumberElements/0=. FormatData/ar_BH/NumberElements/1=, FormatData/ar_BH/NumberElements/2=; @@ -905,60 +905,60 @@ FormatData/ar_BH/NumberElements/5=# FormatData/ar_BH/NumberElements/6=- FormatData/ar_BH/NumberElements/7=E -FormatData/ar_BH/NumberElements/8=\u2030 -FormatData/ar_BH/NumberElements/9=\u221e -FormatData/ar_BH/NumberElements/10=\ufffd -CurrencyNames/ar_DZ/DZD=\u062f.\u062c.\u200f +FormatData/ar_BH/NumberElements/8=‰ +FormatData/ar_BH/NumberElements/9=∞ +FormatData/ar_BH/NumberElements/10=� +CurrencyNames/ar_DZ/DZD=د.ج.‏ FormatData/ar_DZ/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_DZ/NumberPatterns/1='\u062f.\u062c.\u200f' #,##0.###;'\u062f.\u062c.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_DZ/NumberPatterns/1='د.ج.‏' #,##0.###;'د.ج.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_DZ/NumberPatterns/2=#,##0% -FormatData/ar_DZ/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_DZ/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_DZ/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_DZ/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_DZ/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_DZ/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_DZ/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_DZ/DayNames/0=الأحد +FormatData/ar_DZ/DayNames/1=الاثنين +FormatData/ar_DZ/DayNames/2=الثلاثاء +FormatData/ar_DZ/DayNames/3=الأربعاء +FormatData/ar_DZ/DayNames/4=الخميس +FormatData/ar_DZ/DayNames/5=الجمعة +FormatData/ar_DZ/DayNames/6=السبت CalendarData/ar_DZ/firstDayOfWeek=7 CalendarData/ar_DZ/minimalDaysInFirstWeek=1 -FormatData/ar_DZ/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_DZ/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_DZ/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_DZ/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_DZ/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_DZ/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_DZ/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_DZ/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_DZ/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_DZ/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_DZ/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_DZ/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_DZ/MonthAbbreviations/0=ينا +FormatData/ar_DZ/MonthAbbreviations/1=فبر +FormatData/ar_DZ/MonthAbbreviations/2=مار +FormatData/ar_DZ/MonthAbbreviations/3=أبر +FormatData/ar_DZ/MonthAbbreviations/4=ماي +FormatData/ar_DZ/MonthAbbreviations/5=يون +FormatData/ar_DZ/MonthAbbreviations/6=يول +FormatData/ar_DZ/MonthAbbreviations/7=أغس +FormatData/ar_DZ/MonthAbbreviations/8=سبت +FormatData/ar_DZ/MonthAbbreviations/9=أكت +FormatData/ar_DZ/MonthAbbreviations/10=نوف +FormatData/ar_DZ/MonthAbbreviations/11=ديس FormatData/ar_DZ/MonthAbbreviations/12= -FormatData/ar_DZ/Eras/0=\u0642.\u0645 -FormatData/ar_DZ/Eras/1=\u0645 -FormatData/ar_DZ/DayAbbreviations/0=\u062d -FormatData/ar_DZ/DayAbbreviations/1=\u0646 -FormatData/ar_DZ/DayAbbreviations/2=\u062b -FormatData/ar_DZ/DayAbbreviations/3=\u0631 -FormatData/ar_DZ/DayAbbreviations/4=\u062e -FormatData/ar_DZ/DayAbbreviations/5=\u062c -FormatData/ar_DZ/DayAbbreviations/6=\u0633 -LocaleNames/ar_DZ/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_DZ/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_DZ/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_DZ/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_DZ/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_DZ/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_DZ/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_DZ/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_DZ/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_DZ/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_DZ/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_DZ/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_DZ/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_DZ/Eras/0=ق.م +FormatData/ar_DZ/Eras/1=م +FormatData/ar_DZ/DayAbbreviations/0=ح +FormatData/ar_DZ/DayAbbreviations/1=ن +FormatData/ar_DZ/DayAbbreviations/2=ث +FormatData/ar_DZ/DayAbbreviations/3=ر +FormatData/ar_DZ/DayAbbreviations/4=خ +FormatData/ar_DZ/DayAbbreviations/5=ج +FormatData/ar_DZ/DayAbbreviations/6=س +LocaleNames/ar_DZ/ar=العربية +FormatData/ar_DZ/MonthNames/0=يناير +FormatData/ar_DZ/MonthNames/1=فبراير +FormatData/ar_DZ/MonthNames/2=مارس +FormatData/ar_DZ/MonthNames/3=أبريل +FormatData/ar_DZ/MonthNames/4=مايو +FormatData/ar_DZ/MonthNames/5=يونيو +FormatData/ar_DZ/MonthNames/6=يوليو +FormatData/ar_DZ/MonthNames/7=أغسطس +FormatData/ar_DZ/MonthNames/8=سبتمبر +FormatData/ar_DZ/MonthNames/9=أكتوبر +FormatData/ar_DZ/MonthNames/10=نوفمبر +FormatData/ar_DZ/MonthNames/11=ديسمبر FormatData/ar_DZ/MonthNames/12= -FormatData/ar_DZ/AmPmMarkers/0=\u0635 -FormatData/ar_DZ/AmPmMarkers/1=\u0645 +FormatData/ar_DZ/AmPmMarkers/0=ص +FormatData/ar_DZ/AmPmMarkers/1=م FormatData/ar_DZ/TimePatterns/0=z hh:mm:ss a FormatData/ar_DZ/TimePatterns/1=z hh:mm:ss a FormatData/ar_DZ/TimePatterns/2=hh:mm:ss a @@ -968,23 +968,23 @@ FormatData/ar_DZ/DatePatterns/2=dd/MM/yyyy FormatData/ar_DZ/DatePatterns/3=dd/MM/yy FormatData/ar_DZ/DateTimePatterns/0={1} {0} -LocaleNames/ar_DZ/EG=\u0645\u0635\u0631 -LocaleNames/ar_DZ/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_DZ/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_DZ/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_DZ/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_DZ/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_DZ/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_DZ/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_DZ/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_DZ/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_DZ/QA=\u0642\u0637\u0631 -LocaleNames/ar_DZ/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_DZ/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_DZ/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_DZ/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_DZ/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_DZ/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_DZ/EG=مصر +LocaleNames/ar_DZ/DZ=الجزائر +LocaleNames/ar_DZ/BH=البحرين +LocaleNames/ar_DZ/IQ=العراق +LocaleNames/ar_DZ/JO=الأردن +LocaleNames/ar_DZ/KW=الكويت +LocaleNames/ar_DZ/LB=لبنان +LocaleNames/ar_DZ/LY=ليبيا +LocaleNames/ar_DZ/MA=المغرب +LocaleNames/ar_DZ/OM=عُمان +LocaleNames/ar_DZ/QA=قطر +LocaleNames/ar_DZ/SA=المملكة العربية السعودية +LocaleNames/ar_DZ/SD=السودان +LocaleNames/ar_DZ/SY=سوريا +LocaleNames/ar_DZ/TN=تونس +LocaleNames/ar_DZ/AE=الإمارات العربية المتحدة +LocaleNames/ar_DZ/YE=اليمن FormatData/ar_DZ/NumberElements/0=. FormatData/ar_DZ/NumberElements/1=, FormatData/ar_DZ/NumberElements/2=; @@ -993,60 +993,60 @@ FormatData/ar_DZ/NumberElements/5=# FormatData/ar_DZ/NumberElements/6=- FormatData/ar_DZ/NumberElements/7=E -FormatData/ar_DZ/NumberElements/8=\u2030 -FormatData/ar_DZ/NumberElements/9=\u221e -FormatData/ar_DZ/NumberElements/10=\ufffd -CurrencyNames/ar_EG/EGP=\u062c.\u0645.\u200f +FormatData/ar_DZ/NumberElements/8=‰ +FormatData/ar_DZ/NumberElements/9=∞ +FormatData/ar_DZ/NumberElements/10=� +CurrencyNames/ar_EG/EGP=ج.م.‏ FormatData/ar_EG/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_EG/NumberPatterns/1='\u062c.\u0645.\u200f' #,##0.###;'\u062c.\u0645.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_EG/NumberPatterns/1='ج.م.‏' #,##0.###;'ج.م.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_EG/NumberPatterns/2=#,##0% -FormatData/ar_EG/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_EG/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_EG/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_EG/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_EG/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_EG/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_EG/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_EG/DayNames/0=الأحد +FormatData/ar_EG/DayNames/1=الاثنين +FormatData/ar_EG/DayNames/2=الثلاثاء +FormatData/ar_EG/DayNames/3=الأربعاء +FormatData/ar_EG/DayNames/4=الخميس +FormatData/ar_EG/DayNames/5=الجمعة +FormatData/ar_EG/DayNames/6=السبت CalendarData/ar_EG/firstDayOfWeek=7 CalendarData/ar_EG/minimalDaysInFirstWeek=1 -FormatData/ar_EG/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_EG/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_EG/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_EG/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_EG/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_EG/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_EG/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_EG/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_EG/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_EG/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_EG/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_EG/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_EG/MonthAbbreviations/0=ينا +FormatData/ar_EG/MonthAbbreviations/1=فبر +FormatData/ar_EG/MonthAbbreviations/2=مار +FormatData/ar_EG/MonthAbbreviations/3=أبر +FormatData/ar_EG/MonthAbbreviations/4=ماي +FormatData/ar_EG/MonthAbbreviations/5=يون +FormatData/ar_EG/MonthAbbreviations/6=يول +FormatData/ar_EG/MonthAbbreviations/7=أغس +FormatData/ar_EG/MonthAbbreviations/8=سبت +FormatData/ar_EG/MonthAbbreviations/9=أكت +FormatData/ar_EG/MonthAbbreviations/10=نوف +FormatData/ar_EG/MonthAbbreviations/11=ديس FormatData/ar_EG/MonthAbbreviations/12= -FormatData/ar_EG/Eras/0=\u0642.\u0645 -FormatData/ar_EG/Eras/1=\u0645 -FormatData/ar_EG/DayAbbreviations/0=\u062d -FormatData/ar_EG/DayAbbreviations/1=\u0646 -FormatData/ar_EG/DayAbbreviations/2=\u062b -FormatData/ar_EG/DayAbbreviations/3=\u0631 -FormatData/ar_EG/DayAbbreviations/4=\u062e -FormatData/ar_EG/DayAbbreviations/5=\u062c -FormatData/ar_EG/DayAbbreviations/6=\u0633 -LocaleNames/ar_EG/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_EG/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_EG/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_EG/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_EG/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_EG/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_EG/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_EG/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_EG/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_EG/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_EG/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_EG/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_EG/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_EG/Eras/0=ق.م +FormatData/ar_EG/Eras/1=م +FormatData/ar_EG/DayAbbreviations/0=ح +FormatData/ar_EG/DayAbbreviations/1=ن +FormatData/ar_EG/DayAbbreviations/2=ث +FormatData/ar_EG/DayAbbreviations/3=ر +FormatData/ar_EG/DayAbbreviations/4=خ +FormatData/ar_EG/DayAbbreviations/5=ج +FormatData/ar_EG/DayAbbreviations/6=س +LocaleNames/ar_EG/ar=العربية +FormatData/ar_EG/MonthNames/0=يناير +FormatData/ar_EG/MonthNames/1=فبراير +FormatData/ar_EG/MonthNames/2=مارس +FormatData/ar_EG/MonthNames/3=أبريل +FormatData/ar_EG/MonthNames/4=مايو +FormatData/ar_EG/MonthNames/5=يونيو +FormatData/ar_EG/MonthNames/6=يوليو +FormatData/ar_EG/MonthNames/7=أغسطس +FormatData/ar_EG/MonthNames/8=سبتمبر +FormatData/ar_EG/MonthNames/9=أكتوبر +FormatData/ar_EG/MonthNames/10=نوفمبر +FormatData/ar_EG/MonthNames/11=ديسمبر FormatData/ar_EG/MonthNames/12= -FormatData/ar_EG/AmPmMarkers/0=\u0635 -FormatData/ar_EG/AmPmMarkers/1=\u0645 +FormatData/ar_EG/AmPmMarkers/0=ص +FormatData/ar_EG/AmPmMarkers/1=م FormatData/ar_EG/TimePatterns/0=z hh:mm:ss a FormatData/ar_EG/TimePatterns/1=z hh:mm:ss a FormatData/ar_EG/TimePatterns/2=hh:mm:ss a @@ -1056,23 +1056,23 @@ FormatData/ar_EG/DatePatterns/2=dd/MM/yyyy FormatData/ar_EG/DatePatterns/3=dd/MM/yy FormatData/ar_EG/DateTimePatterns/0={1} {0} -LocaleNames/ar_EG/EG=\u0645\u0635\u0631 -LocaleNames/ar_EG/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_EG/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_EG/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_EG/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_EG/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_EG/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_EG/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_EG/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_EG/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_EG/QA=\u0642\u0637\u0631 -LocaleNames/ar_EG/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_EG/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_EG/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_EG/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_EG/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_EG/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_EG/EG=مصر +LocaleNames/ar_EG/DZ=الجزائر +LocaleNames/ar_EG/BH=البحرين +LocaleNames/ar_EG/IQ=العراق +LocaleNames/ar_EG/JO=الأردن +LocaleNames/ar_EG/KW=الكويت +LocaleNames/ar_EG/LB=لبنان +LocaleNames/ar_EG/LY=ليبيا +LocaleNames/ar_EG/MA=المغرب +LocaleNames/ar_EG/OM=عُمان +LocaleNames/ar_EG/QA=قطر +LocaleNames/ar_EG/SA=المملكة العربية السعودية +LocaleNames/ar_EG/SD=السودان +LocaleNames/ar_EG/SY=سوريا +LocaleNames/ar_EG/TN=تونس +LocaleNames/ar_EG/AE=الإمارات العربية المتحدة +LocaleNames/ar_EG/YE=اليمن FormatData/ar_EG/NumberElements/0=. FormatData/ar_EG/NumberElements/1=, FormatData/ar_EG/NumberElements/2=; @@ -1081,60 +1081,60 @@ FormatData/ar_EG/NumberElements/5=# FormatData/ar_EG/NumberElements/6=- FormatData/ar_EG/NumberElements/7=E -FormatData/ar_EG/NumberElements/8=\u2030 -FormatData/ar_EG/NumberElements/9=\u221e -FormatData/ar_EG/NumberElements/10=\ufffd -CurrencyNames/ar_IQ/IQD=\u062f.\u0639.\u200f +FormatData/ar_EG/NumberElements/8=‰ +FormatData/ar_EG/NumberElements/9=∞ +FormatData/ar_EG/NumberElements/10=� +CurrencyNames/ar_IQ/IQD=د.ع.‏ FormatData/ar_IQ/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_IQ/NumberPatterns/1='\u062f.\u0639.\u200f' #,##0.###;'\u062f.\u0639.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_IQ/NumberPatterns/1='د.ع.‏' #,##0.###;'د.ع.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_IQ/NumberPatterns/2=#,##0% -FormatData/ar_IQ/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_IQ/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_IQ/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_IQ/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_IQ/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_IQ/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_IQ/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_IQ/DayNames/0=الأحد +FormatData/ar_IQ/DayNames/1=الاثنين +FormatData/ar_IQ/DayNames/2=الثلاثاء +FormatData/ar_IQ/DayNames/3=الأربعاء +FormatData/ar_IQ/DayNames/4=الخميس +FormatData/ar_IQ/DayNames/5=الجمعة +FormatData/ar_IQ/DayNames/6=السبت CalendarData/ar_IQ/firstDayOfWeek=7 CalendarData/ar_IQ/minimalDaysInFirstWeek=1 -FormatData/ar_IQ/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_IQ/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_IQ/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_IQ/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_IQ/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_IQ/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_IQ/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_IQ/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_IQ/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_IQ/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_IQ/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_IQ/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_IQ/MonthAbbreviations/0=ينا +FormatData/ar_IQ/MonthAbbreviations/1=فبر +FormatData/ar_IQ/MonthAbbreviations/2=مار +FormatData/ar_IQ/MonthAbbreviations/3=أبر +FormatData/ar_IQ/MonthAbbreviations/4=ماي +FormatData/ar_IQ/MonthAbbreviations/5=يون +FormatData/ar_IQ/MonthAbbreviations/6=يول +FormatData/ar_IQ/MonthAbbreviations/7=أغس +FormatData/ar_IQ/MonthAbbreviations/8=سبت +FormatData/ar_IQ/MonthAbbreviations/9=أكت +FormatData/ar_IQ/MonthAbbreviations/10=نوف +FormatData/ar_IQ/MonthAbbreviations/11=ديس FormatData/ar_IQ/MonthAbbreviations/12= -FormatData/ar_IQ/Eras/0=\u0642.\u0645 -FormatData/ar_IQ/Eras/1=\u0645 -FormatData/ar_IQ/DayAbbreviations/0=\u062d -FormatData/ar_IQ/DayAbbreviations/1=\u0646 -FormatData/ar_IQ/DayAbbreviations/2=\u062b -FormatData/ar_IQ/DayAbbreviations/3=\u0631 -FormatData/ar_IQ/DayAbbreviations/4=\u062e -FormatData/ar_IQ/DayAbbreviations/5=\u062c -FormatData/ar_IQ/DayAbbreviations/6=\u0633 -LocaleNames/ar_IQ/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_IQ/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_IQ/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_IQ/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_IQ/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_IQ/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_IQ/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_IQ/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_IQ/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_IQ/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_IQ/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_IQ/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_IQ/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_IQ/Eras/0=ق.م +FormatData/ar_IQ/Eras/1=م +FormatData/ar_IQ/DayAbbreviations/0=ح +FormatData/ar_IQ/DayAbbreviations/1=ن +FormatData/ar_IQ/DayAbbreviations/2=ث +FormatData/ar_IQ/DayAbbreviations/3=ر +FormatData/ar_IQ/DayAbbreviations/4=خ +FormatData/ar_IQ/DayAbbreviations/5=ج +FormatData/ar_IQ/DayAbbreviations/6=س +LocaleNames/ar_IQ/ar=العربية +FormatData/ar_IQ/MonthNames/0=يناير +FormatData/ar_IQ/MonthNames/1=فبراير +FormatData/ar_IQ/MonthNames/2=مارس +FormatData/ar_IQ/MonthNames/3=أبريل +FormatData/ar_IQ/MonthNames/4=مايو +FormatData/ar_IQ/MonthNames/5=يونيو +FormatData/ar_IQ/MonthNames/6=يوليو +FormatData/ar_IQ/MonthNames/7=أغسطس +FormatData/ar_IQ/MonthNames/8=سبتمبر +FormatData/ar_IQ/MonthNames/9=أكتوبر +FormatData/ar_IQ/MonthNames/10=نوفمبر +FormatData/ar_IQ/MonthNames/11=ديسمبر FormatData/ar_IQ/MonthNames/12= -FormatData/ar_IQ/AmPmMarkers/0=\u0635 -FormatData/ar_IQ/AmPmMarkers/1=\u0645 +FormatData/ar_IQ/AmPmMarkers/0=ص +FormatData/ar_IQ/AmPmMarkers/1=م FormatData/ar_IQ/TimePatterns/0=z hh:mm:ss a FormatData/ar_IQ/TimePatterns/1=z hh:mm:ss a FormatData/ar_IQ/TimePatterns/2=hh:mm:ss a @@ -1144,23 +1144,23 @@ FormatData/ar_IQ/DatePatterns/2=dd/MM/yyyy FormatData/ar_IQ/DatePatterns/3=dd/MM/yy FormatData/ar_IQ/DateTimePatterns/0={1} {0} -LocaleNames/ar_IQ/EG=\u0645\u0635\u0631 -LocaleNames/ar_IQ/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_IQ/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_IQ/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_IQ/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_IQ/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_IQ/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_IQ/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_IQ/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_IQ/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_IQ/QA=\u0642\u0637\u0631 -LocaleNames/ar_IQ/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_IQ/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_IQ/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_IQ/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_IQ/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_IQ/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_IQ/EG=مصر +LocaleNames/ar_IQ/DZ=الجزائر +LocaleNames/ar_IQ/BH=البحرين +LocaleNames/ar_IQ/IQ=العراق +LocaleNames/ar_IQ/JO=الأردن +LocaleNames/ar_IQ/KW=الكويت +LocaleNames/ar_IQ/LB=لبنان +LocaleNames/ar_IQ/LY=ليبيا +LocaleNames/ar_IQ/MA=المغرب +LocaleNames/ar_IQ/OM=عُمان +LocaleNames/ar_IQ/QA=قطر +LocaleNames/ar_IQ/SA=المملكة العربية السعودية +LocaleNames/ar_IQ/SD=السودان +LocaleNames/ar_IQ/SY=سوريا +LocaleNames/ar_IQ/TN=تونس +LocaleNames/ar_IQ/AE=الإمارات العربية المتحدة +LocaleNames/ar_IQ/YE=اليمن FormatData/ar_IQ/NumberElements/0=. FormatData/ar_IQ/NumberElements/1=, FormatData/ar_IQ/NumberElements/2=; @@ -1169,60 +1169,60 @@ FormatData/ar_IQ/NumberElements/5=# FormatData/ar_IQ/NumberElements/6=- FormatData/ar_IQ/NumberElements/7=E -FormatData/ar_IQ/NumberElements/8=\u2030 -FormatData/ar_IQ/NumberElements/9=\u221e -FormatData/ar_IQ/NumberElements/10=\ufffd +FormatData/ar_IQ/NumberElements/8=‰ +FormatData/ar_IQ/NumberElements/9=∞ +FormatData/ar_IQ/NumberElements/10=� FormatData/ar_JO/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_JO/NumberPatterns/1='\u062f.\u0623.\u200f' #,##0.###;'\u062f.\u0623.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_JO/NumberPatterns/1='د.أ.‏' #,##0.###;'د.أ.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_JO/NumberPatterns/2=#,##0% -CurrencyNames/ar_JO/JOD=\u062f.\u0623.\u200f -FormatData/ar_JO/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_JO/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_JO/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_JO/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_JO/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_JO/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_JO/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_JO/MonthNames/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_JO/MonthNames/1=\u0634\u0628\u0627\u0637 -FormatData/ar_JO/MonthNames/2=\u0622\u0630\u0627\u0631 -FormatData/ar_JO/MonthNames/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_JO/MonthNames/4=\u0623\u064a\u0627\u0631 -FormatData/ar_JO/MonthNames/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_JO/MonthNames/6=\u062a\u0645\u0648\u0632 -FormatData/ar_JO/MonthNames/7=\u0622\u0628 -FormatData/ar_JO/MonthNames/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_JO/MonthNames/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_JO/MonthNames/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_JO/MonthNames/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +CurrencyNames/ar_JO/JOD=د.أ.‏ +FormatData/ar_JO/DayAbbreviations/0=الأحد +FormatData/ar_JO/DayAbbreviations/1=الاثنين +FormatData/ar_JO/DayAbbreviations/2=الثلاثاء +FormatData/ar_JO/DayAbbreviations/3=الأربعاء +FormatData/ar_JO/DayAbbreviations/4=الخميس +FormatData/ar_JO/DayAbbreviations/5=الجمعة +FormatData/ar_JO/DayAbbreviations/6=السبت +FormatData/ar_JO/MonthNames/0=كانون الثاني +FormatData/ar_JO/MonthNames/1=شباط +FormatData/ar_JO/MonthNames/2=آذار +FormatData/ar_JO/MonthNames/3=نيسان +FormatData/ar_JO/MonthNames/4=أيار +FormatData/ar_JO/MonthNames/5=حزيران +FormatData/ar_JO/MonthNames/6=تموز +FormatData/ar_JO/MonthNames/7=آب +FormatData/ar_JO/MonthNames/8=أيلول +FormatData/ar_JO/MonthNames/9=تشرين الأول +FormatData/ar_JO/MonthNames/10=تشرين الثاني +FormatData/ar_JO/MonthNames/11=كانون الأول FormatData/ar_JO/MonthNames/12= -FormatData/ar_JO/MonthAbbreviations/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_JO/MonthAbbreviations/1=\u0634\u0628\u0627\u0637 -FormatData/ar_JO/MonthAbbreviations/2=\u0622\u0630\u0627\u0631 -FormatData/ar_JO/MonthAbbreviations/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_JO/MonthAbbreviations/4=\u0623\u064a\u0627\u0631 -FormatData/ar_JO/MonthAbbreviations/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_JO/MonthAbbreviations/6=\u062a\u0645\u0648\u0632 -FormatData/ar_JO/MonthAbbreviations/7=\u0622\u0628 -FormatData/ar_JO/MonthAbbreviations/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_JO/MonthAbbreviations/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_JO/MonthAbbreviations/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_JO/MonthAbbreviations/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +FormatData/ar_JO/MonthAbbreviations/0=كانون الثاني +FormatData/ar_JO/MonthAbbreviations/1=شباط +FormatData/ar_JO/MonthAbbreviations/2=آذار +FormatData/ar_JO/MonthAbbreviations/3=نيسان +FormatData/ar_JO/MonthAbbreviations/4=أيار +FormatData/ar_JO/MonthAbbreviations/5=حزيران +FormatData/ar_JO/MonthAbbreviations/6=تموز +FormatData/ar_JO/MonthAbbreviations/7=آب +FormatData/ar_JO/MonthAbbreviations/8=أيلول +FormatData/ar_JO/MonthAbbreviations/9=تشرين الأول +FormatData/ar_JO/MonthAbbreviations/10=تشرين الثاني +FormatData/ar_JO/MonthAbbreviations/11=كانون الأول FormatData/ar_JO/MonthAbbreviations/12= -FormatData/ar_JO/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_JO/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_JO/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_JO/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_JO/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_JO/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_JO/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_JO/DayNames/0=الأحد +FormatData/ar_JO/DayNames/1=الاثنين +FormatData/ar_JO/DayNames/2=الثلاثاء +FormatData/ar_JO/DayNames/3=الأربعاء +FormatData/ar_JO/DayNames/4=الخميس +FormatData/ar_JO/DayNames/5=الجمعة +FormatData/ar_JO/DayNames/6=السبت CalendarData/ar_JO/firstDayOfWeek=7 CalendarData/ar_JO/minimalDaysInFirstWeek=1 -FormatData/ar_JO/Eras/0=\u0642.\u0645 -FormatData/ar_JO/Eras/1=\u0645 -LocaleNames/ar_JO/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_JO/AmPmMarkers/0=\u0635 -FormatData/ar_JO/AmPmMarkers/1=\u0645 +FormatData/ar_JO/Eras/0=ق.م +FormatData/ar_JO/Eras/1=م +LocaleNames/ar_JO/ar=العربية +FormatData/ar_JO/AmPmMarkers/0=ص +FormatData/ar_JO/AmPmMarkers/1=م FormatData/ar_JO/TimePatterns/0=z hh:mm:ss a FormatData/ar_JO/TimePatterns/1=z hh:mm:ss a FormatData/ar_JO/TimePatterns/2=hh:mm:ss a @@ -1232,23 +1232,23 @@ FormatData/ar_JO/DatePatterns/2=dd/MM/yyyy FormatData/ar_JO/DatePatterns/3=dd/MM/yy FormatData/ar_JO/DateTimePatterns/0={1} {0} -LocaleNames/ar_JO/EG=\u0645\u0635\u0631 -LocaleNames/ar_JO/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_JO/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_JO/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_JO/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_JO/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_JO/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_JO/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_JO/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_JO/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_JO/QA=\u0642\u0637\u0631 -LocaleNames/ar_JO/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_JO/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_JO/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_JO/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_JO/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_JO/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_JO/EG=مصر +LocaleNames/ar_JO/DZ=الجزائر +LocaleNames/ar_JO/BH=البحرين +LocaleNames/ar_JO/IQ=العراق +LocaleNames/ar_JO/JO=الأردن +LocaleNames/ar_JO/KW=الكويت +LocaleNames/ar_JO/LB=لبنان +LocaleNames/ar_JO/LY=ليبيا +LocaleNames/ar_JO/MA=المغرب +LocaleNames/ar_JO/OM=عُمان +LocaleNames/ar_JO/QA=قطر +LocaleNames/ar_JO/SA=المملكة العربية السعودية +LocaleNames/ar_JO/SD=السودان +LocaleNames/ar_JO/SY=سوريا +LocaleNames/ar_JO/TN=تونس +LocaleNames/ar_JO/AE=الإمارات العربية المتحدة +LocaleNames/ar_JO/YE=اليمن FormatData/ar_JO/NumberElements/0=. FormatData/ar_JO/NumberElements/1=, FormatData/ar_JO/NumberElements/2=; @@ -1257,60 +1257,60 @@ FormatData/ar_JO/NumberElements/5=# FormatData/ar_JO/NumberElements/6=- FormatData/ar_JO/NumberElements/7=E -FormatData/ar_JO/NumberElements/8=\u2030 -FormatData/ar_JO/NumberElements/9=\u221e -FormatData/ar_JO/NumberElements/10=\ufffd -CurrencyNames/ar_KW/KWD=\u062f.\u0643.\u200f +FormatData/ar_JO/NumberElements/8=‰ +FormatData/ar_JO/NumberElements/9=∞ +FormatData/ar_JO/NumberElements/10=� +CurrencyNames/ar_KW/KWD=د.ك.‏ FormatData/ar_KW/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_KW/NumberPatterns/1='\u062f.\u0643.\u200f' #,##0.###;'\u062f.\u0643.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_KW/NumberPatterns/1='د.ك.‏' #,##0.###;'د.ك.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_KW/NumberPatterns/2=#,##0% -FormatData/ar_KW/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_KW/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_KW/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_KW/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_KW/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_KW/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_KW/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_KW/DayNames/0=الأحد +FormatData/ar_KW/DayNames/1=الاثنين +FormatData/ar_KW/DayNames/2=الثلاثاء +FormatData/ar_KW/DayNames/3=الأربعاء +FormatData/ar_KW/DayNames/4=الخميس +FormatData/ar_KW/DayNames/5=الجمعة +FormatData/ar_KW/DayNames/6=السبت CalendarData/ar_KW/firstDayOfWeek=7 CalendarData/ar_KW/minimalDaysInFirstWeek=1 -FormatData/ar_KW/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_KW/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_KW/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_KW/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_KW/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_KW/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_KW/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_KW/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_KW/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_KW/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_KW/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_KW/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_KW/MonthAbbreviations/0=ينا +FormatData/ar_KW/MonthAbbreviations/1=فبر +FormatData/ar_KW/MonthAbbreviations/2=مار +FormatData/ar_KW/MonthAbbreviations/3=أبر +FormatData/ar_KW/MonthAbbreviations/4=ماي +FormatData/ar_KW/MonthAbbreviations/5=يون +FormatData/ar_KW/MonthAbbreviations/6=يول +FormatData/ar_KW/MonthAbbreviations/7=أغس +FormatData/ar_KW/MonthAbbreviations/8=سبت +FormatData/ar_KW/MonthAbbreviations/9=أكت +FormatData/ar_KW/MonthAbbreviations/10=نوف +FormatData/ar_KW/MonthAbbreviations/11=ديس FormatData/ar_KW/MonthAbbreviations/12= -FormatData/ar_KW/Eras/0=\u0642.\u0645 -FormatData/ar_KW/Eras/1=\u0645 -FormatData/ar_KW/DayAbbreviations/0=\u062d -FormatData/ar_KW/DayAbbreviations/1=\u0646 -FormatData/ar_KW/DayAbbreviations/2=\u062b -FormatData/ar_KW/DayAbbreviations/3=\u0631 -FormatData/ar_KW/DayAbbreviations/4=\u062e -FormatData/ar_KW/DayAbbreviations/5=\u062c -FormatData/ar_KW/DayAbbreviations/6=\u0633 -LocaleNames/ar_KW/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_KW/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_KW/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_KW/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_KW/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_KW/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_KW/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_KW/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_KW/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_KW/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_KW/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_KW/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_KW/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_KW/Eras/0=ق.م +FormatData/ar_KW/Eras/1=م +FormatData/ar_KW/DayAbbreviations/0=ح +FormatData/ar_KW/DayAbbreviations/1=ن +FormatData/ar_KW/DayAbbreviations/2=ث +FormatData/ar_KW/DayAbbreviations/3=ر +FormatData/ar_KW/DayAbbreviations/4=خ +FormatData/ar_KW/DayAbbreviations/5=ج +FormatData/ar_KW/DayAbbreviations/6=س +LocaleNames/ar_KW/ar=العربية +FormatData/ar_KW/MonthNames/0=يناير +FormatData/ar_KW/MonthNames/1=فبراير +FormatData/ar_KW/MonthNames/2=مارس +FormatData/ar_KW/MonthNames/3=أبريل +FormatData/ar_KW/MonthNames/4=مايو +FormatData/ar_KW/MonthNames/5=يونيو +FormatData/ar_KW/MonthNames/6=يوليو +FormatData/ar_KW/MonthNames/7=أغسطس +FormatData/ar_KW/MonthNames/8=سبتمبر +FormatData/ar_KW/MonthNames/9=أكتوبر +FormatData/ar_KW/MonthNames/10=نوفمبر +FormatData/ar_KW/MonthNames/11=ديسمبر FormatData/ar_KW/MonthNames/12= -FormatData/ar_KW/AmPmMarkers/0=\u0635 -FormatData/ar_KW/AmPmMarkers/1=\u0645 +FormatData/ar_KW/AmPmMarkers/0=ص +FormatData/ar_KW/AmPmMarkers/1=م FormatData/ar_KW/TimePatterns/0=z hh:mm:ss a FormatData/ar_KW/TimePatterns/1=z hh:mm:ss a FormatData/ar_KW/TimePatterns/2=hh:mm:ss a @@ -1320,23 +1320,23 @@ FormatData/ar_KW/DatePatterns/2=dd/MM/yyyy FormatData/ar_KW/DatePatterns/3=dd/MM/yy FormatData/ar_KW/DateTimePatterns/0={1} {0} -LocaleNames/ar_KW/EG=\u0645\u0635\u0631 -LocaleNames/ar_KW/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_KW/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_KW/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_KW/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_KW/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_KW/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_KW/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_KW/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_KW/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_KW/QA=\u0642\u0637\u0631 -LocaleNames/ar_KW/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_KW/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_KW/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_KW/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_KW/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_KW/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_KW/EG=مصر +LocaleNames/ar_KW/DZ=الجزائر +LocaleNames/ar_KW/BH=البحرين +LocaleNames/ar_KW/IQ=العراق +LocaleNames/ar_KW/JO=الأردن +LocaleNames/ar_KW/KW=الكويت +LocaleNames/ar_KW/LB=لبنان +LocaleNames/ar_KW/LY=ليبيا +LocaleNames/ar_KW/MA=المغرب +LocaleNames/ar_KW/OM=عُمان +LocaleNames/ar_KW/QA=قطر +LocaleNames/ar_KW/SA=المملكة العربية السعودية +LocaleNames/ar_KW/SD=السودان +LocaleNames/ar_KW/SY=سوريا +LocaleNames/ar_KW/TN=تونس +LocaleNames/ar_KW/AE=الإمارات العربية المتحدة +LocaleNames/ar_KW/YE=اليمن FormatData/ar_KW/NumberElements/0=. FormatData/ar_KW/NumberElements/1=, FormatData/ar_KW/NumberElements/2=; @@ -1345,60 +1345,60 @@ FormatData/ar_KW/NumberElements/5=# FormatData/ar_KW/NumberElements/6=- FormatData/ar_KW/NumberElements/7=E -FormatData/ar_KW/NumberElements/8=\u2030 -FormatData/ar_KW/NumberElements/9=\u221e -FormatData/ar_KW/NumberElements/10=\ufffd +FormatData/ar_KW/NumberElements/8=‰ +FormatData/ar_KW/NumberElements/9=∞ +FormatData/ar_KW/NumberElements/10=� FormatData/ar_LB/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_LB/NumberPatterns/1='\u0644.\u0644.\u200f' #,##0.###;'\u0644.\u0644.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_LB/NumberPatterns/1='ل.ل.‏' #,##0.###;'ل.ل.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_LB/NumberPatterns/2=#,##0% -CurrencyNames/ar_LB/LBP=\u0644.\u0644.\u200f -FormatData/ar_LB/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_LB/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_LB/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_LB/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_LB/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_LB/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_LB/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_LB/MonthNames/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_LB/MonthNames/1=\u0634\u0628\u0627\u0637 -FormatData/ar_LB/MonthNames/2=\u0622\u0630\u0627\u0631 -FormatData/ar_LB/MonthNames/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_LB/MonthNames/4=\u0623\u064a\u0627\u0631 -FormatData/ar_LB/MonthNames/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_LB/MonthNames/6=\u062a\u0645\u0648\u0632 -FormatData/ar_LB/MonthNames/7=\u0622\u0628 -FormatData/ar_LB/MonthNames/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_LB/MonthNames/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_LB/MonthNames/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_LB/MonthNames/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +CurrencyNames/ar_LB/LBP=ل.ل.‏ +FormatData/ar_LB/DayAbbreviations/0=الأحد +FormatData/ar_LB/DayAbbreviations/1=الاثنين +FormatData/ar_LB/DayAbbreviations/2=الثلاثاء +FormatData/ar_LB/DayAbbreviations/3=الأربعاء +FormatData/ar_LB/DayAbbreviations/4=الخميس +FormatData/ar_LB/DayAbbreviations/5=الجمعة +FormatData/ar_LB/DayAbbreviations/6=السبت +FormatData/ar_LB/MonthNames/0=كانون الثاني +FormatData/ar_LB/MonthNames/1=شباط +FormatData/ar_LB/MonthNames/2=آذار +FormatData/ar_LB/MonthNames/3=نيسان +FormatData/ar_LB/MonthNames/4=أيار +FormatData/ar_LB/MonthNames/5=حزيران +FormatData/ar_LB/MonthNames/6=تموز +FormatData/ar_LB/MonthNames/7=آب +FormatData/ar_LB/MonthNames/8=أيلول +FormatData/ar_LB/MonthNames/9=تشرين الأول +FormatData/ar_LB/MonthNames/10=تشرين الثاني +FormatData/ar_LB/MonthNames/11=كانون الأول FormatData/ar_LB/MonthNames/12= -FormatData/ar_LB/MonthAbbreviations/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_LB/MonthAbbreviations/1=\u0634\u0628\u0627\u0637 -FormatData/ar_LB/MonthAbbreviations/2=\u0622\u0630\u0627\u0631 -FormatData/ar_LB/MonthAbbreviations/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_LB/MonthAbbreviations/4=\u0623\u064a\u0627\u0631 -FormatData/ar_LB/MonthAbbreviations/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_LB/MonthAbbreviations/6=\u062a\u0645\u0648\u0632 -FormatData/ar_LB/MonthAbbreviations/7=\u0622\u0628 -FormatData/ar_LB/MonthAbbreviations/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_LB/MonthAbbreviations/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_LB/MonthAbbreviations/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_LB/MonthAbbreviations/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +FormatData/ar_LB/MonthAbbreviations/0=كانون الثاني +FormatData/ar_LB/MonthAbbreviations/1=شباط +FormatData/ar_LB/MonthAbbreviations/2=آذار +FormatData/ar_LB/MonthAbbreviations/3=نيسان +FormatData/ar_LB/MonthAbbreviations/4=أيار +FormatData/ar_LB/MonthAbbreviations/5=حزيران +FormatData/ar_LB/MonthAbbreviations/6=تموز +FormatData/ar_LB/MonthAbbreviations/7=آب +FormatData/ar_LB/MonthAbbreviations/8=أيلول +FormatData/ar_LB/MonthAbbreviations/9=تشرين الأول +FormatData/ar_LB/MonthAbbreviations/10=تشرين الثاني +FormatData/ar_LB/MonthAbbreviations/11=كانون الأول FormatData/ar_LB/MonthAbbreviations/12= -FormatData/ar_LB/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_LB/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_LB/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_LB/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_LB/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_LB/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_LB/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_LB/DayNames/0=الأحد +FormatData/ar_LB/DayNames/1=الاثنين +FormatData/ar_LB/DayNames/2=الثلاثاء +FormatData/ar_LB/DayNames/3=الأربعاء +FormatData/ar_LB/DayNames/4=الخميس +FormatData/ar_LB/DayNames/5=الجمعة +FormatData/ar_LB/DayNames/6=السبت CalendarData/ar_LB/firstDayOfWeek=7 CalendarData/ar_LB/minimalDaysInFirstWeek=1 -FormatData/ar_LB/Eras/0=\u0642.\u0645 -FormatData/ar_LB/Eras/1=\u0645 -LocaleNames/ar_LB/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_LB/AmPmMarkers/0=\u0635 -FormatData/ar_LB/AmPmMarkers/1=\u0645 +FormatData/ar_LB/Eras/0=ق.م +FormatData/ar_LB/Eras/1=م +LocaleNames/ar_LB/ar=العربية +FormatData/ar_LB/AmPmMarkers/0=ص +FormatData/ar_LB/AmPmMarkers/1=م FormatData/ar_LB/TimePatterns/0=z hh:mm:ss a FormatData/ar_LB/TimePatterns/1=z hh:mm:ss a FormatData/ar_LB/TimePatterns/2=hh:mm:ss a @@ -1408,23 +1408,23 @@ FormatData/ar_LB/DatePatterns/2=dd/MM/yyyy FormatData/ar_LB/DatePatterns/3=dd/MM/yy FormatData/ar_LB/DateTimePatterns/0={1} {0} -LocaleNames/ar_LB/EG=\u0645\u0635\u0631 -LocaleNames/ar_LB/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_LB/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_LB/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_LB/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_LB/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_LB/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_LB/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_LB/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_LB/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_LB/QA=\u0642\u0637\u0631 -LocaleNames/ar_LB/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_LB/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_LB/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_LB/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_LB/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_LB/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_LB/EG=مصر +LocaleNames/ar_LB/DZ=الجزائر +LocaleNames/ar_LB/BH=البحرين +LocaleNames/ar_LB/IQ=العراق +LocaleNames/ar_LB/JO=الأردن +LocaleNames/ar_LB/KW=الكويت +LocaleNames/ar_LB/LB=لبنان +LocaleNames/ar_LB/LY=ليبيا +LocaleNames/ar_LB/MA=المغرب +LocaleNames/ar_LB/OM=عُمان +LocaleNames/ar_LB/QA=قطر +LocaleNames/ar_LB/SA=المملكة العربية السعودية +LocaleNames/ar_LB/SD=السودان +LocaleNames/ar_LB/SY=سوريا +LocaleNames/ar_LB/TN=تونس +LocaleNames/ar_LB/AE=الإمارات العربية المتحدة +LocaleNames/ar_LB/YE=اليمن FormatData/ar_LB/NumberElements/0=. FormatData/ar_LB/NumberElements/1=, FormatData/ar_LB/NumberElements/2=; @@ -1433,60 +1433,60 @@ FormatData/ar_LB/NumberElements/5=# FormatData/ar_LB/NumberElements/6=- FormatData/ar_LB/NumberElements/7=E -FormatData/ar_LB/NumberElements/8=\u2030 -FormatData/ar_LB/NumberElements/9=\u221e -FormatData/ar_LB/NumberElements/10=\ufffd -CurrencyNames/ar_LY/LYD=\u062f.\u0644.\u200f +FormatData/ar_LB/NumberElements/8=‰ +FormatData/ar_LB/NumberElements/9=∞ +FormatData/ar_LB/NumberElements/10=� +CurrencyNames/ar_LY/LYD=د.ل.‏ FormatData/ar_LY/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_LY/NumberPatterns/1='\u062f.\u0644.\u200f' #,##0.###;'\u062f.\u0644.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_LY/NumberPatterns/1='د.ل.‏' #,##0.###;'د.ل.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_LY/NumberPatterns/2=#,##0% -FormatData/ar_LY/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_LY/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_LY/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_LY/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_LY/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_LY/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_LY/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_LY/DayNames/0=الأحد +FormatData/ar_LY/DayNames/1=الاثنين +FormatData/ar_LY/DayNames/2=الثلاثاء +FormatData/ar_LY/DayNames/3=الأربعاء +FormatData/ar_LY/DayNames/4=الخميس +FormatData/ar_LY/DayNames/5=الجمعة +FormatData/ar_LY/DayNames/6=السبت CalendarData/ar_LY/firstDayOfWeek=7 CalendarData/ar_LY/minimalDaysInFirstWeek=1 -FormatData/ar_LY/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_LY/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_LY/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_LY/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_LY/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_LY/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_LY/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_LY/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_LY/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_LY/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_LY/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_LY/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_LY/MonthAbbreviations/0=ينا +FormatData/ar_LY/MonthAbbreviations/1=فبر +FormatData/ar_LY/MonthAbbreviations/2=مار +FormatData/ar_LY/MonthAbbreviations/3=أبر +FormatData/ar_LY/MonthAbbreviations/4=ماي +FormatData/ar_LY/MonthAbbreviations/5=يون +FormatData/ar_LY/MonthAbbreviations/6=يول +FormatData/ar_LY/MonthAbbreviations/7=أغس +FormatData/ar_LY/MonthAbbreviations/8=سبت +FormatData/ar_LY/MonthAbbreviations/9=أكت +FormatData/ar_LY/MonthAbbreviations/10=نوف +FormatData/ar_LY/MonthAbbreviations/11=ديس FormatData/ar_LY/MonthAbbreviations/12= -FormatData/ar_LY/Eras/0=\u0642.\u0645 -FormatData/ar_LY/Eras/1=\u0645 -FormatData/ar_LY/DayAbbreviations/0=\u062d -FormatData/ar_LY/DayAbbreviations/1=\u0646 -FormatData/ar_LY/DayAbbreviations/2=\u062b -FormatData/ar_LY/DayAbbreviations/3=\u0631 -FormatData/ar_LY/DayAbbreviations/4=\u062e -FormatData/ar_LY/DayAbbreviations/5=\u062c -FormatData/ar_LY/DayAbbreviations/6=\u0633 -LocaleNames/ar_LY/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_LY/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_LY/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_LY/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_LY/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_LY/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_LY/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_LY/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_LY/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_LY/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_LY/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_LY/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_LY/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_LY/Eras/0=ق.م +FormatData/ar_LY/Eras/1=م +FormatData/ar_LY/DayAbbreviations/0=ح +FormatData/ar_LY/DayAbbreviations/1=ن +FormatData/ar_LY/DayAbbreviations/2=ث +FormatData/ar_LY/DayAbbreviations/3=ر +FormatData/ar_LY/DayAbbreviations/4=خ +FormatData/ar_LY/DayAbbreviations/5=ج +FormatData/ar_LY/DayAbbreviations/6=س +LocaleNames/ar_LY/ar=العربية +FormatData/ar_LY/MonthNames/0=يناير +FormatData/ar_LY/MonthNames/1=فبراير +FormatData/ar_LY/MonthNames/2=مارس +FormatData/ar_LY/MonthNames/3=أبريل +FormatData/ar_LY/MonthNames/4=مايو +FormatData/ar_LY/MonthNames/5=يونيو +FormatData/ar_LY/MonthNames/6=يوليو +FormatData/ar_LY/MonthNames/7=أغسطس +FormatData/ar_LY/MonthNames/8=سبتمبر +FormatData/ar_LY/MonthNames/9=أكتوبر +FormatData/ar_LY/MonthNames/10=نوفمبر +FormatData/ar_LY/MonthNames/11=ديسمبر FormatData/ar_LY/MonthNames/12= -FormatData/ar_LY/AmPmMarkers/0=\u0635 -FormatData/ar_LY/AmPmMarkers/1=\u0645 +FormatData/ar_LY/AmPmMarkers/0=ص +FormatData/ar_LY/AmPmMarkers/1=م FormatData/ar_LY/TimePatterns/0=z hh:mm:ss a FormatData/ar_LY/TimePatterns/1=z hh:mm:ss a FormatData/ar_LY/TimePatterns/2=hh:mm:ss a @@ -1496,23 +1496,23 @@ FormatData/ar_LY/DatePatterns/2=dd/MM/yyyy FormatData/ar_LY/DatePatterns/3=dd/MM/yy FormatData/ar_LY/DateTimePatterns/0={1} {0} -LocaleNames/ar_LY/EG=\u0645\u0635\u0631 -LocaleNames/ar_LY/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_LY/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_LY/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_LY/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_LY/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_LY/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_LY/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_LY/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_LY/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_LY/QA=\u0642\u0637\u0631 -LocaleNames/ar_LY/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_LY/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_LY/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_LY/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_LY/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_LY/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_LY/EG=مصر +LocaleNames/ar_LY/DZ=الجزائر +LocaleNames/ar_LY/BH=البحرين +LocaleNames/ar_LY/IQ=العراق +LocaleNames/ar_LY/JO=الأردن +LocaleNames/ar_LY/KW=الكويت +LocaleNames/ar_LY/LB=لبنان +LocaleNames/ar_LY/LY=ليبيا +LocaleNames/ar_LY/MA=المغرب +LocaleNames/ar_LY/OM=عُمان +LocaleNames/ar_LY/QA=قطر +LocaleNames/ar_LY/SA=المملكة العربية السعودية +LocaleNames/ar_LY/SD=السودان +LocaleNames/ar_LY/SY=سوريا +LocaleNames/ar_LY/TN=تونس +LocaleNames/ar_LY/AE=الإمارات العربية المتحدة +LocaleNames/ar_LY/YE=اليمن FormatData/ar_LY/NumberElements/0=. FormatData/ar_LY/NumberElements/1=, FormatData/ar_LY/NumberElements/2=; @@ -1521,60 +1521,60 @@ FormatData/ar_LY/NumberElements/5=# FormatData/ar_LY/NumberElements/6=- FormatData/ar_LY/NumberElements/7=E -FormatData/ar_LY/NumberElements/8=\u2030 -FormatData/ar_LY/NumberElements/9=\u221e -FormatData/ar_LY/NumberElements/10=\ufffd -CurrencyNames/ar_MA/MAD=\u062f.\u0645.\u200f +FormatData/ar_LY/NumberElements/8=‰ +FormatData/ar_LY/NumberElements/9=∞ +FormatData/ar_LY/NumberElements/10=� +CurrencyNames/ar_MA/MAD=د.م.‏ FormatData/ar_MA/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_MA/NumberPatterns/1='\u062f.\u0645.\u200f' #,##0.###;'\u062f.\u0645.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_MA/NumberPatterns/1='د.م.‏' #,##0.###;'د.م.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_MA/NumberPatterns/2=#,##0% -FormatData/ar_MA/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_MA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_MA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_MA/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_MA/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_MA/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_MA/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_MA/DayNames/0=الأحد +FormatData/ar_MA/DayNames/1=الاثنين +FormatData/ar_MA/DayNames/2=الثلاثاء +FormatData/ar_MA/DayNames/3=الأربعاء +FormatData/ar_MA/DayNames/4=الخميس +FormatData/ar_MA/DayNames/5=الجمعة +FormatData/ar_MA/DayNames/6=السبت CalendarData/ar_MA/firstDayOfWeek=7 CalendarData/ar_MA/minimalDaysInFirstWeek=1 -FormatData/ar_MA/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_MA/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_MA/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_MA/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_MA/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_MA/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_MA/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_MA/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_MA/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_MA/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_MA/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_MA/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_MA/MonthAbbreviations/0=ينا +FormatData/ar_MA/MonthAbbreviations/1=فبر +FormatData/ar_MA/MonthAbbreviations/2=مار +FormatData/ar_MA/MonthAbbreviations/3=أبر +FormatData/ar_MA/MonthAbbreviations/4=ماي +FormatData/ar_MA/MonthAbbreviations/5=يون +FormatData/ar_MA/MonthAbbreviations/6=يول +FormatData/ar_MA/MonthAbbreviations/7=أغس +FormatData/ar_MA/MonthAbbreviations/8=سبت +FormatData/ar_MA/MonthAbbreviations/9=أكت +FormatData/ar_MA/MonthAbbreviations/10=نوف +FormatData/ar_MA/MonthAbbreviations/11=ديس FormatData/ar_MA/MonthAbbreviations/12= -FormatData/ar_MA/Eras/0=\u0642.\u0645 -FormatData/ar_MA/Eras/1=\u0645 -FormatData/ar_MA/DayAbbreviations/0=\u062d -FormatData/ar_MA/DayAbbreviations/1=\u0646 -FormatData/ar_MA/DayAbbreviations/2=\u062b -FormatData/ar_MA/DayAbbreviations/3=\u0631 -FormatData/ar_MA/DayAbbreviations/4=\u062e -FormatData/ar_MA/DayAbbreviations/5=\u062c -FormatData/ar_MA/DayAbbreviations/6=\u0633 -LocaleNames/ar_MA/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_MA/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_MA/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_MA/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_MA/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_MA/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_MA/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_MA/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_MA/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_MA/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_MA/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_MA/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_MA/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_MA/Eras/0=ق.م +FormatData/ar_MA/Eras/1=م +FormatData/ar_MA/DayAbbreviations/0=ح +FormatData/ar_MA/DayAbbreviations/1=ن +FormatData/ar_MA/DayAbbreviations/2=ث +FormatData/ar_MA/DayAbbreviations/3=ر +FormatData/ar_MA/DayAbbreviations/4=خ +FormatData/ar_MA/DayAbbreviations/5=ج +FormatData/ar_MA/DayAbbreviations/6=س +LocaleNames/ar_MA/ar=العربية +FormatData/ar_MA/MonthNames/0=يناير +FormatData/ar_MA/MonthNames/1=فبراير +FormatData/ar_MA/MonthNames/2=مارس +FormatData/ar_MA/MonthNames/3=أبريل +FormatData/ar_MA/MonthNames/4=مايو +FormatData/ar_MA/MonthNames/5=يونيو +FormatData/ar_MA/MonthNames/6=يوليو +FormatData/ar_MA/MonthNames/7=أغسطس +FormatData/ar_MA/MonthNames/8=سبتمبر +FormatData/ar_MA/MonthNames/9=أكتوبر +FormatData/ar_MA/MonthNames/10=نوفمبر +FormatData/ar_MA/MonthNames/11=ديسمبر FormatData/ar_MA/MonthNames/12= -FormatData/ar_MA/AmPmMarkers/0=\u0635 -FormatData/ar_MA/AmPmMarkers/1=\u0645 +FormatData/ar_MA/AmPmMarkers/0=ص +FormatData/ar_MA/AmPmMarkers/1=م FormatData/ar_MA/TimePatterns/0=z hh:mm:ss a FormatData/ar_MA/TimePatterns/1=z hh:mm:ss a FormatData/ar_MA/TimePatterns/2=hh:mm:ss a @@ -1584,23 +1584,23 @@ FormatData/ar_MA/DatePatterns/2=dd/MM/yyyy FormatData/ar_MA/DatePatterns/3=dd/MM/yy FormatData/ar_MA/DateTimePatterns/0={1} {0} -LocaleNames/ar_MA/EG=\u0645\u0635\u0631 -LocaleNames/ar_MA/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_MA/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_MA/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_MA/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_MA/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_MA/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_MA/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_MA/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_MA/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_MA/QA=\u0642\u0637\u0631 -LocaleNames/ar_MA/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_MA/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_MA/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_MA/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_MA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_MA/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_MA/EG=مصر +LocaleNames/ar_MA/DZ=الجزائر +LocaleNames/ar_MA/BH=البحرين +LocaleNames/ar_MA/IQ=العراق +LocaleNames/ar_MA/JO=الأردن +LocaleNames/ar_MA/KW=الكويت +LocaleNames/ar_MA/LB=لبنان +LocaleNames/ar_MA/LY=ليبيا +LocaleNames/ar_MA/MA=المغرب +LocaleNames/ar_MA/OM=عُمان +LocaleNames/ar_MA/QA=قطر +LocaleNames/ar_MA/SA=المملكة العربية السعودية +LocaleNames/ar_MA/SD=السودان +LocaleNames/ar_MA/SY=سوريا +LocaleNames/ar_MA/TN=تونس +LocaleNames/ar_MA/AE=الإمارات العربية المتحدة +LocaleNames/ar_MA/YE=اليمن FormatData/ar_MA/NumberElements/0=. FormatData/ar_MA/NumberElements/1=, FormatData/ar_MA/NumberElements/2=; @@ -1609,60 +1609,60 @@ FormatData/ar_MA/NumberElements/5=# FormatData/ar_MA/NumberElements/6=- FormatData/ar_MA/NumberElements/7=E -FormatData/ar_MA/NumberElements/8=\u2030 -FormatData/ar_MA/NumberElements/9=\u221e -FormatData/ar_MA/NumberElements/10=\ufffd -CurrencyNames/ar_OM/OMR=\u0631.\u0639.\u200f +FormatData/ar_MA/NumberElements/8=‰ +FormatData/ar_MA/NumberElements/9=∞ +FormatData/ar_MA/NumberElements/10=� +CurrencyNames/ar_OM/OMR=ر.ع.‏ FormatData/ar_OM/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_OM/NumberPatterns/1='\u0631.\u0639.\u200f' #,##0.###;'\u0631.\u0639.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_OM/NumberPatterns/1='ر.ع.‏' #,##0.###;'ر.ع.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_OM/NumberPatterns/2=#,##0% -FormatData/ar_OM/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_OM/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_OM/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_OM/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_OM/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_OM/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_OM/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_OM/DayNames/0=الأحد +FormatData/ar_OM/DayNames/1=الاثنين +FormatData/ar_OM/DayNames/2=الثلاثاء +FormatData/ar_OM/DayNames/3=الأربعاء +FormatData/ar_OM/DayNames/4=الخميس +FormatData/ar_OM/DayNames/5=الجمعة +FormatData/ar_OM/DayNames/6=السبت CalendarData/ar_OM/firstDayOfWeek=7 CalendarData/ar_OM/minimalDaysInFirstWeek=1 -FormatData/ar_OM/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_OM/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_OM/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_OM/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_OM/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_OM/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_OM/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_OM/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_OM/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_OM/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_OM/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_OM/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_OM/MonthAbbreviations/0=ينا +FormatData/ar_OM/MonthAbbreviations/1=فبر +FormatData/ar_OM/MonthAbbreviations/2=مار +FormatData/ar_OM/MonthAbbreviations/3=أبر +FormatData/ar_OM/MonthAbbreviations/4=ماي +FormatData/ar_OM/MonthAbbreviations/5=يون +FormatData/ar_OM/MonthAbbreviations/6=يول +FormatData/ar_OM/MonthAbbreviations/7=أغس +FormatData/ar_OM/MonthAbbreviations/8=سبت +FormatData/ar_OM/MonthAbbreviations/9=أكت +FormatData/ar_OM/MonthAbbreviations/10=نوف +FormatData/ar_OM/MonthAbbreviations/11=ديس FormatData/ar_OM/MonthAbbreviations/12= -FormatData/ar_OM/Eras/0=\u0642.\u0645 -FormatData/ar_OM/Eras/1=\u0645 -FormatData/ar_OM/DayAbbreviations/0=\u062d -FormatData/ar_OM/DayAbbreviations/1=\u0646 -FormatData/ar_OM/DayAbbreviations/2=\u062b -FormatData/ar_OM/DayAbbreviations/3=\u0631 -FormatData/ar_OM/DayAbbreviations/4=\u062e -FormatData/ar_OM/DayAbbreviations/5=\u062c -FormatData/ar_OM/DayAbbreviations/6=\u0633 -LocaleNames/ar_OM/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_OM/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_OM/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_OM/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_OM/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_OM/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_OM/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_OM/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_OM/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_OM/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_OM/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_OM/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_OM/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_OM/Eras/0=ق.م +FormatData/ar_OM/Eras/1=م +FormatData/ar_OM/DayAbbreviations/0=ح +FormatData/ar_OM/DayAbbreviations/1=ن +FormatData/ar_OM/DayAbbreviations/2=ث +FormatData/ar_OM/DayAbbreviations/3=ر +FormatData/ar_OM/DayAbbreviations/4=خ +FormatData/ar_OM/DayAbbreviations/5=ج +FormatData/ar_OM/DayAbbreviations/6=س +LocaleNames/ar_OM/ar=العربية +FormatData/ar_OM/MonthNames/0=يناير +FormatData/ar_OM/MonthNames/1=فبراير +FormatData/ar_OM/MonthNames/2=مارس +FormatData/ar_OM/MonthNames/3=أبريل +FormatData/ar_OM/MonthNames/4=مايو +FormatData/ar_OM/MonthNames/5=يونيو +FormatData/ar_OM/MonthNames/6=يوليو +FormatData/ar_OM/MonthNames/7=أغسطس +FormatData/ar_OM/MonthNames/8=سبتمبر +FormatData/ar_OM/MonthNames/9=أكتوبر +FormatData/ar_OM/MonthNames/10=نوفمبر +FormatData/ar_OM/MonthNames/11=ديسمبر FormatData/ar_OM/MonthNames/12= -FormatData/ar_OM/AmPmMarkers/0=\u0635 -FormatData/ar_OM/AmPmMarkers/1=\u0645 +FormatData/ar_OM/AmPmMarkers/0=ص +FormatData/ar_OM/AmPmMarkers/1=م FormatData/ar_OM/TimePatterns/0=z hh:mm:ss a FormatData/ar_OM/TimePatterns/1=z hh:mm:ss a FormatData/ar_OM/TimePatterns/2=hh:mm:ss a @@ -1672,23 +1672,23 @@ FormatData/ar_OM/DatePatterns/2=dd/MM/yyyy FormatData/ar_OM/DatePatterns/3=dd/MM/yy FormatData/ar_OM/DateTimePatterns/0={1} {0} -LocaleNames/ar_OM/EG=\u0645\u0635\u0631 -LocaleNames/ar_OM/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_OM/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_OM/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_OM/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_OM/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_OM/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_OM/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_OM/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_OM/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_OM/QA=\u0642\u0637\u0631 -LocaleNames/ar_OM/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_OM/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_OM/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_OM/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_OM/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_OM/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_OM/EG=مصر +LocaleNames/ar_OM/DZ=الجزائر +LocaleNames/ar_OM/BH=البحرين +LocaleNames/ar_OM/IQ=العراق +LocaleNames/ar_OM/JO=الأردن +LocaleNames/ar_OM/KW=الكويت +LocaleNames/ar_OM/LB=لبنان +LocaleNames/ar_OM/LY=ليبيا +LocaleNames/ar_OM/MA=المغرب +LocaleNames/ar_OM/OM=عُمان +LocaleNames/ar_OM/QA=قطر +LocaleNames/ar_OM/SA=المملكة العربية السعودية +LocaleNames/ar_OM/SD=السودان +LocaleNames/ar_OM/SY=سوريا +LocaleNames/ar_OM/TN=تونس +LocaleNames/ar_OM/AE=الإمارات العربية المتحدة +LocaleNames/ar_OM/YE=اليمن FormatData/ar_OM/NumberElements/0=. FormatData/ar_OM/NumberElements/1=, FormatData/ar_OM/NumberElements/2=; @@ -1697,60 +1697,60 @@ FormatData/ar_OM/NumberElements/5=# FormatData/ar_OM/NumberElements/6=- FormatData/ar_OM/NumberElements/7=E -FormatData/ar_OM/NumberElements/8=\u2030 -FormatData/ar_OM/NumberElements/9=\u221e -FormatData/ar_OM/NumberElements/10=\ufffd -CurrencyNames/ar_QA/QAR=\u0631.\u0642.\u200f +FormatData/ar_OM/NumberElements/8=‰ +FormatData/ar_OM/NumberElements/9=∞ +FormatData/ar_OM/NumberElements/10=� +CurrencyNames/ar_QA/QAR=ر.ق.‏ FormatData/ar_QA/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_QA/NumberPatterns/1='\u0631.\u0642.\u200f' #,##0.###;'\u0631.\u0642.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_QA/NumberPatterns/1='ر.ق.‏' #,##0.###;'ر.ق.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_QA/NumberPatterns/2=#,##0% -FormatData/ar_QA/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_QA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_QA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_QA/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_QA/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_QA/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_QA/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_QA/DayNames/0=الأحد +FormatData/ar_QA/DayNames/1=الاثنين +FormatData/ar_QA/DayNames/2=الثلاثاء +FormatData/ar_QA/DayNames/3=الأربعاء +FormatData/ar_QA/DayNames/4=الخميس +FormatData/ar_QA/DayNames/5=الجمعة +FormatData/ar_QA/DayNames/6=السبت CalendarData/ar_QA/firstDayOfWeek=7 CalendarData/ar_QA/minimalDaysInFirstWeek=1 -FormatData/ar_QA/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_QA/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_QA/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_QA/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_QA/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_QA/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_QA/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_QA/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_QA/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_QA/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_QA/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_QA/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_QA/MonthAbbreviations/0=ينا +FormatData/ar_QA/MonthAbbreviations/1=فبر +FormatData/ar_QA/MonthAbbreviations/2=مار +FormatData/ar_QA/MonthAbbreviations/3=أبر +FormatData/ar_QA/MonthAbbreviations/4=ماي +FormatData/ar_QA/MonthAbbreviations/5=يون +FormatData/ar_QA/MonthAbbreviations/6=يول +FormatData/ar_QA/MonthAbbreviations/7=أغس +FormatData/ar_QA/MonthAbbreviations/8=سبت +FormatData/ar_QA/MonthAbbreviations/9=أكت +FormatData/ar_QA/MonthAbbreviations/10=نوف +FormatData/ar_QA/MonthAbbreviations/11=ديس FormatData/ar_QA/MonthAbbreviations/12= -FormatData/ar_QA/Eras/0=\u0642.\u0645 -FormatData/ar_QA/Eras/1=\u0645 -FormatData/ar_QA/DayAbbreviations/0=\u062d -FormatData/ar_QA/DayAbbreviations/1=\u0646 -FormatData/ar_QA/DayAbbreviations/2=\u062b -FormatData/ar_QA/DayAbbreviations/3=\u0631 -FormatData/ar_QA/DayAbbreviations/4=\u062e -FormatData/ar_QA/DayAbbreviations/5=\u062c -FormatData/ar_QA/DayAbbreviations/6=\u0633 -LocaleNames/ar_QA/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_QA/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_QA/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_QA/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_QA/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_QA/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_QA/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_QA/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_QA/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_QA/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_QA/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_QA/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_QA/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_QA/Eras/0=ق.م +FormatData/ar_QA/Eras/1=م +FormatData/ar_QA/DayAbbreviations/0=ح +FormatData/ar_QA/DayAbbreviations/1=ن +FormatData/ar_QA/DayAbbreviations/2=ث +FormatData/ar_QA/DayAbbreviations/3=ر +FormatData/ar_QA/DayAbbreviations/4=خ +FormatData/ar_QA/DayAbbreviations/5=ج +FormatData/ar_QA/DayAbbreviations/6=س +LocaleNames/ar_QA/ar=العربية +FormatData/ar_QA/MonthNames/0=يناير +FormatData/ar_QA/MonthNames/1=فبراير +FormatData/ar_QA/MonthNames/2=مارس +FormatData/ar_QA/MonthNames/3=أبريل +FormatData/ar_QA/MonthNames/4=مايو +FormatData/ar_QA/MonthNames/5=يونيو +FormatData/ar_QA/MonthNames/6=يوليو +FormatData/ar_QA/MonthNames/7=أغسطس +FormatData/ar_QA/MonthNames/8=سبتمبر +FormatData/ar_QA/MonthNames/9=أكتوبر +FormatData/ar_QA/MonthNames/10=نوفمبر +FormatData/ar_QA/MonthNames/11=ديسمبر FormatData/ar_QA/MonthNames/12= -FormatData/ar_QA/AmPmMarkers/0=\u0635 -FormatData/ar_QA/AmPmMarkers/1=\u0645 +FormatData/ar_QA/AmPmMarkers/0=ص +FormatData/ar_QA/AmPmMarkers/1=م FormatData/ar_QA/TimePatterns/0=z hh:mm:ss a FormatData/ar_QA/TimePatterns/1=z hh:mm:ss a FormatData/ar_QA/TimePatterns/2=hh:mm:ss a @@ -1760,23 +1760,23 @@ FormatData/ar_QA/DatePatterns/2=dd/MM/yyyy FormatData/ar_QA/DatePatterns/3=dd/MM/yy FormatData/ar_QA/DateTimePatterns/0={1} {0} -LocaleNames/ar_QA/EG=\u0645\u0635\u0631 -LocaleNames/ar_QA/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_QA/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_QA/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_QA/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_QA/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_QA/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_QA/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_QA/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_QA/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_QA/QA=\u0642\u0637\u0631 -LocaleNames/ar_QA/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_QA/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_QA/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_QA/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_QA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_QA/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_QA/EG=مصر +LocaleNames/ar_QA/DZ=الجزائر +LocaleNames/ar_QA/BH=البحرين +LocaleNames/ar_QA/IQ=العراق +LocaleNames/ar_QA/JO=الأردن +LocaleNames/ar_QA/KW=الكويت +LocaleNames/ar_QA/LB=لبنان +LocaleNames/ar_QA/LY=ليبيا +LocaleNames/ar_QA/MA=المغرب +LocaleNames/ar_QA/OM=عُمان +LocaleNames/ar_QA/QA=قطر +LocaleNames/ar_QA/SA=المملكة العربية السعودية +LocaleNames/ar_QA/SD=السودان +LocaleNames/ar_QA/SY=سوريا +LocaleNames/ar_QA/TN=تونس +LocaleNames/ar_QA/AE=الإمارات العربية المتحدة +LocaleNames/ar_QA/YE=اليمن FormatData/ar_QA/NumberElements/0=. FormatData/ar_QA/NumberElements/1=, FormatData/ar_QA/NumberElements/2=; @@ -1785,60 +1785,60 @@ FormatData/ar_QA/NumberElements/5=# FormatData/ar_QA/NumberElements/6=- FormatData/ar_QA/NumberElements/7=E -FormatData/ar_QA/NumberElements/8=\u2030 -FormatData/ar_QA/NumberElements/9=\u221e -FormatData/ar_QA/NumberElements/10=\ufffd -CurrencyNames/ar_SA/SAR=\u0631.\u0633.\u200f +FormatData/ar_QA/NumberElements/8=‰ +FormatData/ar_QA/NumberElements/9=∞ +FormatData/ar_QA/NumberElements/10=� +CurrencyNames/ar_SA/SAR=ر.س.‏ FormatData/ar_SA/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_SA/NumberPatterns/1='\u0631.\u0633.\u200f' #,##0.###;'\u0631.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_SA/NumberPatterns/1='ر.س.‏' #,##0.###;'ر.س.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_SA/NumberPatterns/2=#,##0% -FormatData/ar_SA/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SA/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SA/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SA/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SA/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_SA/DayNames/0=الأحد +FormatData/ar_SA/DayNames/1=الاثنين +FormatData/ar_SA/DayNames/2=الثلاثاء +FormatData/ar_SA/DayNames/3=الأربعاء +FormatData/ar_SA/DayNames/4=الخميس +FormatData/ar_SA/DayNames/5=الجمعة +FormatData/ar_SA/DayNames/6=السبت CalendarData/ar_SA/firstDayOfWeek=7 CalendarData/ar_SA/minimalDaysInFirstWeek=1 -FormatData/ar_SA/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_SA/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_SA/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_SA/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_SA/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_SA/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_SA/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_SA/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_SA/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_SA/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_SA/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_SA/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_SA/MonthAbbreviations/0=ينا +FormatData/ar_SA/MonthAbbreviations/1=فبر +FormatData/ar_SA/MonthAbbreviations/2=مار +FormatData/ar_SA/MonthAbbreviations/3=أبر +FormatData/ar_SA/MonthAbbreviations/4=ماي +FormatData/ar_SA/MonthAbbreviations/5=يون +FormatData/ar_SA/MonthAbbreviations/6=يول +FormatData/ar_SA/MonthAbbreviations/7=أغس +FormatData/ar_SA/MonthAbbreviations/8=سبت +FormatData/ar_SA/MonthAbbreviations/9=أكت +FormatData/ar_SA/MonthAbbreviations/10=نوف +FormatData/ar_SA/MonthAbbreviations/11=ديس FormatData/ar_SA/MonthAbbreviations/12= -FormatData/ar_SA/Eras/0=\u0642.\u0645 -FormatData/ar_SA/Eras/1=\u0645 -FormatData/ar_SA/DayAbbreviations/0=\u062d -FormatData/ar_SA/DayAbbreviations/1=\u0646 -FormatData/ar_SA/DayAbbreviations/2=\u062b -FormatData/ar_SA/DayAbbreviations/3=\u0631 -FormatData/ar_SA/DayAbbreviations/4=\u062e -FormatData/ar_SA/DayAbbreviations/5=\u062c -FormatData/ar_SA/DayAbbreviations/6=\u0633 -LocaleNames/ar_SA/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_SA/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_SA/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_SA/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_SA/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_SA/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_SA/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_SA/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_SA/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_SA/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_SA/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_SA/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_SA/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_SA/Eras/0=ق.م +FormatData/ar_SA/Eras/1=م +FormatData/ar_SA/DayAbbreviations/0=ح +FormatData/ar_SA/DayAbbreviations/1=ن +FormatData/ar_SA/DayAbbreviations/2=ث +FormatData/ar_SA/DayAbbreviations/3=ر +FormatData/ar_SA/DayAbbreviations/4=خ +FormatData/ar_SA/DayAbbreviations/5=ج +FormatData/ar_SA/DayAbbreviations/6=س +LocaleNames/ar_SA/ar=العربية +FormatData/ar_SA/MonthNames/0=يناير +FormatData/ar_SA/MonthNames/1=فبراير +FormatData/ar_SA/MonthNames/2=مارس +FormatData/ar_SA/MonthNames/3=أبريل +FormatData/ar_SA/MonthNames/4=مايو +FormatData/ar_SA/MonthNames/5=يونيو +FormatData/ar_SA/MonthNames/6=يوليو +FormatData/ar_SA/MonthNames/7=أغسطس +FormatData/ar_SA/MonthNames/8=سبتمبر +FormatData/ar_SA/MonthNames/9=أكتوبر +FormatData/ar_SA/MonthNames/10=نوفمبر +FormatData/ar_SA/MonthNames/11=ديسمبر FormatData/ar_SA/MonthNames/12= -FormatData/ar_SA/AmPmMarkers/0=\u0635 -FormatData/ar_SA/AmPmMarkers/1=\u0645 +FormatData/ar_SA/AmPmMarkers/0=ص +FormatData/ar_SA/AmPmMarkers/1=م FormatData/ar_SA/TimePatterns/0=z hh:mm:ss a FormatData/ar_SA/TimePatterns/1=z hh:mm:ss a FormatData/ar_SA/TimePatterns/2=hh:mm:ss a @@ -1848,23 +1848,23 @@ FormatData/ar_SA/DatePatterns/2=dd/MM/yyyy FormatData/ar_SA/DatePatterns/3=dd/MM/yy FormatData/ar_SA/DateTimePatterns/0={1} {0} -LocaleNames/ar_SA/EG=\u0645\u0635\u0631 -LocaleNames/ar_SA/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_SA/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_SA/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_SA/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_SA/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_SA/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_SA/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_SA/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_SA/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_SA/QA=\u0642\u0637\u0631 -LocaleNames/ar_SA/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_SA/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_SA/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_SA/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_SA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_SA/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_SA/EG=مصر +LocaleNames/ar_SA/DZ=الجزائر +LocaleNames/ar_SA/BH=البحرين +LocaleNames/ar_SA/IQ=العراق +LocaleNames/ar_SA/JO=الأردن +LocaleNames/ar_SA/KW=الكويت +LocaleNames/ar_SA/LB=لبنان +LocaleNames/ar_SA/LY=ليبيا +LocaleNames/ar_SA/MA=المغرب +LocaleNames/ar_SA/OM=عُمان +LocaleNames/ar_SA/QA=قطر +LocaleNames/ar_SA/SA=المملكة العربية السعودية +LocaleNames/ar_SA/SD=السودان +LocaleNames/ar_SA/SY=سوريا +LocaleNames/ar_SA/TN=تونس +LocaleNames/ar_SA/AE=الإمارات العربية المتحدة +LocaleNames/ar_SA/YE=اليمن FormatData/ar_SA/NumberElements/0=. FormatData/ar_SA/NumberElements/1=, FormatData/ar_SA/NumberElements/2=; @@ -1873,61 +1873,61 @@ FormatData/ar_SA/NumberElements/5=# FormatData/ar_SA/NumberElements/6=- FormatData/ar_SA/NumberElements/7=E -FormatData/ar_SA/NumberElements/8=\u2030 -FormatData/ar_SA/NumberElements/9=\u221e -FormatData/ar_SA/NumberElements/10=\ufffd +FormatData/ar_SA/NumberElements/8=‰ +FormatData/ar_SA/NumberElements/9=∞ +FormatData/ar_SA/NumberElements/10=� # changed for 4945388, removed for 6531591, see bellow -# CurrencyNames/ar_SD/SDD=\u062c.\u0633.\u200f +# CurrencyNames/ar_SD/SDD=ج.س.‏ FormatData/ar_SD/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_SD/NumberPatterns/1='\u062c.\u0633.\u200f' #,##0.###;'\u062c.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_SD/NumberPatterns/1='ج.س.‏' #,##0.###;'ج.س.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_SD/NumberPatterns/2=#,##0% -FormatData/ar_SD/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SD/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SD/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SD/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SD/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SD/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SD/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_SD/DayNames/0=الأحد +FormatData/ar_SD/DayNames/1=الاثنين +FormatData/ar_SD/DayNames/2=الثلاثاء +FormatData/ar_SD/DayNames/3=الأربعاء +FormatData/ar_SD/DayNames/4=الخميس +FormatData/ar_SD/DayNames/5=الجمعة +FormatData/ar_SD/DayNames/6=السبت CalendarData/ar_SD/firstDayOfWeek=7 CalendarData/ar_SD/minimalDaysInFirstWeek=1 -FormatData/ar_SD/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_SD/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_SD/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_SD/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_SD/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_SD/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_SD/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_SD/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_SD/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_SD/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_SD/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_SD/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_SD/MonthAbbreviations/0=ينا +FormatData/ar_SD/MonthAbbreviations/1=فبر +FormatData/ar_SD/MonthAbbreviations/2=مار +FormatData/ar_SD/MonthAbbreviations/3=أبر +FormatData/ar_SD/MonthAbbreviations/4=ماي +FormatData/ar_SD/MonthAbbreviations/5=يون +FormatData/ar_SD/MonthAbbreviations/6=يول +FormatData/ar_SD/MonthAbbreviations/7=أغس +FormatData/ar_SD/MonthAbbreviations/8=سبت +FormatData/ar_SD/MonthAbbreviations/9=أكت +FormatData/ar_SD/MonthAbbreviations/10=نوف +FormatData/ar_SD/MonthAbbreviations/11=ديس FormatData/ar_SD/MonthAbbreviations/12= -FormatData/ar_SD/Eras/0=\u0642.\u0645 -FormatData/ar_SD/Eras/1=\u0645 -FormatData/ar_SD/DayAbbreviations/0=\u062d -FormatData/ar_SD/DayAbbreviations/1=\u0646 -FormatData/ar_SD/DayAbbreviations/2=\u062b -FormatData/ar_SD/DayAbbreviations/3=\u0631 -FormatData/ar_SD/DayAbbreviations/4=\u062e -FormatData/ar_SD/DayAbbreviations/5=\u062c -FormatData/ar_SD/DayAbbreviations/6=\u0633 -LocaleNames/ar_SD/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_SD/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_SD/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_SD/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_SD/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_SD/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_SD/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_SD/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_SD/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_SD/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_SD/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_SD/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_SD/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_SD/Eras/0=ق.م +FormatData/ar_SD/Eras/1=م +FormatData/ar_SD/DayAbbreviations/0=ح +FormatData/ar_SD/DayAbbreviations/1=ن +FormatData/ar_SD/DayAbbreviations/2=ث +FormatData/ar_SD/DayAbbreviations/3=ر +FormatData/ar_SD/DayAbbreviations/4=خ +FormatData/ar_SD/DayAbbreviations/5=ج +FormatData/ar_SD/DayAbbreviations/6=س +LocaleNames/ar_SD/ar=العربية +FormatData/ar_SD/MonthNames/0=يناير +FormatData/ar_SD/MonthNames/1=فبراير +FormatData/ar_SD/MonthNames/2=مارس +FormatData/ar_SD/MonthNames/3=أبريل +FormatData/ar_SD/MonthNames/4=مايو +FormatData/ar_SD/MonthNames/5=يونيو +FormatData/ar_SD/MonthNames/6=يوليو +FormatData/ar_SD/MonthNames/7=أغسطس +FormatData/ar_SD/MonthNames/8=سبتمبر +FormatData/ar_SD/MonthNames/9=أكتوبر +FormatData/ar_SD/MonthNames/10=نوفمبر +FormatData/ar_SD/MonthNames/11=ديسمبر FormatData/ar_SD/MonthNames/12= -FormatData/ar_SD/AmPmMarkers/0=\u0635 -FormatData/ar_SD/AmPmMarkers/1=\u0645 +FormatData/ar_SD/AmPmMarkers/0=ص +FormatData/ar_SD/AmPmMarkers/1=م FormatData/ar_SD/TimePatterns/0=z hh:mm:ss a FormatData/ar_SD/TimePatterns/1=z hh:mm:ss a FormatData/ar_SD/TimePatterns/2=hh:mm:ss a @@ -1937,23 +1937,23 @@ FormatData/ar_SD/DatePatterns/2=dd/MM/yyyy FormatData/ar_SD/DatePatterns/3=dd/MM/yy FormatData/ar_SD/DateTimePatterns/0={1} {0} -LocaleNames/ar_SD/EG=\u0645\u0635\u0631 -LocaleNames/ar_SD/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_SD/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_SD/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_SD/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_SD/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_SD/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_SD/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_SD/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_SD/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_SD/QA=\u0642\u0637\u0631 -LocaleNames/ar_SD/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_SD/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_SD/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_SD/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_SD/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_SD/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_SD/EG=مصر +LocaleNames/ar_SD/DZ=الجزائر +LocaleNames/ar_SD/BH=البحرين +LocaleNames/ar_SD/IQ=العراق +LocaleNames/ar_SD/JO=الأردن +LocaleNames/ar_SD/KW=الكويت +LocaleNames/ar_SD/LB=لبنان +LocaleNames/ar_SD/LY=ليبيا +LocaleNames/ar_SD/MA=المغرب +LocaleNames/ar_SD/OM=عُمان +LocaleNames/ar_SD/QA=قطر +LocaleNames/ar_SD/SA=المملكة العربية السعودية +LocaleNames/ar_SD/SD=السودان +LocaleNames/ar_SD/SY=سوريا +LocaleNames/ar_SD/TN=تونس +LocaleNames/ar_SD/AE=الإمارات العربية المتحدة +LocaleNames/ar_SD/YE=اليمن FormatData/ar_SD/NumberElements/0=. FormatData/ar_SD/NumberElements/1=, FormatData/ar_SD/NumberElements/2=; @@ -1962,60 +1962,60 @@ FormatData/ar_SD/NumberElements/5=# FormatData/ar_SD/NumberElements/6=- FormatData/ar_SD/NumberElements/7=E -FormatData/ar_SD/NumberElements/8=\u2030 -FormatData/ar_SD/NumberElements/9=\u221e -FormatData/ar_SD/NumberElements/10=\ufffd +FormatData/ar_SD/NumberElements/8=‰ +FormatData/ar_SD/NumberElements/9=∞ +FormatData/ar_SD/NumberElements/10=� FormatData/ar_SY/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_SY/NumberPatterns/1='\u0644.\u0633.\u200f' #,##0.###;'\u0644.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_SY/NumberPatterns/1='ل.س.‏' #,##0.###;'ل.س.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_SY/NumberPatterns/2=#,##0% -CurrencyNames/ar_SY/SYP=\u0644.\u0633.\u200f -FormatData/ar_SY/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SY/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SY/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SY/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SY/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SY/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SY/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_SY/MonthNames/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_SY/MonthNames/1=\u0634\u0628\u0627\u0637 -FormatData/ar_SY/MonthNames/2=\u0622\u0630\u0627\u0631 -FormatData/ar_SY/MonthNames/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_SY/MonthNames/4=\u0623\u064a\u0627\u0631 -FormatData/ar_SY/MonthNames/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_SY/MonthNames/6=\u062a\u0645\u0648\u0632 -FormatData/ar_SY/MonthNames/7=\u0622\u0628 -FormatData/ar_SY/MonthNames/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_SY/MonthNames/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_SY/MonthNames/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_SY/MonthNames/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +CurrencyNames/ar_SY/SYP=ل.س.‏ +FormatData/ar_SY/DayAbbreviations/0=الأحد +FormatData/ar_SY/DayAbbreviations/1=الاثنين +FormatData/ar_SY/DayAbbreviations/2=الثلاثاء +FormatData/ar_SY/DayAbbreviations/3=الأربعاء +FormatData/ar_SY/DayAbbreviations/4=الخميس +FormatData/ar_SY/DayAbbreviations/5=الجمعة +FormatData/ar_SY/DayAbbreviations/6=السبت +FormatData/ar_SY/MonthNames/0=كانون الثاني +FormatData/ar_SY/MonthNames/1=شباط +FormatData/ar_SY/MonthNames/2=آذار +FormatData/ar_SY/MonthNames/3=نيسان +FormatData/ar_SY/MonthNames/4=أيار +FormatData/ar_SY/MonthNames/5=حزيران +FormatData/ar_SY/MonthNames/6=تموز +FormatData/ar_SY/MonthNames/7=آب +FormatData/ar_SY/MonthNames/8=أيلول +FormatData/ar_SY/MonthNames/9=تشرين الأول +FormatData/ar_SY/MonthNames/10=تشرين الثاني +FormatData/ar_SY/MonthNames/11=كانون الأول FormatData/ar_SY/MonthNames/12= -FormatData/ar_SY/MonthAbbreviations/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_SY/MonthAbbreviations/1=\u0634\u0628\u0627\u0637 -FormatData/ar_SY/MonthAbbreviations/2=\u0622\u0630\u0627\u0631 -FormatData/ar_SY/MonthAbbreviations/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_SY/MonthAbbreviations/4=\u0623\u064a\u0627\u0631 -FormatData/ar_SY/MonthAbbreviations/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_SY/MonthAbbreviations/6=\u062a\u0645\u0648\u0632 -FormatData/ar_SY/MonthAbbreviations/7=\u0622\u0628 -FormatData/ar_SY/MonthAbbreviations/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_SY/MonthAbbreviations/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_SY/MonthAbbreviations/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_SY/MonthAbbreviations/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +FormatData/ar_SY/MonthAbbreviations/0=كانون الثاني +FormatData/ar_SY/MonthAbbreviations/1=شباط +FormatData/ar_SY/MonthAbbreviations/2=آذار +FormatData/ar_SY/MonthAbbreviations/3=نيسان +FormatData/ar_SY/MonthAbbreviations/4=أيار +FormatData/ar_SY/MonthAbbreviations/5=حزيران +FormatData/ar_SY/MonthAbbreviations/6=تموز +FormatData/ar_SY/MonthAbbreviations/7=آب +FormatData/ar_SY/MonthAbbreviations/8=أيلول +FormatData/ar_SY/MonthAbbreviations/9=تشرين الأول +FormatData/ar_SY/MonthAbbreviations/10=تشرين الثاني +FormatData/ar_SY/MonthAbbreviations/11=كانون الأول FormatData/ar_SY/MonthAbbreviations/12= -FormatData/ar_SY/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SY/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SY/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SY/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SY/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SY/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SY/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_SY/DayNames/0=الأحد +FormatData/ar_SY/DayNames/1=الاثنين +FormatData/ar_SY/DayNames/2=الثلاثاء +FormatData/ar_SY/DayNames/3=الأربعاء +FormatData/ar_SY/DayNames/4=الخميس +FormatData/ar_SY/DayNames/5=الجمعة +FormatData/ar_SY/DayNames/6=السبت CalendarData/ar_SY/firstDayOfWeek=7 CalendarData/ar_SY/minimalDaysInFirstWeek=1 -FormatData/ar_SY/Eras/0=\u0642.\u0645 -FormatData/ar_SY/Eras/1=\u0645 -LocaleNames/ar_SY/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_SY/AmPmMarkers/0=\u0635 -FormatData/ar_SY/AmPmMarkers/1=\u0645 +FormatData/ar_SY/Eras/0=ق.م +FormatData/ar_SY/Eras/1=م +LocaleNames/ar_SY/ar=العربية +FormatData/ar_SY/AmPmMarkers/0=ص +FormatData/ar_SY/AmPmMarkers/1=م FormatData/ar_SY/TimePatterns/0=z hh:mm:ss a FormatData/ar_SY/TimePatterns/1=z hh:mm:ss a FormatData/ar_SY/TimePatterns/2=hh:mm:ss a @@ -2025,23 +2025,23 @@ FormatData/ar_SY/DatePatterns/2=dd/MM/yyyy FormatData/ar_SY/DatePatterns/3=dd/MM/yy FormatData/ar_SY/DateTimePatterns/0={1} {0} -LocaleNames/ar_SY/EG=\u0645\u0635\u0631 -LocaleNames/ar_SY/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_SY/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_SY/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_SY/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_SY/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_SY/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_SY/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_SY/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_SY/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_SY/QA=\u0642\u0637\u0631 -LocaleNames/ar_SY/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_SY/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_SY/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_SY/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_SY/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_SY/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_SY/EG=مصر +LocaleNames/ar_SY/DZ=الجزائر +LocaleNames/ar_SY/BH=البحرين +LocaleNames/ar_SY/IQ=العراق +LocaleNames/ar_SY/JO=الأردن +LocaleNames/ar_SY/KW=الكويت +LocaleNames/ar_SY/LB=لبنان +LocaleNames/ar_SY/LY=ليبيا +LocaleNames/ar_SY/MA=المغرب +LocaleNames/ar_SY/OM=عُمان +LocaleNames/ar_SY/QA=قطر +LocaleNames/ar_SY/SA=المملكة العربية السعودية +LocaleNames/ar_SY/SD=السودان +LocaleNames/ar_SY/SY=سوريا +LocaleNames/ar_SY/TN=تونس +LocaleNames/ar_SY/AE=الإمارات العربية المتحدة +LocaleNames/ar_SY/YE=اليمن FormatData/ar_SY/NumberElements/0=. FormatData/ar_SY/NumberElements/1=, FormatData/ar_SY/NumberElements/2=; @@ -2050,60 +2050,60 @@ FormatData/ar_SY/NumberElements/5=# FormatData/ar_SY/NumberElements/6=- FormatData/ar_SY/NumberElements/7=E -FormatData/ar_SY/NumberElements/8=\u2030 -FormatData/ar_SY/NumberElements/9=\u221e -FormatData/ar_SY/NumberElements/10=\ufffd -CurrencyNames/ar_TN/TND=\u062f.\u062a.\u200f +FormatData/ar_SY/NumberElements/8=‰ +FormatData/ar_SY/NumberElements/9=∞ +FormatData/ar_SY/NumberElements/10=� +CurrencyNames/ar_TN/TND=د.ت.‏ FormatData/ar_TN/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_TN/NumberPatterns/1='\u062f.\u062a.\u200f' #,##0.###;'\u062f.\u062a.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_TN/NumberPatterns/1='د.ت.‏' #,##0.###;'د.ت.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_TN/NumberPatterns/2=#,##0% -FormatData/ar_TN/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_TN/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_TN/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_TN/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_TN/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_TN/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_TN/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_TN/DayNames/0=الأحد +FormatData/ar_TN/DayNames/1=الاثنين +FormatData/ar_TN/DayNames/2=الثلاثاء +FormatData/ar_TN/DayNames/3=الأربعاء +FormatData/ar_TN/DayNames/4=الخميس +FormatData/ar_TN/DayNames/5=الجمعة +FormatData/ar_TN/DayNames/6=السبت CalendarData/ar_TN/firstDayOfWeek=7 CalendarData/ar_TN/minimalDaysInFirstWeek=1 -FormatData/ar_TN/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_TN/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_TN/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_TN/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_TN/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_TN/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_TN/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_TN/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_TN/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_TN/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_TN/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_TN/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_TN/MonthAbbreviations/0=ينا +FormatData/ar_TN/MonthAbbreviations/1=فبر +FormatData/ar_TN/MonthAbbreviations/2=مار +FormatData/ar_TN/MonthAbbreviations/3=أبر +FormatData/ar_TN/MonthAbbreviations/4=ماي +FormatData/ar_TN/MonthAbbreviations/5=يون +FormatData/ar_TN/MonthAbbreviations/6=يول +FormatData/ar_TN/MonthAbbreviations/7=أغس +FormatData/ar_TN/MonthAbbreviations/8=سبت +FormatData/ar_TN/MonthAbbreviations/9=أكت +FormatData/ar_TN/MonthAbbreviations/10=نوف +FormatData/ar_TN/MonthAbbreviations/11=ديس FormatData/ar_TN/MonthAbbreviations/12= -FormatData/ar_TN/Eras/0=\u0642.\u0645 -FormatData/ar_TN/Eras/1=\u0645 -FormatData/ar_TN/DayAbbreviations/0=\u062d -FormatData/ar_TN/DayAbbreviations/1=\u0646 -FormatData/ar_TN/DayAbbreviations/2=\u062b -FormatData/ar_TN/DayAbbreviations/3=\u0631 -FormatData/ar_TN/DayAbbreviations/4=\u062e -FormatData/ar_TN/DayAbbreviations/5=\u062c -FormatData/ar_TN/DayAbbreviations/6=\u0633 -LocaleNames/ar_TN/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_TN/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_TN/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_TN/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_TN/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_TN/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_TN/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_TN/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_TN/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_TN/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_TN/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_TN/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_TN/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_TN/Eras/0=ق.م +FormatData/ar_TN/Eras/1=م +FormatData/ar_TN/DayAbbreviations/0=ح +FormatData/ar_TN/DayAbbreviations/1=ن +FormatData/ar_TN/DayAbbreviations/2=ث +FormatData/ar_TN/DayAbbreviations/3=ر +FormatData/ar_TN/DayAbbreviations/4=خ +FormatData/ar_TN/DayAbbreviations/5=ج +FormatData/ar_TN/DayAbbreviations/6=س +LocaleNames/ar_TN/ar=العربية +FormatData/ar_TN/MonthNames/0=يناير +FormatData/ar_TN/MonthNames/1=فبراير +FormatData/ar_TN/MonthNames/2=مارس +FormatData/ar_TN/MonthNames/3=أبريل +FormatData/ar_TN/MonthNames/4=مايو +FormatData/ar_TN/MonthNames/5=يونيو +FormatData/ar_TN/MonthNames/6=يوليو +FormatData/ar_TN/MonthNames/7=أغسطس +FormatData/ar_TN/MonthNames/8=سبتمبر +FormatData/ar_TN/MonthNames/9=أكتوبر +FormatData/ar_TN/MonthNames/10=نوفمبر +FormatData/ar_TN/MonthNames/11=ديسمبر FormatData/ar_TN/MonthNames/12= -FormatData/ar_TN/AmPmMarkers/0=\u0635 -FormatData/ar_TN/AmPmMarkers/1=\u0645 +FormatData/ar_TN/AmPmMarkers/0=ص +FormatData/ar_TN/AmPmMarkers/1=م FormatData/ar_TN/TimePatterns/0=z hh:mm:ss a FormatData/ar_TN/TimePatterns/1=z hh:mm:ss a FormatData/ar_TN/TimePatterns/2=hh:mm:ss a @@ -2113,23 +2113,23 @@ FormatData/ar_TN/DatePatterns/2=dd/MM/yyyy FormatData/ar_TN/DatePatterns/3=dd/MM/yy FormatData/ar_TN/DateTimePatterns/0={1} {0} -LocaleNames/ar_TN/EG=\u0645\u0635\u0631 -LocaleNames/ar_TN/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_TN/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_TN/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_TN/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_TN/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_TN/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_TN/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_TN/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_TN/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_TN/QA=\u0642\u0637\u0631 -LocaleNames/ar_TN/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_TN/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_TN/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_TN/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_TN/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_TN/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_TN/EG=مصر +LocaleNames/ar_TN/DZ=الجزائر +LocaleNames/ar_TN/BH=البحرين +LocaleNames/ar_TN/IQ=العراق +LocaleNames/ar_TN/JO=الأردن +LocaleNames/ar_TN/KW=الكويت +LocaleNames/ar_TN/LB=لبنان +LocaleNames/ar_TN/LY=ليبيا +LocaleNames/ar_TN/MA=المغرب +LocaleNames/ar_TN/OM=عُمان +LocaleNames/ar_TN/QA=قطر +LocaleNames/ar_TN/SA=المملكة العربية السعودية +LocaleNames/ar_TN/SD=السودان +LocaleNames/ar_TN/SY=سوريا +LocaleNames/ar_TN/TN=تونس +LocaleNames/ar_TN/AE=الإمارات العربية المتحدة +LocaleNames/ar_TN/YE=اليمن FormatData/ar_TN/NumberElements/0=. FormatData/ar_TN/NumberElements/1=, FormatData/ar_TN/NumberElements/2=; @@ -2138,60 +2138,60 @@ FormatData/ar_TN/NumberElements/5=# FormatData/ar_TN/NumberElements/6=- FormatData/ar_TN/NumberElements/7=E -FormatData/ar_TN/NumberElements/8=\u2030 -FormatData/ar_TN/NumberElements/9=\u221e -FormatData/ar_TN/NumberElements/10=\ufffd -CurrencyNames/ar_YE/YER=\u0631.\u064a.\u200f +FormatData/ar_TN/NumberElements/8=‰ +FormatData/ar_TN/NumberElements/9=∞ +FormatData/ar_TN/NumberElements/10=� +CurrencyNames/ar_YE/YER=ر.ي.‏ FormatData/ar_YE/NumberPatterns/0=#,##0.###;#,##0.###- -# FormatData/ar_YE/NumberPatterns/1='\u0631.\u064a.\u200f' #,##0.###;'\u0631.\u064a.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_YE/NumberPatterns/1='ر.ي.‏' #,##0.###;'ر.ي.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_YE/NumberPatterns/2=#,##0% -FormatData/ar_YE/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_YE/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_YE/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_YE/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_YE/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_YE/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_YE/DayNames/6=\u0627\u0644\u0633\u0628\u062a +FormatData/ar_YE/DayNames/0=الأحد +FormatData/ar_YE/DayNames/1=الاثنين +FormatData/ar_YE/DayNames/2=الثلاثاء +FormatData/ar_YE/DayNames/3=الأربعاء +FormatData/ar_YE/DayNames/4=الخميس +FormatData/ar_YE/DayNames/5=الجمعة +FormatData/ar_YE/DayNames/6=السبت CalendarData/ar_YE/firstDayOfWeek=7 CalendarData/ar_YE/minimalDaysInFirstWeek=1 -FormatData/ar_YE/MonthAbbreviations/0=\u064a\u0646\u0627 -FormatData/ar_YE/MonthAbbreviations/1=\u0641\u0628\u0631 -FormatData/ar_YE/MonthAbbreviations/2=\u0645\u0627\u0631 -FormatData/ar_YE/MonthAbbreviations/3=\u0623\u0628\u0631 -FormatData/ar_YE/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_YE/MonthAbbreviations/5=\u064a\u0648\u0646 -FormatData/ar_YE/MonthAbbreviations/6=\u064a\u0648\u0644 -FormatData/ar_YE/MonthAbbreviations/7=\u0623\u063a\u0633 -FormatData/ar_YE/MonthAbbreviations/8=\u0633\u0628\u062a -FormatData/ar_YE/MonthAbbreviations/9=\u0623\u0643\u062a -FormatData/ar_YE/MonthAbbreviations/10=\u0646\u0648\u0641 -FormatData/ar_YE/MonthAbbreviations/11=\u062f\u064a\u0633 +FormatData/ar_YE/MonthAbbreviations/0=ينا +FormatData/ar_YE/MonthAbbreviations/1=فبر +FormatData/ar_YE/MonthAbbreviations/2=مار +FormatData/ar_YE/MonthAbbreviations/3=أبر +FormatData/ar_YE/MonthAbbreviations/4=ماي +FormatData/ar_YE/MonthAbbreviations/5=يون +FormatData/ar_YE/MonthAbbreviations/6=يول +FormatData/ar_YE/MonthAbbreviations/7=أغس +FormatData/ar_YE/MonthAbbreviations/8=سبت +FormatData/ar_YE/MonthAbbreviations/9=أكت +FormatData/ar_YE/MonthAbbreviations/10=نوف +FormatData/ar_YE/MonthAbbreviations/11=ديس FormatData/ar_YE/MonthAbbreviations/12= -FormatData/ar_YE/Eras/0=\u0642.\u0645 -FormatData/ar_YE/Eras/1=\u0645 -FormatData/ar_YE/DayAbbreviations/0=\u062d -FormatData/ar_YE/DayAbbreviations/1=\u0646 -FormatData/ar_YE/DayAbbreviations/2=\u062b -FormatData/ar_YE/DayAbbreviations/3=\u0631 -FormatData/ar_YE/DayAbbreviations/4=\u062e -FormatData/ar_YE/DayAbbreviations/5=\u062c -FormatData/ar_YE/DayAbbreviations/6=\u0633 -LocaleNames/ar_YE/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_YE/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_YE/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_YE/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_YE/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_YE/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_YE/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_YE/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_YE/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_YE/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_YE/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_YE/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_YE/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_YE/Eras/0=ق.م +FormatData/ar_YE/Eras/1=م +FormatData/ar_YE/DayAbbreviations/0=ح +FormatData/ar_YE/DayAbbreviations/1=ن +FormatData/ar_YE/DayAbbreviations/2=ث +FormatData/ar_YE/DayAbbreviations/3=ر +FormatData/ar_YE/DayAbbreviations/4=خ +FormatData/ar_YE/DayAbbreviations/5=ج +FormatData/ar_YE/DayAbbreviations/6=س +LocaleNames/ar_YE/ar=العربية +FormatData/ar_YE/MonthNames/0=يناير +FormatData/ar_YE/MonthNames/1=فبراير +FormatData/ar_YE/MonthNames/2=مارس +FormatData/ar_YE/MonthNames/3=أبريل +FormatData/ar_YE/MonthNames/4=مايو +FormatData/ar_YE/MonthNames/5=يونيو +FormatData/ar_YE/MonthNames/6=يوليو +FormatData/ar_YE/MonthNames/7=أغسطس +FormatData/ar_YE/MonthNames/8=سبتمبر +FormatData/ar_YE/MonthNames/9=أكتوبر +FormatData/ar_YE/MonthNames/10=نوفمبر +FormatData/ar_YE/MonthNames/11=ديسمبر FormatData/ar_YE/MonthNames/12= -FormatData/ar_YE/AmPmMarkers/0=\u0635 -FormatData/ar_YE/AmPmMarkers/1=\u0645 +FormatData/ar_YE/AmPmMarkers/0=ص +FormatData/ar_YE/AmPmMarkers/1=م FormatData/ar_YE/TimePatterns/0=z hh:mm:ss a FormatData/ar_YE/TimePatterns/1=z hh:mm:ss a FormatData/ar_YE/TimePatterns/2=hh:mm:ss a @@ -2201,23 +2201,23 @@ FormatData/ar_YE/DatePatterns/2=dd/MM/yyyy FormatData/ar_YE/DatePatterns/3=dd/MM/yy FormatData/ar_YE/DateTimePatterns/0={1} {0} -LocaleNames/ar_YE/EG=\u0645\u0635\u0631 -LocaleNames/ar_YE/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_YE/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_YE/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_YE/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_YE/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_YE/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_YE/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_YE/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_YE/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_YE/QA=\u0642\u0637\u0631 -LocaleNames/ar_YE/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_YE/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_YE/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_YE/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_YE/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_YE/YE=\u0627\u0644\u064a\u0645\u0646 +LocaleNames/ar_YE/EG=مصر +LocaleNames/ar_YE/DZ=الجزائر +LocaleNames/ar_YE/BH=البحرين +LocaleNames/ar_YE/IQ=العراق +LocaleNames/ar_YE/JO=الأردن +LocaleNames/ar_YE/KW=الكويت +LocaleNames/ar_YE/LB=لبنان +LocaleNames/ar_YE/LY=ليبيا +LocaleNames/ar_YE/MA=المغرب +LocaleNames/ar_YE/OM=عُمان +LocaleNames/ar_YE/QA=قطر +LocaleNames/ar_YE/SA=المملكة العربية السعودية +LocaleNames/ar_YE/SD=السودان +LocaleNames/ar_YE/SY=سوريا +LocaleNames/ar_YE/TN=تونس +LocaleNames/ar_YE/AE=الإمارات العربية المتحدة +LocaleNames/ar_YE/YE=اليمن FormatData/ar_YE/NumberElements/0=. FormatData/ar_YE/NumberElements/1=, FormatData/ar_YE/NumberElements/2=; @@ -2226,21 +2226,21 @@ FormatData/ar_YE/NumberElements/5=# FormatData/ar_YE/NumberElements/6=- FormatData/ar_YE/NumberElements/7=E -FormatData/ar_YE/NumberElements/8=\u2030 -FormatData/ar_YE/NumberElements/9=\u221e -FormatData/ar_YE/NumberElements/10=\ufffd +FormatData/ar_YE/NumberElements/8=‰ +FormatData/ar_YE/NumberElements/9=∞ +FormatData/ar_YE/NumberElements/10=� # bug #4113654 (this is obviously not an exhaustive test; I'm trying it here for a single # inheritance chain only. This bug fix also gets tested fairly well by the tests for all # the other bugs as given above) FormatData//NumberPatterns/0=#,##0.###;-#,##0.### -# FormatData//NumberPatterns/1=\u00a4 #,##0.00;-\u00a4 #,##0.00 # Changed; see bug 4122840 +# FormatData//NumberPatterns/1=¤ #,##0.00;-¤ #,##0.00 # Changed; see bug 4122840 FormatData//NumberPatterns/2=#,##0% FormatData/fr/NumberPatterns/0=#,##0.###;-#,##0.### -# FormatData/fr/NumberPatterns/1=\u00a4 #,##0.00;-\u00a4 #,##0.00 # Changed; see bug 4122840 +# FormatData/fr/NumberPatterns/1=¤ #,##0.00;-¤ #,##0.00 # Changed; see bug 4122840 # FormatData/fr/NumberPatterns/2=#,##0% # changed, see bug 6547501 CurrencyNames/fr_FR/FRF=F -CurrencyNames/fr_FR/EUR=\u20ac +CurrencyNames/fr_FR/EUR=€ FormatData/fr_FR/NumberPatterns/0=#,##0.###;-#,##0.### # FormatData/fr_FR/NumberPatterns/1=#,##0.00 F;-#,##0.00 F # Changed; see bug 4122840 # FormatData/fr_FR/NumberPatterns/2=#,##0% # changed; see bug 6547501 @@ -2252,19 +2252,19 @@ FormatData/fr_FR/DayNames/5=vendredi FormatData/fr_FR/DayNames/6=samedi FormatData/fr_FR/MonthNames/0=janvier -FormatData/fr_FR/MonthNames/1=f\u00e9vrier +FormatData/fr_FR/MonthNames/1=février FormatData/fr_FR/MonthNames/2=mars FormatData/fr_FR/MonthNames/3=avril FormatData/fr_FR/MonthNames/4=mai FormatData/fr_FR/MonthNames/5=juin FormatData/fr_FR/MonthNames/6=juillet -FormatData/fr_FR/MonthNames/7=ao\u00fbt +FormatData/fr_FR/MonthNames/7=août FormatData/fr_FR/MonthNames/8=septembre FormatData/fr_FR/MonthNames/9=octobre FormatData/fr_FR/MonthNames/10=novembre -FormatData/fr_FR/MonthNames/11=d\u00e9cembre +FormatData/fr_FR/MonthNames/11=décembre FormatData/fr_FR/MonthNames/12= -LocaleNames/fr_FR/fr=fran\u00e7ais +LocaleNames/fr_FR/fr=français LocaleNames/fr_FR/en=anglais LocaleNames/fr_FR/de=allemand LocaleNames/fr_FR/da=danois @@ -2274,10 +2274,10 @@ LocaleNames/fr_FR/it=italien LocaleNames/fr_FR/ja=japonais #bug 4965260 -LocaleNames/fr_FR/nl=n\u00e9erlandais -LocaleNames/fr_FR/no=norv\u00e9gien +LocaleNames/fr_FR/nl=néerlandais +LocaleNames/fr_FR/no=norvégien LocaleNames/fr_FR/pt=portugais -LocaleNames/fr_FR/sv=su\u00e9dois +LocaleNames/fr_FR/sv=suédois LocaleNames/fr_FR/tr=turc FormatData/fr_FR/TimePatterns/0=HH' h 'mm z FormatData/fr_FR/TimePatterns/1=HH:mm:ss z @@ -2289,24 +2289,24 @@ FormatData/fr_FR/DatePatterns/3=dd/MM/yy FormatData/fr_FR/DateTimePatterns/0={1} {0} FormatData/fr_FR/NumberElements/0=, -FormatData/fr_FR/NumberElements/1=\u00a0 +FormatData/fr_FR/NumberElements/1=  FormatData/fr_FR/NumberElements/2=; FormatData/fr_FR/NumberElements/3=% FormatData/fr_FR/NumberElements/4=0 FormatData/fr_FR/NumberElements/5=# FormatData/fr_FR/NumberElements/6=- FormatData/fr_FR/NumberElements/7=E -FormatData/fr_FR/NumberElements/8=\u2030 -FormatData/fr_FR/NumberElements/9=\u221e -FormatData/fr_FR/NumberElements/10=\ufffd +FormatData/fr_FR/NumberElements/8=‰ +FormatData/fr_FR/NumberElements/9=∞ +FormatData/fr_FR/NumberElements/10=� FormatData/fr_FR/Eras/0=BC FormatData/fr_FR/Eras/1=ap. J.-C. LocaleNames/fr_FR/FR=France -LocaleNames/fr_FR/US=\u00c9tats-Unis +LocaleNames/fr_FR/US=États-Unis LocaleNames/fr_FR/DK=Danemark LocaleNames/fr_FR/DE=Allemagne LocaleNames/fr_FR/AT=Autriche -LocaleNames/fr_FR/GR=Gr\u00e8ce +LocaleNames/fr_FR/GR=Grèce LocaleNames/fr_FR/ES=Espagne LocaleNames/fr_FR/FI=Finlande LocaleNames/fr_FR/IT=Italie @@ -2315,9 +2315,9 @@ LocaleNames/fr_FR/CA=Canada LocaleNames/fr_FR/JP=Japon LocaleNames/fr_FR/NL=Pays-Bas -LocaleNames/fr_FR/NO=Norv\u00e8ge +LocaleNames/fr_FR/NO=Norvège LocaleNames/fr_FR/PT=Portugal -LocaleNames/fr_FR/SE=Su\u00e8de +LocaleNames/fr_FR/SE=Suède LocaleNames/fr_FR/TR=Turquie FormatData/fr_FR/DayAbbreviations/0=dim. FormatData/fr_FR/DayAbbreviations/1=lun. @@ -2327,17 +2327,17 @@ FormatData/fr_FR/DayAbbreviations/5=ven. FormatData/fr_FR/DayAbbreviations/6=sam. FormatData/fr_FR/MonthAbbreviations/0=janv. -FormatData/fr_FR/MonthAbbreviations/1=f\u00e9vr. +FormatData/fr_FR/MonthAbbreviations/1=févr. FormatData/fr_FR/MonthAbbreviations/2=mars FormatData/fr_FR/MonthAbbreviations/3=avr. FormatData/fr_FR/MonthAbbreviations/4=mai FormatData/fr_FR/MonthAbbreviations/5=juin FormatData/fr_FR/MonthAbbreviations/6=juil. -FormatData/fr_FR/MonthAbbreviations/7=ao\u00fbt +FormatData/fr_FR/MonthAbbreviations/7=août FormatData/fr_FR/MonthAbbreviations/8=sept. FormatData/fr_FR/MonthAbbreviations/9=oct. FormatData/fr_FR/MonthAbbreviations/10=nov. -FormatData/fr_FR/MonthAbbreviations/11=d\u00e9c. +FormatData/fr_FR/MonthAbbreviations/11=déc. FormatData/fr_FR/MonthAbbreviations/12= CalendarData/fr_FR/firstDayOfWeek=2 # next line changed according the 4518811 bug @@ -2346,60 +2346,60 @@ FormatData/fr_FR/AmPmMarkers/1=PM # bug #4117054 -FormatData/ja_JP/AmPmMarkers/0=\u5348\u524d -FormatData/ja_JP/AmPmMarkers/1=\u5348\u5f8c +FormatData/ja_JP/AmPmMarkers/0=午前 +FormatData/ja_JP/AmPmMarkers/1=午後 # bug #4122840, 4290801 -FormatData/ar_AE/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_BH/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_DZ/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_EG/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_IQ/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_JO/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_KW/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_LB/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_LY/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_MA/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_OM/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_QA/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_SA/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_SD/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_SY/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_TN/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/ar_YE/NumberPatterns/1=\u00a4 #,##0.###;\u00a4 #,##0.###- -FormatData/en_AU/NumberPatterns/1=\u00a4#,##0.00;-\u00a4#,##0.00 -FormatData/en_NZ/NumberPatterns/1=\u00a4#,##0.00;-\u00a4#,##0.00 -FormatData/en_ZA/NumberPatterns/1=\u00a4 #,##0.00;\u00a4-#,##0.00 -FormatData/es_AR/NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00 -FormatData/es_BO/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_CL/NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00 -FormatData/es_CO/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_CR/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_DO/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_EC/NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00 -FormatData/es_GT/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_HN/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_MX/NumberPatterns/1=\u00a4#,##0.00;-\u00a4#,##0.00 -FormatData/es_NI/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_PA/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_PE/NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00 -FormatData/es_PR/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_PY/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_SV/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) -FormatData/es_UY/NumberPatterns/1=\u00a4 #,##0.00;(\u00a4#,##0.00) -FormatData/es_VE/NumberPatterns/1=\u00a4#,##0.00;\u00a4 -#,##0.00 -FormatData/fr_FR/NumberPatterns/1=#,##0.00 \u00a4;-#,##0.00 \u00a4 -FormatData/it_IT/NumberPatterns/1=\u00a4 #,##0.00;-\u00a4 #,##0.00 -#FormatData/ja_JP/NumberPatterns/1=\u00a4#,##0.00 #see bug 4175306 -FormatData/ko_KR/NumberPatterns/1=\u00a4#,##0;-\u00a4#,##0 -FormatData/pl_PL/NumberPatterns/1=#,##0.## \u00a4;-#,##0.## \u00a4 -FormatData/pt_BR/NumberPatterns/1=\u00a4 #,##0.00;-\u00a4 #,##0.00 +FormatData/ar_AE/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_BH/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_DZ/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_EG/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_IQ/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_JO/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_KW/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_LB/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_LY/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_MA/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_OM/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_QA/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_SA/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_SD/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_SY/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_TN/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/ar_YE/NumberPatterns/1=¤ #,##0.###;¤ #,##0.###- +FormatData/en_AU/NumberPatterns/1=¤#,##0.00;-¤#,##0.00 +FormatData/en_NZ/NumberPatterns/1=¤#,##0.00;-¤#,##0.00 +FormatData/en_ZA/NumberPatterns/1=¤ #,##0.00;¤-#,##0.00 +FormatData/es_AR/NumberPatterns/1=¤#,##0.00;¤-#,##0.00 +FormatData/es_BO/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_CL/NumberPatterns/1=¤#,##0.00;¤-#,##0.00 +FormatData/es_CO/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_CR/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_DO/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_EC/NumberPatterns/1=¤#,##0.00;¤-#,##0.00 +FormatData/es_GT/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_HN/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_MX/NumberPatterns/1=¤#,##0.00;-¤#,##0.00 +FormatData/es_NI/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_PA/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_PE/NumberPatterns/1=¤#,##0.00;¤-#,##0.00 +FormatData/es_PR/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_PY/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_SV/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) +FormatData/es_UY/NumberPatterns/1=¤ #,##0.00;(¤#,##0.00) +FormatData/es_VE/NumberPatterns/1=¤#,##0.00;¤ -#,##0.00 +FormatData/fr_FR/NumberPatterns/1=#,##0.00 ¤;-#,##0.00 ¤ +FormatData/it_IT/NumberPatterns/1=¤ #,##0.00;-¤ #,##0.00 +#FormatData/ja_JP/NumberPatterns/1=¤#,##0.00 #see bug 4175306 +FormatData/ko_KR/NumberPatterns/1=¤#,##0;-¤#,##0 +FormatData/pl_PL/NumberPatterns/1=#,##0.## ¤;-#,##0.## ¤ +FormatData/pt_BR/NumberPatterns/1=¤ #,##0.00;-¤ #,##0.00 #Changed; see 4936845 -FormatData/ru_RU/NumberPatterns/1=#,##0.## \u00a4;-#,##0.## \u00a4 -FormatData/uk_UA/NumberPatterns/1=#,##0.## \u00a4;-#,##0.## \u00a4 +FormatData/ru_RU/NumberPatterns/1=#,##0.## ¤;-#,##0.## ¤ +FormatData/uk_UA/NumberPatterns/1=#,##0.## ¤;-#,##0.## ¤ # bug #4122468 # Use common country names -LocaleNames//CI=C\u00f4te d\u2019Ivoire +LocaleNames//CI=Côte d’Ivoire LocaleNames//LY=Libya LocaleNames//RU=Russia LocaleNames//VN=Vietnam @@ -2409,59 +2409,59 @@ FormatData/cs/DatePatterns/1=d. MMMM yyyy FormatData/cs/DatePatterns/2=d.M.yyyy FormatData/cs/DatePatterns/3=d.M.yy -FormatData/cs/NumberElements/1=\u00a0 +FormatData/cs/NumberElements/1=  FormatData/cs_CZ/NumberPatterns/0=#,##0.##;-#,##0.## -FormatData/cs_CZ/NumberPatterns/1=#,##0.## \u00a4;-#,##0.## \u00a4 +FormatData/cs_CZ/NumberPatterns/1=#,##0.## ¤;-#,##0.## ¤ FormatData/cs_CZ/NumberPatterns/2=#,##0% #bug #4135752 -FormatData/th_TH/NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00 -CurrencyNames/th_TH/THB=\u0e3f +FormatData/th_TH/NumberPatterns/1=¤#,##0.00;¤-#,##0.00 +CurrencyNames/th_TH/THB=฿ #bug #4153698 # TimeZoneNames/zh_HK/zoneStrings/0/1=Hong Kong Standard Time # changed, see bug 4261506 # TimeZoneNames/zh_HK/zoneStrings/0/2=HKST # changed, see bug 4261506 -LocaleNames/zh/HK=\u4e2d\u56fd\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a -FormatData/zh_HK/MonthNames/0=\u4e00\u6708 -FormatData/zh_HK/MonthNames/1=\u4e8c\u6708 -FormatData/zh_HK/MonthNames/2=\u4e09\u6708 -FormatData/zh_HK/MonthNames/3=\u56db\u6708 -FormatData/zh_HK/MonthAbbreviations/0=1\u6708 -FormatData/zh_HK/MonthAbbreviations/1=2\u6708 -FormatData/zh_HK/MonthAbbreviations/2=3\u6708 -FormatData/zh_HK/MonthAbbreviations/3=4\u6708 -FormatData/zh_HK/DayNames/0=\u661f\u671f\u65e5 -FormatData/zh_HK/DayNames/1=\u661f\u671f\u4e00 -FormatData/zh_HK/DayNames/2=\u661f\u671f\u4e8c -FormatData/zh_HK/DayAbbreviations/0=\u65e5 -FormatData/zh_HK/DayAbbreviations/1=\u4e00 -FormatData/zh_HK/DayAbbreviations/2=\u4e8c -FormatData/zh_HK/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) +LocaleNames/zh/HK=中国香港特别行政区 +FormatData/zh_HK/MonthNames/0=一月 +FormatData/zh_HK/MonthNames/1=二月 +FormatData/zh_HK/MonthNames/2=三月 +FormatData/zh_HK/MonthNames/3=四月 +FormatData/zh_HK/MonthAbbreviations/0=1月 +FormatData/zh_HK/MonthAbbreviations/1=2月 +FormatData/zh_HK/MonthAbbreviations/2=3月 +FormatData/zh_HK/MonthAbbreviations/3=4月 +FormatData/zh_HK/DayNames/0=星期日 +FormatData/zh_HK/DayNames/1=星期一 +FormatData/zh_HK/DayNames/2=星期二 +FormatData/zh_HK/DayAbbreviations/0=日 +FormatData/zh_HK/DayAbbreviations/1=一 +FormatData/zh_HK/DayAbbreviations/2=二 +FormatData/zh_HK/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) CurrencyNames/zh_HK/HKD=HK$ -FormatData/zh_HK/TimePatterns/0=ahh'\u6642'mm'\u5206'ss'\u79d2' z -FormatData/zh_HK/TimePatterns/1=ahh'\u6642'mm'\u5206'ss'\u79d2' +FormatData/zh_HK/TimePatterns/0=ahh'時'mm'分'ss'秒' z +FormatData/zh_HK/TimePatterns/1=ahh'時'mm'分'ss'秒' FormatData/zh_HK/TimePatterns/2=ahh:mm:ss FormatData/zh_HK/TimePatterns/3=ah:mm -FormatData/zh_HK/DatePatterns/0=yyyy'\u5e74'MM'\u6708'dd'\u65e5' EEEE -FormatData/zh_HK/DatePatterns/1=yyyy'\u5e74'MM'\u6708'dd'\u65e5' EEEE -FormatData/zh_HK/DatePatterns/2=yyyy'\u5e74'M'\u6708'd'\u65e5' -FormatData/zh_HK/DatePatterns/3=yy'\u5e74'M'\u6708'd'\u65e5' +FormatData/zh_HK/DatePatterns/0=yyyy'年'MM'月'dd'日' EEEE +FormatData/zh_HK/DatePatterns/1=yyyy'年'MM'月'dd'日' EEEE +FormatData/zh_HK/DatePatterns/2=yyyy'年'M'月'd'日' +FormatData/zh_HK/DatePatterns/3=yy'年'M'月'd'日' FormatData/zh_HK/DateTimePatterns/0={1} {0} #bug #4149569 -LocaleNames/tr/TR=T\u00fcrkiye +LocaleNames/tr/TR=Türkiye #bug 4175306 -FormatData/es_ES/NumberPatterns/1=#,##0 \u00a4;-#,##0 \u00a4 -FormatData/ja_JP/NumberPatterns/1=\u00a4#,##0;-\u00a4#,##0 +FormatData/es_ES/NumberPatterns/1=#,##0 ¤;-#,##0 ¤ +FormatData/ja_JP/NumberPatterns/1=¤#,##0;-¤#,##0 #bug #4215747 - commented out by mfang due to 4900884 -#FormatData/ko/TimePatterns/0=a h'\uc2dc' m'\ubd84' s'\ucd08' z -#FormatData/ko/TimePatterns/1=a h'\uc2dc' m'\ubd84' s'\ucd08' +#FormatData/ko/TimePatterns/0=a h'시' m'분' s'초' z +#FormatData/ko/TimePatterns/1=a h'시' m'분' s'초' #bug 4900884 -FormatData/ko/TimePatterns/0=a h'\uc2dc' mm'\ubd84' ss'\ucd08' z -FormatData/ko/TimePatterns/1=a h'\uc2dc' mm'\ubd84' ss'\ucd08' +FormatData/ko/TimePatterns/0=a h'시' mm'분' ss'초' z +FormatData/ko/TimePatterns/1=a h'시' mm'분' ss'초' FormatData/ko/TimePatterns/2=a h:mm:ss FormatData/ko/TimePatterns/3=a h:mm @@ -2480,10 +2480,10 @@ TimeZoneNames/en_CA/CTT/2=CST #bug nobugid, 4290801, 4942982 -CurrencyNames/ru_RU/RUB=\u0440\u0443\u0431. +CurrencyNames/ru_RU/RUB=руб. #bug 4826794 -LocaleNames/ru_RU/MM=\u041c\u044c\u044f\u043d\u043c\u0430 (\u0411\u0438\u0440\u043c\u0430) +LocaleNames/ru_RU/MM=Мьянма (Бирма) #bug 4518811 CalendarData/ca_ES/minimalDaysInFirstWeek=4 @@ -2501,24 +2501,24 @@ CalendarData/pt_PT/minimalDaysInFirstWeek=4 #bug 4945388 -CurrencyNames/be_BY/BYR=\u0420\u0443\u0431 -CurrencyNames/bg_BG/BGN=\u043b\u0432. +CurrencyNames/be_BY/BYR=Руб +CurrencyNames/bg_BG/BGN=лв. #bug 4794068 FormatData/ca_ES/NumberPatterns/0=#,##0.###;-#,##0.### #bug 5032580 -FormatData/sk/DayNames/0=Nede\u013ea +FormatData/sk/DayNames/0=Nedeľa FormatData/sk/DayAbbreviations/5=Pi #bug 5074431 -FormatData/bg/DayNames/4=\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a +FormatData/bg/DayNames/4=Четвъртък #bug 2121133 -FormatData/sv/NumberElements/1=\u00a0 +FormatData/sv/NumberElements/1=  #bug 6208712 -LocaleNames/zh/tw=\u5951\u7ef4\u8bed +LocaleNames/zh/tw=契维语 #bug 6277020 CalendarData/ca_ES/firstDayOfWeek=2 @@ -2526,15 +2526,15 @@ #bug 6277696 #zh_SG, id, id_ID, en_MT, mt_MT, en_PH, el, el_CY, ms, ms_MY #zh_SG -FormatData/zh_SG/DayAbbreviations/0=\u5468\u65e5 -FormatData/zh_SG/DayAbbreviations/1=\u5468\u4e00 -FormatData/zh_SG/DayAbbreviations/2=\u5468\u4e8c -FormatData/zh_SG/DayAbbreviations/3=\u5468\u4e09 -FormatData/zh_SG/DayAbbreviations/4=\u5468\u56db -FormatData/zh_SG/DayAbbreviations/5=\u5468\u4e94 -FormatData/zh_SG/DayAbbreviations/6=\u5468\u516d +FormatData/zh_SG/DayAbbreviations/0=周日 +FormatData/zh_SG/DayAbbreviations/1=周一 +FormatData/zh_SG/DayAbbreviations/2=周二 +FormatData/zh_SG/DayAbbreviations/3=周三 +FormatData/zh_SG/DayAbbreviations/4=周四 +FormatData/zh_SG/DayAbbreviations/5=周五 +FormatData/zh_SG/DayAbbreviations/6=周六 FormatData/zh_SG/NumberPatterns/0=#,##0.### -FormatData/zh_SG/NumberPatterns/1=\u00a4#,##0.00 +FormatData/zh_SG/NumberPatterns/1=¤#,##0.00 FormatData/zh_SG/NumberPatterns/2=#,##0% CurrencyNames/zh_SG/SGD=S$ FormatData/zh_SG/TimePatterns/0=a hh:mm:ss @@ -2546,64 +2546,64 @@ FormatData/zh_SG/DatePatterns/2=dd-MMM-yy FormatData/zh_SG/DatePatterns/3=dd/MM/yy FormatData/zh_SG/DateTimePatterns/0={1} {0} -LocaleNames/zh_SG/ae=\u963f\u7ef4\u65af\u5854\u8bed -LocaleNames/zh_SG/ak=\u963f\u80af\u8bed -LocaleNames/zh_SG/cr=\u514b\u91cc\u65cf\u8bed -LocaleNames/zh_SG/cu=\u6559\u4f1a\u65af\u62c9\u592b\u8bed -LocaleNames/zh_SG/ff=\u5bcc\u62c9\u8bed -LocaleNames/zh_SG/gv=\u9a6c\u6069\u8bed -LocaleNames/zh_SG/ig=\u4f0a\u535a\u8bed -LocaleNames/zh_SG/ii=\u56db\u5ddd\u5f5d\u8bed -LocaleNames/zh_SG/ko=\u97e9\u8bed -LocaleNames/zh_SG/kw=\u5eb7\u6c83\u5c14\u8bed -LocaleNames/zh_SG/lg=\u5362\u5e72\u8fbe\u8bed -LocaleNames/zh_SG/li=\u6797\u5821\u8bed -LocaleNames/zh_SG/lu=\u9c81\u5df4\u52a0\u4e39\u52a0\u8bed -LocaleNames/zh_SG/nd=\u5317\u6069\u5fb7\u8d1d\u52d2\u8bed -LocaleNames/zh_SG/nr=\u5357\u6069\u5fb7\u8d1d\u52d2\u8bed -LocaleNames/zh_SG/sc=\u8428\u4e01\u8bed -LocaleNames/zh_SG/ty=\u5854\u5e0c\u63d0\u8bed -LocaleNames/zh_SG/AS=\u7f8e\u5c5e\u8428\u6469\u4e9a -LocaleNames/zh_SG/AU=\u6fb3\u5927\u5229\u4e9a -LocaleNames/zh_SG/BD=\u5b5f\u52a0\u62c9\u56fd -LocaleNames/zh_SG/BV=\u5e03\u97e6\u5c9b -LocaleNames/zh_SG/BZ=\u4f2f\u5229\u5179 -LocaleNames/zh_SG/CZ=\u6377\u514b -LocaleNames/zh_SG/ER=\u5384\u7acb\u7279\u91cc\u4e9a -LocaleNames/zh_SG/FK=\u798f\u514b\u5170\u7fa4\u5c9b -LocaleNames/zh_SG/FM=\u5bc6\u514b\u7f57\u5c3c\u897f\u4e9a -LocaleNames/zh_SG/GS=\u5357\u4e54\u6cbb\u4e9a\u548c\u5357\u6851\u5a01\u5947\u7fa4\u5c9b -LocaleNames/zh_SG/GW=\u51e0\u5185\u4e9a\u6bd4\u7ecd -LocaleNames/zh_SG/HK=\u4e2d\u56fd\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a -LocaleNames/zh_SG/HM=\u8d6b\u5fb7\u5c9b\u548c\u9ea6\u514b\u5510\u7eb3\u7fa4\u5c9b -LocaleNames/zh_SG/ID=\u5370\u5ea6\u5c3c\u897f\u4e9a -LocaleNames/zh_SG/KR=\u97e9\u56fd -LocaleNames/zh_SG/LA=\u8001\u631d -LocaleNames/zh_SG/MK=\u5317\u9a6c\u5176\u987f -LocaleNames/zh_SG/MO=\u4e2d\u56fd\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a -LocaleNames/zh_SG/MP=\u5317\u9a6c\u91cc\u4e9a\u7eb3\u7fa4\u5c9b -LocaleNames/zh_SG/NU=\u7ebd\u57c3 -LocaleNames/zh_SG/NZ=\u65b0\u897f\u5170 -LocaleNames/zh_SG/PF=\u6cd5\u5c5e\u6ce2\u5229\u5c3c\u897f\u4e9a -LocaleNames/zh_SG/PM=\u5723\u76ae\u57c3\u5c14\u548c\u5bc6\u514b\u9686\u7fa4\u5c9b -LocaleNames/zh_SG/PN=\u76ae\u7279\u51ef\u6069\u7fa4\u5c9b -LocaleNames/zh_SG/PR=\u6ce2\u591a\u9ece\u5404 -LocaleNames/zh_SG/PS=\u5df4\u52d2\u65af\u5766\u9886\u571f -LocaleNames/zh_SG/RE=\u7559\u5c3c\u6c6a -LocaleNames/zh_SG/SA=\u6c99\u7279\u963f\u62c9\u4f2f -LocaleNames/zh_SG/SH=\u5723\u8d6b\u52d2\u62ff -LocaleNames/zh_SG/SJ=\u65af\u74e6\u5c14\u5df4\u548c\u626c\u9a6c\u5ef6 -LocaleNames/zh_SG/SL=\u585e\u62c9\u5229\u6602 -LocaleNames/zh_SG/TC=\u7279\u514b\u65af\u548c\u51ef\u79d1\u65af\u7fa4\u5c9b -LocaleNames/zh_SG/TK=\u6258\u514b\u52b3 -LocaleNames/zh_SG/TW=\u53f0\u6e7e -LocaleNames/zh_SG/UM=\u7f8e\u56fd\u672c\u571f\u5916\u5c0f\u5c9b\u5c7f -LocaleNames/zh_SG/WF=\u74e6\u5229\u65af\u548c\u5bcc\u56fe\u7eb3 -LocaleNames/zh_SG/WS=\u8428\u6469\u4e9a -LocaleNames/zh_SG/YT=\u9a6c\u7ea6\u7279 +LocaleNames/zh_SG/ae=阿维斯塔语 +LocaleNames/zh_SG/ak=阿肯语 +LocaleNames/zh_SG/cr=克里族语 +LocaleNames/zh_SG/cu=教会斯拉夫语 +LocaleNames/zh_SG/ff=富拉语 +LocaleNames/zh_SG/gv=马恩语 +LocaleNames/zh_SG/ig=伊博语 +LocaleNames/zh_SG/ii=四川彝语 +LocaleNames/zh_SG/ko=韩语 +LocaleNames/zh_SG/kw=康沃尔语 +LocaleNames/zh_SG/lg=卢干达语 +LocaleNames/zh_SG/li=林堡语 +LocaleNames/zh_SG/lu=鲁巴加丹加语 +LocaleNames/zh_SG/nd=北恩德贝勒语 +LocaleNames/zh_SG/nr=南恩德贝勒语 +LocaleNames/zh_SG/sc=萨丁语 +LocaleNames/zh_SG/ty=塔希提语 +LocaleNames/zh_SG/AS=美属萨摩亚 +LocaleNames/zh_SG/AU=澳大利亚 +LocaleNames/zh_SG/BD=孟加拉国 +LocaleNames/zh_SG/BV=布韦岛 +LocaleNames/zh_SG/BZ=伯利兹 +LocaleNames/zh_SG/CZ=捷克 +LocaleNames/zh_SG/ER=厄立特里亚 +LocaleNames/zh_SG/FK=福克兰群岛 +LocaleNames/zh_SG/FM=密克罗尼西亚 +LocaleNames/zh_SG/GS=南乔治亚和南桑威奇群岛 +LocaleNames/zh_SG/GW=几内亚比绍 +LocaleNames/zh_SG/HK=中国香港特别行政区 +LocaleNames/zh_SG/HM=赫德岛和麦克唐纳群岛 +LocaleNames/zh_SG/ID=印度尼西亚 +LocaleNames/zh_SG/KR=韩国 +LocaleNames/zh_SG/LA=老挝 +LocaleNames/zh_SG/MK=北马其顿 +LocaleNames/zh_SG/MO=中国澳门特别行政区 +LocaleNames/zh_SG/MP=北马里亚纳群岛 +LocaleNames/zh_SG/NU=纽埃 +LocaleNames/zh_SG/NZ=新西兰 +LocaleNames/zh_SG/PF=法属波利尼西亚 +LocaleNames/zh_SG/PM=圣皮埃尔和密克隆群岛 +LocaleNames/zh_SG/PN=皮特凯恩群岛 +LocaleNames/zh_SG/PR=波多黎各 +LocaleNames/zh_SG/PS=巴勒斯坦领土 +LocaleNames/zh_SG/RE=留尼汪 +LocaleNames/zh_SG/SA=沙特阿拉伯 +LocaleNames/zh_SG/SH=圣赫勒拿 +LocaleNames/zh_SG/SJ=斯瓦尔巴和扬马延 +LocaleNames/zh_SG/SL=塞拉利昂 +LocaleNames/zh_SG/TC=特克斯和凯科斯群岛 +LocaleNames/zh_SG/TK=托克劳 +LocaleNames/zh_SG/TW=台湾 +LocaleNames/zh_SG/UM=美国本土外小岛屿 +LocaleNames/zh_SG/WF=瓦利斯和富图纳 +LocaleNames/zh_SG/WS=萨摩亚 +LocaleNames/zh_SG/YT=马约特 #en_SG FormatData/en_SG/NumberPatterns/0=#,##0.### -FormatData/en_SG/NumberPatterns/1=\u00a4#,##0.00 +FormatData/en_SG/NumberPatterns/1=¤#,##0.00 FormatData/en_SG/NumberPatterns/2=#,##0% CurrencyNames/en_SG/SGD=$ LocaleNames/en_SG/kj=Kuanyama @@ -2615,14 +2615,14 @@ LocaleNames/en_SG/rm=Romansh LocaleNames/en_SG/to=Tongan LocaleNames/en_SG/CC=Cocos (Keeling) Islands -LocaleNames/en_SG/CI=C\u00f4te d\u2019Ivoire +LocaleNames/en_SG/CI=Côte d’Ivoire LocaleNames/en_SG/GS=South Georgia & South Sandwich Islands LocaleNames/en_SG/HM=Heard & McDonald Islands LocaleNames/en_SG/KN=St. Kitts & Nevis LocaleNames/en_SG/PM=St. Pierre & Miquelon LocaleNames/en_SG/PS=Palestinian Territories LocaleNames/en_SG/SJ=Svalbard & Jan Mayen -LocaleNames/en_SG/ST=S\u00e3o Tom\u00e9 & Pr\u00edncipe +LocaleNames/en_SG/ST=São Tomé & Príncipe LocaleNames/en_SG/TC=Turks & Caicos Islands LocaleNames/en_SG/TL=Timor-Leste LocaleNames/en_SG/VC=St. Vincent & Grenadines @@ -2670,7 +2670,7 @@ FormatData/in/Eras/0=BCE FormatData/in/Eras/1=CE FormatData/in/NumberPatterns/0=#,##0.### -FormatData/in/NumberPatterns/1=\u00a4#,##0.00 +FormatData/in/NumberPatterns/1=¤#,##0.00 FormatData/in/NumberPatterns/2=#,##0% FormatData/in/NumberElements/0=, FormatData/in/NumberElements/1=. @@ -2680,8 +2680,8 @@ FormatData/in/NumberElements/5=# FormatData/in/NumberElements/6=- FormatData/in/NumberElements/7=E -FormatData/in/NumberElements/8=\u2030 -FormatData/in/NumberElements/9=\u221e +FormatData/in/NumberElements/8=‰ +FormatData/in/NumberElements/9=∞ FormatData/in/NumberElements/10=NaN FormatData/in/TimePatterns/0=HH:mm:ss z FormatData/in/TimePatterns/1=HH:mm:ss z @@ -2764,7 +2764,7 @@ LocaleNames/in/CF=Republik Afrika Tengah LocaleNames/in/CG=Kongo - Brazzaville LocaleNames/in/CH=Swiss -LocaleNames/in/CI=C\u00f4te d\u2019Ivoire +LocaleNames/in/CI=Côte d’Ivoire LocaleNames/in/CK=Kepulauan Cook LocaleNames/in/CL=Cile LocaleNames/in/CM=Kamerun @@ -2828,7 +2828,7 @@ LocaleNames/in/PR=Puerto Riko LocaleNames/in/PS=Wilayah Palestina LocaleNames/in/PT=Portugal -LocaleNames/in/RE=R\u00e9union +LocaleNames/in/RE=Réunion LocaleNames/in/RU=Rusia LocaleNames/in/SA=Arab Saudi LocaleNames/in/SB=Kepulauan Solomon @@ -2858,7 +2858,7 @@ CurrencyNames/in_ID/IDR/0=Rp #en_MT FormatData/en_MT/NumberPatterns/0=#,##0.### -FormatData/en_MT/NumberPatterns/1=\u00a4#,##0.00 +FormatData/en_MT/NumberPatterns/1=¤#,##0.00 FormatData/en_MT/NumberPatterns/2=#,##0% FormatData/en_MT/TimePatterns/0=HH:mm:ss z FormatData/en_MT/TimePatterns/1=HH:mm:ss z @@ -2870,7 +2870,7 @@ FormatData/en_MT/DatePatterns/3=dd/MM/yyyy FormatData/en_MT/DateTimePatterns/0={1} {0} CurrencyNames/en_MT/MTL=Lm -CurrencyNames/en_MT/EUR=\u20ac +CurrencyNames/en_MT/EUR=€ LocaleNames/en_MT/kj=Kuanyama LocaleNames/en_MT/kl=Kalaallisut LocaleNames/en_MT/ny=Nyanja @@ -2880,27 +2880,27 @@ LocaleNames/en_MT/rm=Romansh LocaleNames/en_MT/to=Tongan LocaleNames/en_MT/CC=Cocos (Keeling) Islands -LocaleNames/en_MT/CI=C\u00f4te d\u2019Ivoire +LocaleNames/en_MT/CI=Côte d’Ivoire LocaleNames/en_MT/GS=South Georgia & South Sandwich Islands LocaleNames/en_MT/HM=Heard & McDonald Islands LocaleNames/en_MT/KN=St. Kitts & Nevis LocaleNames/en_MT/PM=St. Pierre & Miquelon LocaleNames/en_MT/PS=Palestinian Territories LocaleNames/en_MT/SJ=Svalbard & Jan Mayen -LocaleNames/en_MT/ST=S\u00e3o Tom\u00e9 & Pr\u00edncipe +LocaleNames/en_MT/ST=São Tomé & Príncipe LocaleNames/en_MT/TC=Turks & Caicos Islands LocaleNames/en_MT/TL=Timor-Leste LocaleNames/en_MT/VC=St. Vincent & Grenadines LocaleNames/en_MT/WF=Wallis & Futuna #mt_MT FormatData/mt_MT/NumberPatterns/0=#,##0.### -FormatData/mt_MT/NumberPatterns/1=\u00a4#,##0.00 +FormatData/mt_MT/NumberPatterns/1=¤#,##0.00 FormatData/mt_MT/NumberPatterns/2=#,##0% CurrencyNames/mt_MT/MTL=Lm -CurrencyNames/mt_MT/EUR=\u20ac +CurrencyNames/mt_MT/EUR=€ #en_PH FormatData/en_PH/NumberPatterns/0=#,##0.### -FormatData/en_PH/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) +FormatData/en_PH/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) FormatData/en_PH/NumberPatterns/2=#,##0% FormatData/en_PH/TimePatterns/0=h:mm:ss a z FormatData/en_PH/TimePatterns/1=h:mm:ss a z @@ -2920,56 +2920,56 @@ LocaleNames/en_PH/rm=Romansh LocaleNames/en_PH/to=Tongan LocaleNames/en_PH/CC=Cocos (Keeling) Islands -LocaleNames/en_PH/CI=C\u00f4te d\u2019Ivoire +LocaleNames/en_PH/CI=Côte d’Ivoire LocaleNames/en_PH/GS=South Georgia & South Sandwich Islands LocaleNames/en_PH/HM=Heard & McDonald Islands LocaleNames/en_PH/KN=St. Kitts & Nevis LocaleNames/en_PH/PM=St. Pierre & Miquelon LocaleNames/en_PH/PS=Palestinian Territories LocaleNames/en_PH/SJ=Svalbard & Jan Mayen -LocaleNames/en_PH/ST=S\u00e3o Tom\u00e9 & Pr\u00edncipe +LocaleNames/en_PH/ST=São Tomé & Príncipe #el -FormatData/el/standalone.MonthNames/0=\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/1=\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/2=\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/3=\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/4=\u039c\u03ac\u03ca\u03bf\u03c2 -FormatData/el/standalone.MonthNames/5=\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/6=\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/7=\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2 -FormatData/el/standalone.MonthNames/8=\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/9=\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/10=\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/11=\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 +FormatData/el/standalone.MonthNames/0=Ιανουάριος +FormatData/el/standalone.MonthNames/1=Φεβρουάριος +FormatData/el/standalone.MonthNames/2=Μάρτιος +FormatData/el/standalone.MonthNames/3=Απρίλιος +FormatData/el/standalone.MonthNames/4=Μάϊος +FormatData/el/standalone.MonthNames/5=Ιούνιος +FormatData/el/standalone.MonthNames/6=Ιούλιος +FormatData/el/standalone.MonthNames/7=Αύγουστος +FormatData/el/standalone.MonthNames/8=Σεπτέμβριος +FormatData/el/standalone.MonthNames/9=Οκτώβριος +FormatData/el/standalone.MonthNames/10=Νοέμβριος +FormatData/el/standalone.MonthNames/11=Δεκέμβριος FormatData/el/standalone.MonthNames/12= -FormatData/el/MonthAbbreviations/0=\u0399\u03b1\u03bd -FormatData/el/MonthAbbreviations/1=\u03a6\u03b5\u03b2 -FormatData/el/MonthAbbreviations/2=\u039c\u03b1\u03c1 -FormatData/el/MonthAbbreviations/3=\u0391\u03c0\u03c1 -FormatData/el/MonthAbbreviations/4=\u039c\u03b1\u03ca -FormatData/el/MonthAbbreviations/5=\u0399\u03bf\u03c5\u03bd -FormatData/el/MonthAbbreviations/6=\u0399\u03bf\u03c5\u03bb -FormatData/el/MonthAbbreviations/7=\u0391\u03c5\u03b3 -FormatData/el/MonthAbbreviations/8=\u03a3\u03b5\u03c0 -FormatData/el/MonthAbbreviations/9=\u039f\u03ba\u03c4 -FormatData/el/MonthAbbreviations/10=\u039d\u03bf\u03b5 -FormatData/el/MonthAbbreviations/11=\u0394\u03b5\u03ba -FormatData/el/DayNames/0=\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae -FormatData/el/DayNames/1=\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1 -FormatData/el/DayNames/2=\u03a4\u03c1\u03af\u03c4\u03b7 -FormatData/el/DayNames/3=\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7 -FormatData/el/DayNames/4=\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7 -FormatData/el/DayNames/5=\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae -FormatData/el/DayNames/6=\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf -FormatData/el/DayAbbreviations/0=\u039a\u03c5\u03c1 -FormatData/el/DayAbbreviations/1=\u0394\u03b5\u03c5 -FormatData/el/DayAbbreviations/2=\u03a4\u03c1\u03b9 -FormatData/el/DayAbbreviations/3=\u03a4\u03b5\u03c4 -FormatData/el/DayAbbreviations/4=\u03a0\u03b5\u03bc -FormatData/el/DayAbbreviations/5=\u03a0\u03b1\u03c1 -FormatData/el/DayAbbreviations/6=\u03a3\u03b1\u03b2 -FormatData/el/AmPmMarkers/0=\u03c0\u03bc -FormatData/el/AmPmMarkers/1=\u03bc\u03bc +FormatData/el/MonthAbbreviations/0=Ιαν +FormatData/el/MonthAbbreviations/1=Φεβ +FormatData/el/MonthAbbreviations/2=Μαρ +FormatData/el/MonthAbbreviations/3=Απρ +FormatData/el/MonthAbbreviations/4=Μαϊ +FormatData/el/MonthAbbreviations/5=Ιουν +FormatData/el/MonthAbbreviations/6=Ιουλ +FormatData/el/MonthAbbreviations/7=Αυγ +FormatData/el/MonthAbbreviations/8=Σεπ +FormatData/el/MonthAbbreviations/9=Οκτ +FormatData/el/MonthAbbreviations/10=Νοε +FormatData/el/MonthAbbreviations/11=Δεκ +FormatData/el/DayNames/0=Κυριακή +FormatData/el/DayNames/1=Δευτέρα +FormatData/el/DayNames/2=Τρίτη +FormatData/el/DayNames/3=Τετάρτη +FormatData/el/DayNames/4=Πέμπτη +FormatData/el/DayNames/5=Παρασκευή +FormatData/el/DayNames/6=Σάββατο +FormatData/el/DayAbbreviations/0=Κυρ +FormatData/el/DayAbbreviations/1=Δευ +FormatData/el/DayAbbreviations/2=Τρι +FormatData/el/DayAbbreviations/3=Τετ +FormatData/el/DayAbbreviations/4=Πεμ +FormatData/el/DayAbbreviations/5=Παρ +FormatData/el/DayAbbreviations/6=Σαβ +FormatData/el/AmPmMarkers/0=πμ +FormatData/el/AmPmMarkers/1=μμ FormatData/el/NumberElements/0=, FormatData/el/NumberElements/1=. FormatData/el/NumberElements/2=; @@ -2978,9 +2978,9 @@ FormatData/el/NumberElements/5=# FormatData/el/NumberElements/6=- FormatData/el/NumberElements/7=E -FormatData/el/NumberElements/8=\u2030 -FormatData/el/NumberElements/9=\u221e -FormatData/el/NumberElements/10=\ufffd +FormatData/el/NumberElements/8=‰ +FormatData/el/NumberElements/9=∞ +FormatData/el/NumberElements/10=� FormatData/el/TimePatterns/0=h:mm:ss a z FormatData/el/TimePatterns/1=h:mm:ss a z FormatData/el/TimePatterns/2=h:mm:ss a @@ -2990,28 +2990,28 @@ FormatData/el/DatePatterns/2=d MMM yyyy FormatData/el/DatePatterns/3=d/M/yyyy FormatData/el/DateTimePatterns/0={1} {0} -LocaleNames/el/GR=\u0395\u03bb\u03bb\u03ac\u03b4\u03b1 +LocaleNames/el/GR=Ελλάδα #el_CY #bug 6483191 -FormatData/el_CY/MonthNames/0=\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/1=\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/2=\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/3=\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/4=\u039c\u03ac\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/5=\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/6=\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/7=\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2 -FormatData/el_CY/MonthNames/8=\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/9=\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/10=\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el_CY/MonthNames/11=\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 +FormatData/el_CY/MonthNames/0=Ιανουάριος +FormatData/el_CY/MonthNames/1=Φεβρουάριος +FormatData/el_CY/MonthNames/2=Μάρτιος +FormatData/el_CY/MonthNames/3=Απρίλιος +FormatData/el_CY/MonthNames/4=Μάιος +FormatData/el_CY/MonthNames/5=Ιούνιος +FormatData/el_CY/MonthNames/6=Ιούλιος +FormatData/el_CY/MonthNames/7=Αύγουστος +FormatData/el_CY/MonthNames/8=Σεπτέμβριος +FormatData/el_CY/MonthNames/9=Οκτώβριος +FormatData/el_CY/MonthNames/10=Νοέμβριος +FormatData/el_CY/MonthNames/11=Δεκέμβριος FormatData/el_CY/MonthNames/12= -FormatData/el_CY/AmPmMarkers/0=\u03a0\u039c -FormatData/el_CY/AmPmMarkers/1=\u039c\u039c -FormatData/el_CY/Eras/0=\u03c0.\u03a7. -FormatData/el_CY/Eras/1=\u03bc.\u03a7. +FormatData/el_CY/AmPmMarkers/0=ΠΜ +FormatData/el_CY/AmPmMarkers/1=ΜΜ +FormatData/el_CY/Eras/0=π.Χ. +FormatData/el_CY/Eras/1=μ.Χ. FormatData/el_CY/NumberPatterns/0=#,##0.### -FormatData/el_CY/NumberPatterns/1=\u00a4#,##0.00 +FormatData/el_CY/NumberPatterns/1=¤#,##0.00 FormatData/el_CY/NumberPatterns/2=#,##0% FormatData/el_CY/TimePatterns/0=h:mm:ss a z FormatData/el_CY/TimePatterns/1=h:mm:ss a z @@ -3022,311 +3022,311 @@ FormatData/el_CY/DatePatterns/2=dd MMM yyyy FormatData/el_CY/DatePatterns/3=dd/MM/yyyy FormatData/el_CY/DateTimePatterns/0={1} {0} -LocaleNames/el_CY/ar=\u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el_CY/be=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03b9\u03ba\u03ac -LocaleNames/el_CY/bg=\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03b9\u03ba\u03ac -LocaleNames/el_CY/bo=\u0398\u03b9\u03b2\u03b5\u03c4\u03b9\u03b1\u03bd\u03ac -LocaleNames/el_CY/bs=\u0392\u03bf\u03c3\u03bd\u03b9\u03b1\u03ba\u03ac -LocaleNames/el_CY/bn=\u0392\u03b5\u03b3\u03b3\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/ca=\u039a\u03b1\u03c4\u03b1\u03bb\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/co=\u039a\u03bf\u03c1\u03c3\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/cs=\u03a4\u03c3\u03b5\u03c7\u03b9\u03ba\u03ac -LocaleNames/el_CY/cy=\u039f\u03c5\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/da=\u0394\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/de=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/el=\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/en=\u0391\u03b3\u03b3\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/es=\u0399\u03c3\u03c0\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/et=\u0395\u03c3\u03b8\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/eu=\u0392\u03b1\u03c3\u03ba\u03b9\u03ba\u03ac -LocaleNames/el_CY/fa=\u03a0\u03b5\u03c1\u03c3\u03b9\u03ba\u03ac -LocaleNames/el_CY/fi=\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/fr=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/ga=\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/gd=\u03a3\u03ba\u03c9\u03c4\u03b9\u03ba\u03ac \u039a\u03b5\u03bb\u03c4\u03b9\u03ba\u03ac -LocaleNames/el_CY/he=\u0395\u03b2\u03c1\u03b1\u03ca\u03ba\u03ac -LocaleNames/el_CY/hi=\u03a7\u03af\u03bd\u03c4\u03b9 -LocaleNames/el_CY/hr=\u039a\u03c1\u03bf\u03b1\u03c4\u03b9\u03ba\u03ac -LocaleNames/el_CY/hu=\u039f\u03c5\u03b3\u03b3\u03c1\u03b9\u03ba\u03ac -LocaleNames/el_CY/hy=\u0391\u03c1\u03bc\u03b5\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/id=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03b9\u03b1\u03ba\u03ac -LocaleNames/el_CY/in=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03b9\u03b1\u03ba\u03ac -LocaleNames/el_CY/is=\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/it=\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/iw=\u0395\u03b2\u03c1\u03b1\u03ca\u03ba\u03ac -LocaleNames/el_CY/ja=\u0399\u03b1\u03c0\u03c9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/ji=\u0393\u03af\u03bd\u03c4\u03b9\u03c2 -LocaleNames/el_CY/ka=\u0393\u03b5\u03c9\u03c1\u03b3\u03b9\u03b1\u03bd\u03ac -LocaleNames/el_CY/ko=\u039a\u03bf\u03c1\u03b5\u03b1\u03c4\u03b9\u03ba\u03ac -LocaleNames/el_CY/la=\u039b\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/lt=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/lv=\u039b\u03b5\u03c4\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/mk=\u03a3\u03bb\u03b1\u03b2\u03bf\u03bc\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/mn=\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/mo=\u039c\u03bf\u03bb\u03b4\u03b1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el_CY/mt=\u039c\u03b1\u03bb\u03c4\u03b5\u03b6\u03b9\u03ba\u03ac -LocaleNames/el_CY/nl=\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/no=\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03b9\u03ba\u03ac -LocaleNames/el_CY/pl=\u03a0\u03bf\u03bb\u03c9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/pt=\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/ro=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/ru=\u03a1\u03c9\u03c3\u03b9\u03ba\u03ac -LocaleNames/el_CY/sk=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03b9\u03ba\u03ac -LocaleNames/el_CY/sl=\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/sq=\u0391\u03bb\u03b2\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/sr=\u03a3\u03b5\u03c1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el_CY/sv=\u03a3\u03bf\u03c5\u03b7\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/th=\u03a4\u03b1\u03ca\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/tr=\u03a4\u03bf\u03c5\u03c1\u03ba\u03b9\u03ba\u03ac -LocaleNames/el_CY/uk=\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/vi=\u0392\u03b9\u03b5\u03c4\u03bd\u03b1\u03bc\u03b9\u03ba\u03ac -LocaleNames/el_CY/yi=\u0393\u03af\u03bd\u03c4\u03b9\u03c2 -LocaleNames/el_CY/zh=\u039a\u03b9\u03bd\u03b5\u03b6\u03b9\u03ba\u03ac -LocaleNames/el_CY/AD=\u0391\u03bd\u03b4\u03cc\u03c1\u03b1 -LocaleNames/el_CY/AE=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b1 \u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac \u0395\u03bc\u03b9\u03c1\u03ac\u03c4\u03b1 -LocaleNames/el_CY/AF=\u0391\u03c6\u03b3\u03b1\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/AG=\u0391\u03bd\u03c4\u03af\u03b3\u03ba\u03bf\u03c5\u03b1 \u03ba\u03b1\u03b9 \u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03bf\u03cd\u03bd\u03c4\u03b1 -LocaleNames/el_CY/AI=\u0391\u03bd\u03b3\u03ba\u03bf\u03c5\u03af\u03bb\u03b1 -LocaleNames/el_CY/AL=\u0391\u03bb\u03b2\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/AM=\u0391\u03c1\u03bc\u03b5\u03bd\u03af\u03b1 -LocaleNames/el_CY/AN=\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ad\u03c2 \u0391\u03bd\u03c4\u03af\u03bb\u03bb\u03b5\u03c2 -LocaleNames/el_CY/AO=\u0391\u03b3\u03ba\u03cc\u03bb\u03b1 -LocaleNames/el_CY/AQ=\u0391\u03bd\u03c4\u03b1\u03c1\u03ba\u03c4\u03b9\u03ba\u03ae -LocaleNames/el_CY/AR=\u0391\u03c1\u03b3\u03b5\u03bd\u03c4\u03b9\u03bd\u03ae -LocaleNames/el_CY/AS=\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u03a3\u03b1\u03bc\u03cc\u03b1 -LocaleNames/el_CY/AT=\u0391\u03c5\u03c3\u03c4\u03c1\u03af\u03b1 -LocaleNames/el_CY/AU=\u0391\u03c5\u03c3\u03c4\u03c1\u03b1\u03bb\u03af\u03b1 -LocaleNames/el_CY/AW=\u0391\u03c1\u03bf\u03cd\u03bc\u03c0\u03b1 -LocaleNames/el_CY/AX=\u039d\u03ae\u03c3\u03bf\u03b9 \u038c\u03bb\u03b1\u03bd\u03c4 -LocaleNames/el_CY/AZ=\u0391\u03b6\u03b5\u03c1\u03bc\u03c0\u03b1\u03ca\u03c4\u03b6\u03ac\u03bd -LocaleNames/el_CY/BA=\u0392\u03bf\u03c3\u03bd\u03af\u03b1 - \u0395\u03c1\u03b6\u03b5\u03b3\u03bf\u03b2\u03af\u03bd\u03b7 -LocaleNames/el_CY/BB=\u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03ad\u03b9\u03bd\u03c4\u03bf\u03c2 -LocaleNames/el_CY/BD=\u039c\u03c0\u03b1\u03bd\u03b3\u03ba\u03bb\u03b1\u03bd\u03c4\u03ad\u03c2 -LocaleNames/el_CY/BE=\u0392\u03ad\u03bb\u03b3\u03b9\u03bf -LocaleNames/el_CY/BF=\u039c\u03c0\u03bf\u03c5\u03c1\u03ba\u03af\u03bd\u03b1 \u03a6\u03ac\u03c3\u03bf -LocaleNames/el_CY/BG=\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03af\u03b1 -LocaleNames/el_CY/BH=\u039c\u03c0\u03b1\u03c7\u03c1\u03ad\u03b9\u03bd -LocaleNames/el_CY/BI=\u039c\u03c0\u03bf\u03c5\u03c1\u03bf\u03cd\u03bd\u03c4\u03b9 -LocaleNames/el_CY/BJ=\u039c\u03c0\u03b5\u03bd\u03af\u03bd -LocaleNames/el_CY/BM=\u0392\u03b5\u03c1\u03bc\u03bf\u03cd\u03b4\u03b5\u03c2 -LocaleNames/el_CY/BN=\u039c\u03c0\u03c1\u03bf\u03c5\u03bd\u03ad\u03b9 -LocaleNames/el_CY/BO=\u0392\u03bf\u03bb\u03b9\u03b2\u03af\u03b1 -LocaleNames/el_CY/BR=\u0392\u03c1\u03b1\u03b6\u03b9\u03bb\u03af\u03b1 -LocaleNames/el_CY/BS=\u039c\u03c0\u03b1\u03c7\u03ac\u03bc\u03b5\u03c2 -LocaleNames/el_CY/BT=\u039c\u03c0\u03bf\u03c5\u03c4\u03ac\u03bd -LocaleNames/el_CY/BV=\u039d\u03ae\u03c3\u03bf\u03c2 \u039c\u03c0\u03bf\u03c5\u03b2\u03ad -LocaleNames/el_CY/BW=\u039c\u03c0\u03bf\u03c4\u03c3\u03bf\u03c5\u03ac\u03bd\u03b1 -LocaleNames/el_CY/BY=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03af\u03b1 -LocaleNames/el_CY/BZ=\u039c\u03c0\u03b5\u03bb\u03af\u03b6 -LocaleNames/el_CY/CA=\u039a\u03b1\u03bd\u03b1\u03b4\u03ac\u03c2 -LocaleNames/el_CY/CC=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03cc\u03ba\u03bf\u03c2 (\u039a\u03af\u03bb\u03b9\u03bd\u03b3\u03ba) -LocaleNames/el_CY/CD=\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039a\u03b9\u03bd\u03c3\u03ac\u03c3\u03b1 -LocaleNames/el_CY/CF=\u039a\u03b5\u03bd\u03c4\u03c1\u03bf\u03b1\u03c6\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1 -LocaleNames/el_CY/CG=\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039c\u03c0\u03c1\u03b1\u03b6\u03b1\u03b2\u03af\u03bb -LocaleNames/el_CY/CH=\u0395\u03bb\u03b2\u03b5\u03c4\u03af\u03b1 -LocaleNames/el_CY/CI=\u0391\u03ba\u03c4\u03ae \u0395\u03bb\u03b5\u03c6\u03b1\u03bd\u03c4\u03bf\u03c3\u03c4\u03bf\u03cd -LocaleNames/el_CY/CK=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03bf\u03c5\u03ba -LocaleNames/el_CY/CL=\u03a7\u03b9\u03bb\u03ae -LocaleNames/el_CY/CM=\u039a\u03b1\u03bc\u03b5\u03c1\u03bf\u03cd\u03bd -LocaleNames/el_CY/CN=\u039a\u03af\u03bd\u03b1 -LocaleNames/el_CY/CO=\u039a\u03bf\u03bb\u03bf\u03bc\u03b2\u03af\u03b1 -LocaleNames/el_CY/CR=\u039a\u03cc\u03c3\u03c4\u03b1 \u03a1\u03af\u03ba\u03b1 -LocaleNames/el_CY/CS=\u03a3\u03b5\u03c1\u03b2\u03af\u03b1 \u03ba\u03b1\u03b9 \u039c\u03b1\u03c5\u03c1\u03bf\u03b2\u03bf\u03cd\u03bd\u03b9\u03bf -LocaleNames/el_CY/CU=\u039a\u03bf\u03cd\u03b2\u03b1 -LocaleNames/el_CY/CV=\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf \u0391\u03ba\u03c1\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf -LocaleNames/el_CY/CX=\u039d\u03ae\u03c3\u03bf\u03c2 \u03c4\u03c9\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd -LocaleNames/el_CY/CY=\u039a\u03cd\u03c0\u03c1\u03bf\u03c2 -LocaleNames/el_CY/CZ=\u03a4\u03c3\u03b5\u03c7\u03af\u03b1 -LocaleNames/el_CY/DE=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/DJ=\u03a4\u03b6\u03b9\u03bc\u03c0\u03bf\u03c5\u03c4\u03af -LocaleNames/el_CY/DK=\u0394\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/DM=\u039d\u03c4\u03bf\u03bc\u03af\u03bd\u03b9\u03ba\u03b1 -LocaleNames/el_CY/DO=\u0394\u03bf\u03bc\u03b9\u03bd\u03b9\u03ba\u03b1\u03bd\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1 -LocaleNames/el_CY/DZ=\u0391\u03bb\u03b3\u03b5\u03c1\u03af\u03b1 -LocaleNames/el_CY/EC=\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03cc\u03c2 -LocaleNames/el_CY/EE=\u0395\u03c3\u03b8\u03bf\u03bd\u03af\u03b1 -LocaleNames/el_CY/EG=\u0391\u03af\u03b3\u03c5\u03c0\u03c4\u03bf\u03c2 -LocaleNames/el_CY/EH=\u0394\u03c5\u03c4\u03b9\u03ba\u03ae \u03a3\u03b1\u03c7\u03ac\u03c1\u03b1 -LocaleNames/el_CY/ER=\u0395\u03c1\u03c5\u03b8\u03c1\u03b1\u03af\u03b1 -LocaleNames/el_CY/ES=\u0399\u03c3\u03c0\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/ET=\u0391\u03b9\u03b8\u03b9\u03bf\u03c0\u03af\u03b1 -LocaleNames/el_CY/FI=\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/FJ=\u03a6\u03af\u03c4\u03b6\u03b9 -LocaleNames/el_CY/FK=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03cc\u03ba\u03bb\u03b1\u03bd\u03c4 -LocaleNames/el_CY/FM=\u039c\u03b9\u03ba\u03c1\u03bf\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el_CY/FO=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03b5\u03c1\u03cc\u03b5\u03c2 -LocaleNames/el_CY/FR=\u0393\u03b1\u03bb\u03bb\u03af\u03b1 -LocaleNames/el_CY/GA=\u0393\u03ba\u03b1\u03bc\u03c0\u03cc\u03bd -LocaleNames/el_CY/GB=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03bf \u0392\u03b1\u03c3\u03af\u03bb\u03b5\u03b9\u03bf -LocaleNames/el_CY/GD=\u0393\u03c1\u03b5\u03bd\u03ac\u03b4\u03b1 -LocaleNames/el_CY/GE=\u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 -LocaleNames/el_CY/GF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1 -LocaleNames/el_CY/GH=\u0393\u03ba\u03ac\u03bd\u03b1 -LocaleNames/el_CY/GI=\u0393\u03b9\u03b2\u03c1\u03b1\u03bb\u03c4\u03ac\u03c1 -LocaleNames/el_CY/GL=\u0393\u03c1\u03bf\u03b9\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/GM=\u0393\u03ba\u03ac\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el_CY/GN=\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el_CY/GP=\u0393\u03bf\u03c5\u03b1\u03b4\u03b5\u03bb\u03bf\u03cd\u03c0\u03b7 -LocaleNames/el_CY/GQ=\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el_CY/GS=\u039d\u03ae\u03c3\u03bf\u03b9 \u039d\u03cc\u03c4\u03b9\u03b1 \u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 \u03ba\u03b1\u03b9 \u039d\u03cc\u03c4\u03b9\u03b5\u03c2 \u03a3\u03ac\u03bd\u03c4\u03bf\u03c5\u03b9\u03c4\u03c2 -LocaleNames/el_CY/GT=\u0393\u03bf\u03c5\u03b1\u03c4\u03b5\u03bc\u03ac\u03bb\u03b1 -LocaleNames/el_CY/GU=\u0393\u03ba\u03bf\u03c5\u03ac\u03bc -LocaleNames/el_CY/GW=\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 \u039c\u03c0\u03b9\u03c3\u03ac\u03bf\u03c5 -LocaleNames/el_CY/GY=\u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1 -LocaleNames/el_CY/HK=\u03a7\u03bf\u03bd\u03b3\u03ba \u039a\u03bf\u03bd\u03b3\u03ba \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2 -LocaleNames/el_CY/HM=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a7\u03b5\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u039c\u03b1\u03ba\u03bd\u03c4\u03cc\u03bd\u03b1\u03bb\u03bd\u03c4 -LocaleNames/el_CY/HN=\u039f\u03bd\u03b4\u03bf\u03cd\u03c1\u03b1 -LocaleNames/el_CY/HR=\u039a\u03c1\u03bf\u03b1\u03c4\u03af\u03b1 -LocaleNames/el_CY/HT=\u0391\u03ca\u03c4\u03ae -LocaleNames/el_CY/HU=\u039f\u03c5\u03b3\u03b3\u03b1\u03c1\u03af\u03b1 -LocaleNames/el_CY/ID=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el_CY/IE=\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/IL=\u0399\u03c3\u03c1\u03b1\u03ae\u03bb -LocaleNames/el_CY/IN=\u0399\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/IO=\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 \u0399\u03bd\u03b4\u03b9\u03ba\u03bf\u03cd \u03a9\u03ba\u03b5\u03b1\u03bd\u03bf\u03cd -LocaleNames/el_CY/IQ=\u0399\u03c1\u03ac\u03ba -LocaleNames/el_CY/IR=\u0399\u03c1\u03ac\u03bd -LocaleNames/el_CY/IS=\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/IT=\u0399\u03c4\u03b1\u03bb\u03af\u03b1 -LocaleNames/el_CY/JM=\u03a4\u03b6\u03b1\u03bc\u03ac\u03b9\u03ba\u03b1 -LocaleNames/el_CY/JO=\u0399\u03bf\u03c1\u03b4\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/JP=\u0399\u03b1\u03c0\u03c9\u03bd\u03af\u03b1 -LocaleNames/el_CY/KE=\u039a\u03ad\u03bd\u03c5\u03b1 -LocaleNames/el_CY/KG=\u039a\u03b9\u03c1\u03b3\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/KH=\u039a\u03b1\u03bc\u03c0\u03cc\u03c4\u03b6\u03b7 -LocaleNames/el_CY/KI=\u039a\u03b9\u03c1\u03b9\u03bc\u03c0\u03ac\u03c4\u03b9 -LocaleNames/el_CY/KM=\u039a\u03bf\u03bc\u03cc\u03c1\u03b5\u03c2 -LocaleNames/el_CY/KN=\u03a3\u03b5\u03bd \u039a\u03b9\u03c4\u03c2 \u03ba\u03b1\u03b9 \u039d\u03ad\u03b2\u03b9\u03c2 -LocaleNames/el_CY/KP=\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1 -LocaleNames/el_CY/KR=\u039d\u03cc\u03c4\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1 -LocaleNames/el_CY/KW=\u039a\u03bf\u03c5\u03b2\u03ad\u03b9\u03c4 -LocaleNames/el_CY/KY=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03ad\u03b9\u03bc\u03b1\u03bd -LocaleNames/el_CY/KZ=\u039a\u03b1\u03b6\u03b1\u03ba\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/LA=\u039b\u03ac\u03bf\u03c2 -LocaleNames/el_CY/LB=\u039b\u03af\u03b2\u03b1\u03bd\u03bf\u03c2 -LocaleNames/el_CY/LC=\u0391\u03b3\u03af\u03b1 \u039b\u03bf\u03c5\u03ba\u03af\u03b1 -LocaleNames/el_CY/LI=\u039b\u03b9\u03c7\u03c4\u03b5\u03bd\u03c3\u03c4\u03ac\u03b9\u03bd -LocaleNames/el_CY/LK=\u03a3\u03c1\u03b9 \u039b\u03ac\u03bd\u03ba\u03b1 -LocaleNames/el_CY/LR=\u039b\u03b9\u03b2\u03b5\u03c1\u03af\u03b1 -LocaleNames/el_CY/LS=\u039b\u03b5\u03c3\u03cc\u03c4\u03bf -LocaleNames/el_CY/LT=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/LU=\u039b\u03bf\u03c5\u03be\u03b5\u03bc\u03b2\u03bf\u03cd\u03c1\u03b3\u03bf -LocaleNames/el_CY/LV=\u039b\u03b5\u03c4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el_CY/LY=\u039b\u03b9\u03b2\u03cd\u03b7 -LocaleNames/el_CY/MA=\u039c\u03b1\u03c1\u03cc\u03ba\u03bf -LocaleNames/el_CY/MC=\u039c\u03bf\u03bd\u03b1\u03ba\u03cc -LocaleNames/el_CY/MD=\u039c\u03bf\u03bb\u03b4\u03b1\u03b2\u03af\u03b1 -LocaleNames/el_CY/MG=\u039c\u03b1\u03b4\u03b1\u03b3\u03b1\u03c3\u03ba\u03ac\u03c1\u03b7 -LocaleNames/el_CY/MH=\u039d\u03ae\u03c3\u03bf\u03b9 \u039c\u03ac\u03c1\u03c3\u03b1\u03bb -LocaleNames/el_CY/MK=\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el_CY/ML=\u039c\u03ac\u03bb\u03b9 -LocaleNames/el_CY/MM=\u039c\u03b9\u03b1\u03bd\u03bc\u03ac\u03c1 (\u0392\u03b9\u03c1\u03bc\u03b1\u03bd\u03af\u03b1) -LocaleNames/el_CY/MN=\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03af\u03b1 -LocaleNames/el_CY/MO=\u039c\u03b1\u03ba\u03ac\u03bf \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2 -LocaleNames/el_CY/MP=\u039d\u03ae\u03c3\u03bf\u03b9 \u0392\u03cc\u03c1\u03b5\u03b9\u03b5\u03c2 \u039c\u03b1\u03c1\u03b9\u03ac\u03bd\u03b5\u03c2 -LocaleNames/el_CY/MQ=\u039c\u03b1\u03c1\u03c4\u03b9\u03bd\u03af\u03ba\u03b1 -LocaleNames/el_CY/MR=\u039c\u03b1\u03c5\u03c1\u03b9\u03c4\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/MS=\u039c\u03bf\u03bd\u03c3\u03b5\u03c1\u03ac\u03c4 -LocaleNames/el_CY/MT=\u039c\u03ac\u03bb\u03c4\u03b1 -LocaleNames/el_CY/MU=\u039c\u03b1\u03c5\u03c1\u03af\u03ba\u03b9\u03bf\u03c2 -LocaleNames/el_CY/MV=\u039c\u03b1\u03bb\u03b4\u03af\u03b2\u03b5\u03c2 -LocaleNames/el_CY/MW=\u039c\u03b1\u03bb\u03ac\u03bf\u03c5\u03b9 -LocaleNames/el_CY/MX=\u039c\u03b5\u03be\u03b9\u03ba\u03cc -LocaleNames/el_CY/MY=\u039c\u03b1\u03bb\u03b1\u03b9\u03c3\u03af\u03b1 -LocaleNames/el_CY/MZ=\u039c\u03bf\u03b6\u03b1\u03bc\u03b2\u03af\u03ba\u03b7 -LocaleNames/el_CY/NA=\u039d\u03b1\u03bc\u03af\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el_CY/NC=\u039d\u03ad\u03b1 \u039a\u03b1\u03bb\u03b7\u03b4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el_CY/NE=\u039d\u03af\u03b3\u03b7\u03c1\u03b1\u03c2 -LocaleNames/el_CY/NF=\u039d\u03ae\u03c3\u03bf\u03c2 \u039d\u03cc\u03c1\u03c6\u03bf\u03bb\u03ba -LocaleNames/el_CY/NG=\u039d\u03b9\u03b3\u03b7\u03c1\u03af\u03b1 -LocaleNames/el_CY/NI=\u039d\u03b9\u03ba\u03b1\u03c1\u03ac\u03b3\u03bf\u03c5\u03b1 -LocaleNames/el_CY/NL=\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/NO=\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03af\u03b1 -LocaleNames/el_CY/NP=\u039d\u03b5\u03c0\u03ac\u03bb -LocaleNames/el_CY/NR=\u039d\u03b1\u03bf\u03c5\u03c1\u03bf\u03cd -LocaleNames/el_CY/NU=\u039d\u03b9\u03bf\u03cd\u03b5 -LocaleNames/el_CY/NZ=\u039d\u03ad\u03b1 \u0396\u03b7\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/OM=\u039f\u03bc\u03ac\u03bd -LocaleNames/el_CY/PA=\u03a0\u03b1\u03bd\u03b1\u03bc\u03ac\u03c2 -LocaleNames/el_CY/PE=\u03a0\u03b5\u03c1\u03bf\u03cd -LocaleNames/el_CY/PF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u03a0\u03bf\u03bb\u03c5\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el_CY/PG=\u03a0\u03b1\u03c0\u03bf\u03cd\u03b1 \u039d\u03ad\u03b1 \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el_CY/PH=\u03a6\u03b9\u03bb\u03b9\u03c0\u03c0\u03af\u03bd\u03b5\u03c2 -LocaleNames/el_CY/PK=\u03a0\u03b1\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/PL=\u03a0\u03bf\u03bb\u03c9\u03bd\u03af\u03b1 -LocaleNames/el_CY/PM=\u03a3\u03b5\u03bd \u03a0\u03b9\u03b5\u03c1 \u03ba\u03b1\u03b9 \u039c\u03b9\u03ba\u03b5\u03bb\u03cc\u03bd -LocaleNames/el_CY/PN=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a0\u03af\u03c4\u03ba\u03b5\u03c1\u03bd -LocaleNames/el_CY/PR=\u03a0\u03bf\u03c5\u03ad\u03c1\u03c4\u03bf \u03a1\u03af\u03ba\u03bf -LocaleNames/el_CY/PS=\u03a0\u03b1\u03bb\u03b1\u03b9\u03c3\u03c4\u03b9\u03bd\u03b9\u03b1\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 -LocaleNames/el_CY/PT=\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03af\u03b1 -LocaleNames/el_CY/PW=\u03a0\u03b1\u03bb\u03ac\u03bf\u03c5 -LocaleNames/el_CY/PY=\u03a0\u03b1\u03c1\u03b1\u03b3\u03bf\u03c5\u03ac\u03b7 -LocaleNames/el_CY/QA=\u039a\u03b1\u03c4\u03ac\u03c1 -LocaleNames/el_CY/RE=\u03a1\u03b5\u03ca\u03bd\u03b9\u03cc\u03bd -LocaleNames/el_CY/RO=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/RU=\u03a1\u03c9\u03c3\u03af\u03b1 -LocaleNames/el_CY/RW=\u03a1\u03bf\u03c5\u03ac\u03bd\u03c4\u03b1 -LocaleNames/el_CY/SA=\u03a3\u03b1\u03bf\u03c5\u03b4\u03b9\u03ba\u03ae \u0391\u03c1\u03b1\u03b2\u03af\u03b1 -LocaleNames/el_CY/SB=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a3\u03bf\u03bb\u03bf\u03bc\u03ce\u03bd\u03c4\u03bf\u03c2 -LocaleNames/el_CY/SC=\u03a3\u03b5\u03cb\u03c7\u03ad\u03bb\u03bb\u03b5\u03c2 -LocaleNames/el_CY/SD=\u03a3\u03bf\u03c5\u03b4\u03ac\u03bd -LocaleNames/el_CY/SE=\u03a3\u03bf\u03c5\u03b7\u03b4\u03af\u03b1 -LocaleNames/el_CY/SG=\u03a3\u03b9\u03b3\u03ba\u03b1\u03c0\u03bf\u03cd\u03c1\u03b7 -LocaleNames/el_CY/SH=\u0391\u03b3\u03af\u03b1 \u0395\u03bb\u03ad\u03bd\u03b7 -LocaleNames/el_CY/SI=\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03af\u03b1 -LocaleNames/el_CY/SJ=\u03a3\u03b2\u03ac\u03bb\u03bc\u03c0\u03b1\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u0393\u03b9\u03b1\u03bd \u039c\u03b1\u03b3\u03b9\u03ad\u03bd -LocaleNames/el_CY/SK=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03af\u03b1 -LocaleNames/el_CY/SL=\u03a3\u03b9\u03ad\u03c1\u03b1 \u039b\u03b5\u03cc\u03bd\u03b5 -LocaleNames/el_CY/SM=\u0386\u03b3\u03b9\u03bf\u03c2 \u039c\u03b1\u03c1\u03af\u03bd\u03bf\u03c2 -LocaleNames/el_CY/SN=\u03a3\u03b5\u03bd\u03b5\u03b3\u03ac\u03bb\u03b7 -LocaleNames/el_CY/SO=\u03a3\u03bf\u03bc\u03b1\u03bb\u03af\u03b1 -LocaleNames/el_CY/SR=\u03a3\u03bf\u03c5\u03c1\u03b9\u03bd\u03ac\u03bc -LocaleNames/el_CY/ST=\u03a3\u03ac\u03bf \u03a4\u03bf\u03bc\u03ad \u03ba\u03b1\u03b9 \u03a0\u03c1\u03af\u03bd\u03c3\u03b9\u03c0\u03b5 -LocaleNames/el_CY/SV=\u0395\u03bb \u03a3\u03b1\u03bb\u03b2\u03b1\u03b4\u03cc\u03c1 -LocaleNames/el_CY/SY=\u03a3\u03c5\u03c1\u03af\u03b1 -LocaleNames/el_CY/TC=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a4\u03b5\u03c1\u03ba\u03c2 \u03ba\u03b1\u03b9 \u039a\u03ac\u03b9\u03ba\u03bf\u03c2 -LocaleNames/el_CY/TD=\u03a4\u03c3\u03b1\u03bd\u03c4 -LocaleNames/el_CY/TF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac \u039d\u03cc\u03c4\u03b9\u03b1 \u0395\u03b4\u03ac\u03c6\u03b7 -LocaleNames/el_CY/TG=\u03a4\u03cc\u03b3\u03ba\u03bf -LocaleNames/el_CY/TH=\u03a4\u03b1\u03ca\u03bb\u03ac\u03bd\u03b4\u03b7 -LocaleNames/el_CY/TJ=\u03a4\u03b1\u03c4\u03b6\u03b9\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/TK=\u03a4\u03bf\u03ba\u03b5\u03bb\u03ac\u03bf\u03c5 -LocaleNames/el_CY/TL=\u03a4\u03b9\u03bc\u03cc\u03c1-\u039b\u03ad\u03c3\u03c4\u03b5 -LocaleNames/el_CY/TM=\u03a4\u03bf\u03c5\u03c1\u03ba\u03bc\u03b5\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/TN=\u03a4\u03c5\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el_CY/TO=\u03a4\u03cc\u03bd\u03b3\u03ba\u03b1 -LocaleNames/el_CY/TR=\u03a4\u03bf\u03c5\u03c1\u03ba\u03af\u03b1 -LocaleNames/el_CY/TT=\u03a4\u03c1\u03b9\u03bd\u03b9\u03bd\u03c4\u03ac\u03bd\u03c4 \u03ba\u03b1\u03b9 \u03a4\u03bf\u03bc\u03c0\u03ac\u03b3\u03ba\u03bf -LocaleNames/el_CY/TV=\u03a4\u03bf\u03c5\u03b2\u03b1\u03bb\u03bf\u03cd -LocaleNames/el_CY/TW=\u03a4\u03b1\u03ca\u03b2\u03ac\u03bd -LocaleNames/el_CY/TZ=\u03a4\u03b1\u03bd\u03b6\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/UA=\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/UG=\u039f\u03c5\u03b3\u03ba\u03ac\u03bd\u03c4\u03b1 -LocaleNames/el_CY/UM=\u0391\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u039d\u03b7\u03c3\u03af\u03b4\u03b5\u03c2 \u0397\u03a0\u0391 -LocaleNames/el_CY/US=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a0\u03bf\u03bb\u03b9\u03c4\u03b5\u03af\u03b5\u03c2 -LocaleNames/el_CY/UY=\u039f\u03c5\u03c1\u03bf\u03c5\u03b3\u03bf\u03c5\u03ac\u03b7 -LocaleNames/el_CY/UZ=\u039f\u03c5\u03b6\u03bc\u03c0\u03b5\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/VA=\u0392\u03b1\u03c4\u03b9\u03ba\u03b1\u03bd\u03cc -LocaleNames/el_CY/VC=\u0386\u03b3\u03b9\u03bf\u03c2 \u0392\u03b9\u03ba\u03ad\u03bd\u03c4\u03b9\u03bf\u03c2 \u03ba\u03b1\u03b9 \u0393\u03c1\u03b5\u03bd\u03b1\u03b4\u03af\u03bd\u03b5\u03c2 -LocaleNames/el_CY/VE=\u0392\u03b5\u03bd\u03b5\u03b6\u03bf\u03c5\u03ad\u03bb\u03b1 -LocaleNames/el_CY/VG=\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9 -LocaleNames/el_CY/VI=\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9 -LocaleNames/el_CY/VN=\u0392\u03b9\u03b5\u03c4\u03bd\u03ac\u03bc -LocaleNames/el_CY/VU=\u0392\u03b1\u03bd\u03bf\u03c5\u03ac\u03c4\u03bf\u03c5 -LocaleNames/el_CY/WF=\u0393\u03bf\u03c5\u03ac\u03bb\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03a6\u03bf\u03c5\u03c4\u03bf\u03cd\u03bd\u03b1 -LocaleNames/el_CY/WS=\u03a3\u03b1\u03bc\u03cc\u03b1 -LocaleNames/el_CY/YE=\u03a5\u03b5\u03bc\u03ad\u03bd\u03b7 -LocaleNames/el_CY/YT=\u039c\u03b1\u03b3\u03b9\u03cc\u03c4 -LocaleNames/el_CY/ZA=\u039d\u03cc\u03c4\u03b9\u03b1 \u0391\u03c6\u03c1\u03b9\u03ba\u03ae -LocaleNames/el_CY/ZM=\u0396\u03ac\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el_CY/ZW=\u0396\u03b9\u03bc\u03c0\u03ac\u03bc\u03c0\u03bf\u03c5\u03b5 -CurrencyNames/el_CY/CYP=\u00a3 -CurrencyNames/el_CY/EUR=\u20ac +LocaleNames/el_CY/ar=Αραβικά +LocaleNames/el_CY/be=Λευκορωσικά +LocaleNames/el_CY/bg=Βουλγαρικά +LocaleNames/el_CY/bo=Θιβετιανά +LocaleNames/el_CY/bs=Βοσνιακά +LocaleNames/el_CY/bn=Βεγγαλικά +LocaleNames/el_CY/ca=Καταλανικά +LocaleNames/el_CY/co=Κορσικανικά +LocaleNames/el_CY/cs=Τσεχικά +LocaleNames/el_CY/cy=Ουαλικά +LocaleNames/el_CY/da=Δανικά +LocaleNames/el_CY/de=Γερμανικά +LocaleNames/el_CY/el=Ελληνικά +LocaleNames/el_CY/en=Αγγλικά +LocaleNames/el_CY/es=Ισπανικά +LocaleNames/el_CY/et=Εσθονικά +LocaleNames/el_CY/eu=Βασκικά +LocaleNames/el_CY/fa=Περσικά +LocaleNames/el_CY/fi=Φινλανδικά +LocaleNames/el_CY/fr=Γαλλικά +LocaleNames/el_CY/ga=Ιρλανδικά +LocaleNames/el_CY/gd=Σκωτικά Κελτικά +LocaleNames/el_CY/he=Εβραϊκά +LocaleNames/el_CY/hi=Χίντι +LocaleNames/el_CY/hr=Κροατικά +LocaleNames/el_CY/hu=Ουγγρικά +LocaleNames/el_CY/hy=Αρμενικά +LocaleNames/el_CY/id=Ινδονησιακά +LocaleNames/el_CY/in=Ινδονησιακά +LocaleNames/el_CY/is=Ισλανδικά +LocaleNames/el_CY/it=Ιταλικά +LocaleNames/el_CY/iw=Εβραϊκά +LocaleNames/el_CY/ja=Ιαπωνικά +LocaleNames/el_CY/ji=Γίντις +LocaleNames/el_CY/ka=Γεωργιανά +LocaleNames/el_CY/ko=Κορεατικά +LocaleNames/el_CY/la=Λατινικά +LocaleNames/el_CY/lt=Λιθουανικά +LocaleNames/el_CY/lv=Λετονικά +LocaleNames/el_CY/mk=Σλαβομακεδονικά +LocaleNames/el_CY/mn=Μογγολικά +LocaleNames/el_CY/mo=Μολδαβικά +LocaleNames/el_CY/mt=Μαλτεζικά +LocaleNames/el_CY/nl=Ολλανδικά +LocaleNames/el_CY/no=Νορβηγικά +LocaleNames/el_CY/pl=Πολωνικά +LocaleNames/el_CY/pt=Πορτογαλικά +LocaleNames/el_CY/ro=Ρουμανικά +LocaleNames/el_CY/ru=Ρωσικά +LocaleNames/el_CY/sk=Σλοβακικά +LocaleNames/el_CY/sl=Σλοβενικά +LocaleNames/el_CY/sq=Αλβανικά +LocaleNames/el_CY/sr=Σερβικά +LocaleNames/el_CY/sv=Σουηδικά +LocaleNames/el_CY/th=Ταϊλανδικά +LocaleNames/el_CY/tr=Τουρκικά +LocaleNames/el_CY/uk=Ουκρανικά +LocaleNames/el_CY/vi=Βιετναμικά +LocaleNames/el_CY/yi=Γίντις +LocaleNames/el_CY/zh=Κινεζικά +LocaleNames/el_CY/AD=Ανδόρα +LocaleNames/el_CY/AE=Ηνωμένα Αραβικά Εμιράτα +LocaleNames/el_CY/AF=Αφγανιστάν +LocaleNames/el_CY/AG=Αντίγκουα και Μπαρμπούντα +LocaleNames/el_CY/AI=Ανγκουίλα +LocaleNames/el_CY/AL=Αλβανία +LocaleNames/el_CY/AM=Αρμενία +LocaleNames/el_CY/AN=Ολλανδικές Αντίλλες +LocaleNames/el_CY/AO=Αγκόλα +LocaleNames/el_CY/AQ=Ανταρκτική +LocaleNames/el_CY/AR=Αργεντινή +LocaleNames/el_CY/AS=Αμερικανική Σαμόα +LocaleNames/el_CY/AT=Αυστρία +LocaleNames/el_CY/AU=Αυστραλία +LocaleNames/el_CY/AW=Αρούμπα +LocaleNames/el_CY/AX=Νήσοι Όλαντ +LocaleNames/el_CY/AZ=Αζερμπαϊτζάν +LocaleNames/el_CY/BA=Βοσνία - Ερζεγοβίνη +LocaleNames/el_CY/BB=Μπαρμπέιντος +LocaleNames/el_CY/BD=Μπανγκλαντές +LocaleNames/el_CY/BE=Βέλγιο +LocaleNames/el_CY/BF=Μπουρκίνα Φάσο +LocaleNames/el_CY/BG=Βουλγαρία +LocaleNames/el_CY/BH=Μπαχρέιν +LocaleNames/el_CY/BI=Μπουρούντι +LocaleNames/el_CY/BJ=Μπενίν +LocaleNames/el_CY/BM=Βερμούδες +LocaleNames/el_CY/BN=Μπρουνέι +LocaleNames/el_CY/BO=Βολιβία +LocaleNames/el_CY/BR=Βραζιλία +LocaleNames/el_CY/BS=Μπαχάμες +LocaleNames/el_CY/BT=Μπουτάν +LocaleNames/el_CY/BV=Νήσος Μπουβέ +LocaleNames/el_CY/BW=Μποτσουάνα +LocaleNames/el_CY/BY=Λευκορωσία +LocaleNames/el_CY/BZ=Μπελίζ +LocaleNames/el_CY/CA=Καναδάς +LocaleNames/el_CY/CC=Νήσοι Κόκος (Κίλινγκ) +LocaleNames/el_CY/CD=Κονγκό - Κινσάσα +LocaleNames/el_CY/CF=Κεντροαφρικανική Δημοκρατία +LocaleNames/el_CY/CG=Κονγκό - Μπραζαβίλ +LocaleNames/el_CY/CH=Ελβετία +LocaleNames/el_CY/CI=Ακτή Ελεφαντοστού +LocaleNames/el_CY/CK=Νήσοι Κουκ +LocaleNames/el_CY/CL=Χιλή +LocaleNames/el_CY/CM=Καμερούν +LocaleNames/el_CY/CN=Κίνα +LocaleNames/el_CY/CO=Κολομβία +LocaleNames/el_CY/CR=Κόστα Ρίκα +LocaleNames/el_CY/CS=Σερβία και Μαυροβούνιο +LocaleNames/el_CY/CU=Κούβα +LocaleNames/el_CY/CV=Πράσινο Ακρωτήριο +LocaleNames/el_CY/CX=Νήσος των Χριστουγέννων +LocaleNames/el_CY/CY=Κύπρος +LocaleNames/el_CY/CZ=Τσεχία +LocaleNames/el_CY/DE=Γερμανία +LocaleNames/el_CY/DJ=Τζιμπουτί +LocaleNames/el_CY/DK=Δανία +LocaleNames/el_CY/DM=Ντομίνικα +LocaleNames/el_CY/DO=Δομινικανή Δημοκρατία +LocaleNames/el_CY/DZ=Αλγερία +LocaleNames/el_CY/EC=Ισημερινός +LocaleNames/el_CY/EE=Εσθονία +LocaleNames/el_CY/EG=Αίγυπτος +LocaleNames/el_CY/EH=Δυτική Σαχάρα +LocaleNames/el_CY/ER=Ερυθραία +LocaleNames/el_CY/ES=Ισπανία +LocaleNames/el_CY/ET=Αιθιοπία +LocaleNames/el_CY/FI=Φινλανδία +LocaleNames/el_CY/FJ=Φίτζι +LocaleNames/el_CY/FK=Νήσοι Φόκλαντ +LocaleNames/el_CY/FM=Μικρονησία +LocaleNames/el_CY/FO=Νήσοι Φερόες +LocaleNames/el_CY/FR=Γαλλία +LocaleNames/el_CY/GA=Γκαμπόν +LocaleNames/el_CY/GB=Ηνωμένο Βασίλειο +LocaleNames/el_CY/GD=Γρενάδα +LocaleNames/el_CY/GE=Γεωργία +LocaleNames/el_CY/GF=Γαλλική Γουιάνα +LocaleNames/el_CY/GH=Γκάνα +LocaleNames/el_CY/GI=Γιβραλτάρ +LocaleNames/el_CY/GL=Γροιλανδία +LocaleNames/el_CY/GM=Γκάμπια +LocaleNames/el_CY/GN=Γουινέα +LocaleNames/el_CY/GP=Γουαδελούπη +LocaleNames/el_CY/GQ=Ισημερινή Γουινέα +LocaleNames/el_CY/GS=Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς +LocaleNames/el_CY/GT=Γουατεμάλα +LocaleNames/el_CY/GU=Γκουάμ +LocaleNames/el_CY/GW=Γουινέα Μπισάου +LocaleNames/el_CY/GY=Γουιάνα +LocaleNames/el_CY/HK=Χονγκ Κονγκ ΕΔΠ Κίνας +LocaleNames/el_CY/HM=Νήσοι Χερντ και Μακντόναλντ +LocaleNames/el_CY/HN=Ονδούρα +LocaleNames/el_CY/HR=Κροατία +LocaleNames/el_CY/HT=Αϊτή +LocaleNames/el_CY/HU=Ουγγαρία +LocaleNames/el_CY/ID=Ινδονησία +LocaleNames/el_CY/IE=Ιρλανδία +LocaleNames/el_CY/IL=Ισραήλ +LocaleNames/el_CY/IN=Ινδία +LocaleNames/el_CY/IO=Βρετανικά Εδάφη Ινδικού Ωκεανού +LocaleNames/el_CY/IQ=Ιράκ +LocaleNames/el_CY/IR=Ιράν +LocaleNames/el_CY/IS=Ισλανδία +LocaleNames/el_CY/IT=Ιταλία +LocaleNames/el_CY/JM=Τζαμάικα +LocaleNames/el_CY/JO=Ιορδανία +LocaleNames/el_CY/JP=Ιαπωνία +LocaleNames/el_CY/KE=Κένυα +LocaleNames/el_CY/KG=Κιργιστάν +LocaleNames/el_CY/KH=Καμπότζη +LocaleNames/el_CY/KI=Κιριμπάτι +LocaleNames/el_CY/KM=Κομόρες +LocaleNames/el_CY/KN=Σεν Κιτς και Νέβις +LocaleNames/el_CY/KP=Βόρεια Κορέα +LocaleNames/el_CY/KR=Νότια Κορέα +LocaleNames/el_CY/KW=Κουβέιτ +LocaleNames/el_CY/KY=Νήσοι Κέιμαν +LocaleNames/el_CY/KZ=Καζακστάν +LocaleNames/el_CY/LA=Λάος +LocaleNames/el_CY/LB=Λίβανος +LocaleNames/el_CY/LC=Αγία Λουκία +LocaleNames/el_CY/LI=Λιχτενστάιν +LocaleNames/el_CY/LK=Σρι Λάνκα +LocaleNames/el_CY/LR=Λιβερία +LocaleNames/el_CY/LS=Λεσότο +LocaleNames/el_CY/LT=Λιθουανία +LocaleNames/el_CY/LU=Λουξεμβούργο +LocaleNames/el_CY/LV=Λετονία +LocaleNames/el_CY/LY=Λιβύη +LocaleNames/el_CY/MA=Μαρόκο +LocaleNames/el_CY/MC=Μονακό +LocaleNames/el_CY/MD=Μολδαβία +LocaleNames/el_CY/MG=Μαδαγασκάρη +LocaleNames/el_CY/MH=Νήσοι Μάρσαλ +LocaleNames/el_CY/MK=Βόρεια Μακεδονία +LocaleNames/el_CY/ML=Μάλι +LocaleNames/el_CY/MM=Μιανμάρ (Βιρμανία) +LocaleNames/el_CY/MN=Μογγολία +LocaleNames/el_CY/MO=Μακάο ΕΔΠ Κίνας +LocaleNames/el_CY/MP=Νήσοι Βόρειες Μαριάνες +LocaleNames/el_CY/MQ=Μαρτινίκα +LocaleNames/el_CY/MR=Μαυριτανία +LocaleNames/el_CY/MS=Μονσεράτ +LocaleNames/el_CY/MT=Μάλτα +LocaleNames/el_CY/MU=Μαυρίκιος +LocaleNames/el_CY/MV=Μαλδίβες +LocaleNames/el_CY/MW=Μαλάουι +LocaleNames/el_CY/MX=Μεξικό +LocaleNames/el_CY/MY=Μαλαισία +LocaleNames/el_CY/MZ=Μοζαμβίκη +LocaleNames/el_CY/NA=Ναμίμπια +LocaleNames/el_CY/NC=Νέα Καληδονία +LocaleNames/el_CY/NE=Νίγηρας +LocaleNames/el_CY/NF=Νήσος Νόρφολκ +LocaleNames/el_CY/NG=Νιγηρία +LocaleNames/el_CY/NI=Νικαράγουα +LocaleNames/el_CY/NL=Ολλανδία +LocaleNames/el_CY/NO=Νορβηγία +LocaleNames/el_CY/NP=Νεπάλ +LocaleNames/el_CY/NR=Ναουρού +LocaleNames/el_CY/NU=Νιούε +LocaleNames/el_CY/NZ=Νέα Ζηλανδία +LocaleNames/el_CY/OM=Ομάν +LocaleNames/el_CY/PA=Παναμάς +LocaleNames/el_CY/PE=Περού +LocaleNames/el_CY/PF=Γαλλική Πολυνησία +LocaleNames/el_CY/PG=Παπούα Νέα Γουινέα +LocaleNames/el_CY/PH=Φιλιππίνες +LocaleNames/el_CY/PK=Πακιστάν +LocaleNames/el_CY/PL=Πολωνία +LocaleNames/el_CY/PM=Σεν Πιερ και Μικελόν +LocaleNames/el_CY/PN=Νήσοι Πίτκερν +LocaleNames/el_CY/PR=Πουέρτο Ρίκο +LocaleNames/el_CY/PS=Παλαιστινιακά Εδάφη +LocaleNames/el_CY/PT=Πορτογαλία +LocaleNames/el_CY/PW=Παλάου +LocaleNames/el_CY/PY=Παραγουάη +LocaleNames/el_CY/QA=Κατάρ +LocaleNames/el_CY/RE=Ρεϊνιόν +LocaleNames/el_CY/RO=Ρουμανία +LocaleNames/el_CY/RU=Ρωσία +LocaleNames/el_CY/RW=Ρουάντα +LocaleNames/el_CY/SA=Σαουδική Αραβία +LocaleNames/el_CY/SB=Νήσοι Σολομώντος +LocaleNames/el_CY/SC=Σεϋχέλλες +LocaleNames/el_CY/SD=Σουδάν +LocaleNames/el_CY/SE=Σουηδία +LocaleNames/el_CY/SG=Σιγκαπούρη +LocaleNames/el_CY/SH=Αγία Ελένη +LocaleNames/el_CY/SI=Σλοβενία +LocaleNames/el_CY/SJ=Σβάλμπαρντ και Γιαν Μαγιέν +LocaleNames/el_CY/SK=Σλοβακία +LocaleNames/el_CY/SL=Σιέρα Λεόνε +LocaleNames/el_CY/SM=Άγιος Μαρίνος +LocaleNames/el_CY/SN=Σενεγάλη +LocaleNames/el_CY/SO=Σομαλία +LocaleNames/el_CY/SR=Σουρινάμ +LocaleNames/el_CY/ST=Σάο Τομέ και Πρίνσιπε +LocaleNames/el_CY/SV=Ελ Σαλβαδόρ +LocaleNames/el_CY/SY=Συρία +LocaleNames/el_CY/TC=Νήσοι Τερκς και Κάικος +LocaleNames/el_CY/TD=Τσαντ +LocaleNames/el_CY/TF=Γαλλικά Νότια Εδάφη +LocaleNames/el_CY/TG=Τόγκο +LocaleNames/el_CY/TH=Ταϊλάνδη +LocaleNames/el_CY/TJ=Τατζικιστάν +LocaleNames/el_CY/TK=Τοκελάου +LocaleNames/el_CY/TL=Τιμόρ-Λέστε +LocaleNames/el_CY/TM=Τουρκμενιστάν +LocaleNames/el_CY/TN=Τυνησία +LocaleNames/el_CY/TO=Τόνγκα +LocaleNames/el_CY/TR=Τουρκία +LocaleNames/el_CY/TT=Τρινιντάντ και Τομπάγκο +LocaleNames/el_CY/TV=Τουβαλού +LocaleNames/el_CY/TW=Ταϊβάν +LocaleNames/el_CY/TZ=Τανζανία +LocaleNames/el_CY/UA=Ουκρανία +LocaleNames/el_CY/UG=Ουγκάντα +LocaleNames/el_CY/UM=Απομακρυσμένες Νησίδες ΗΠΑ +LocaleNames/el_CY/US=Ηνωμένες Πολιτείες +LocaleNames/el_CY/UY=Ουρουγουάη +LocaleNames/el_CY/UZ=Ουζμπεκιστάν +LocaleNames/el_CY/VA=Βατικανό +LocaleNames/el_CY/VC=Άγιος Βικέντιος και Γρεναδίνες +LocaleNames/el_CY/VE=Βενεζουέλα +LocaleNames/el_CY/VG=Βρετανικές Παρθένες Νήσοι +LocaleNames/el_CY/VI=Αμερικανικές Παρθένες Νήσοι +LocaleNames/el_CY/VN=Βιετνάμ +LocaleNames/el_CY/VU=Βανουάτου +LocaleNames/el_CY/WF=Γουάλις και Φουτούνα +LocaleNames/el_CY/WS=Σαμόα +LocaleNames/el_CY/YE=Υεμένη +LocaleNames/el_CY/YT=Μαγιότ +LocaleNames/el_CY/ZA=Νότια Αφρική +LocaleNames/el_CY/ZM=Ζάμπια +LocaleNames/el_CY/ZW=Ζιμπάμπουε +CurrencyNames/el_CY/CYP=£ +CurrencyNames/el_CY/EUR=€ CalendarData/el_CY/minimalDaysInFirstWeek=1 #ms_MY and ms FormatData/ms_MY/NumberPatterns/0=#,##0.### -FormatData/ms_MY/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) +FormatData/ms_MY/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) FormatData/ms_MY/NumberPatterns/2=#,##0% FormatData/ms_MY/TimePatterns/0=h:mm:ss a z FormatData/ms_MY/TimePatterns/1=h:mm:ss a z @@ -3346,7 +3346,7 @@ LocaleNames/ms/CC=Kepulauan Cocos (Keeling) LocaleNames/ms/CD=Congo - Kinshasa LocaleNames/ms/CF=Republik Afrika Tengah -LocaleNames/ms/CI=Cote d\u2019Ivoire +LocaleNames/ms/CI=Cote d’Ivoire LocaleNames/ms/CL=Chile LocaleNames/ms/CM=Cameroon LocaleNames/ms/CN=China @@ -3412,7 +3412,7 @@ FormatData/es_US/Eras/0=a.C. FormatData/es_US/Eras/1=d.C. FormatData/es_US/NumberPatterns/0=#,##0.### -FormatData/es_US/NumberPatterns/1=\u00a4#,##0.00;(\u00a4#,##0.00) +FormatData/es_US/NumberPatterns/1=¤#,##0.00;(¤#,##0.00) FormatData/es_US/NumberPatterns/2=#,##0% FormatData/es_US/TimePatterns/0=h:mm:ss a z FormatData/es_US/TimePatterns/1=h:mm:ss a z @@ -3424,57 +3424,57 @@ FormatData/es_US/DatePatterns/3=M/d/yy FormatData/es_US/DateTimePatterns/0={1} {0} LocaleNames/es_US/aa=afar -LocaleNames/es_US/ae=av\u00e9stico +LocaleNames/es_US/ae=avéstico LocaleNames/es_US/ak=akan -LocaleNames/es_US/an=aragon\u00e9s +LocaleNames/es_US/an=aragonés LocaleNames/es_US/av=avar LocaleNames/es_US/ay=aimara LocaleNames/es_US/az=azerbaiyano LocaleNames/es_US/ba=baskir LocaleNames/es_US/bh=bihari LocaleNames/es_US/bm=bambara -LocaleNames/es_US/bn=bengal\u00ed +LocaleNames/es_US/bn=bengalí LocaleNames/es_US/bs=bosnio LocaleNames/es_US/ce=checheno LocaleNames/es_US/ch=chamorro LocaleNames/es_US/cr=cree -LocaleNames/es_US/cu=eslavo eclesi\u00e1stico +LocaleNames/es_US/cu=eslavo eclesiástico LocaleNames/es_US/cv=chuvasio LocaleNames/es_US/dv=divehi -LocaleNames/es_US/ee=ew\u00e9 +LocaleNames/es_US/ee=ewé LocaleNames/es_US/eu=euskera LocaleNames/es_US/ff=fula -LocaleNames/es_US/fo=fero\u00e9s -LocaleNames/es_US/fy=fris\u00f3n occidental -LocaleNames/es_US/gu=gurayat\u00ed -LocaleNames/es_US/gv=man\u00e9s +LocaleNames/es_US/fo=feroés +LocaleNames/es_US/fy=frisón occidental +LocaleNames/es_US/gu=gurayatí +LocaleNames/es_US/gv=manés LocaleNames/es_US/hi=hindi LocaleNames/es_US/ho=hiri motu LocaleNames/es_US/ht=criollo haitiano LocaleNames/es_US/hz=herero LocaleNames/es_US/ie=interlingue LocaleNames/es_US/ig=igbo -LocaleNames/es_US/ii=yi de Sichu\u00e1n +LocaleNames/es_US/ii=yi de Sichuán LocaleNames/es_US/io=ido -LocaleNames/es_US/jv=javan\u00e9s +LocaleNames/es_US/jv=javanés LocaleNames/es_US/kg=kongo LocaleNames/es_US/ki=kikuyu LocaleNames/es_US/kj=kuanyama LocaleNames/es_US/kk=kazajo LocaleNames/es_US/km=jemer -LocaleNames/es_US/kn=canar\u00e9s +LocaleNames/es_US/kn=canarés LocaleNames/es_US/kr=kanuri LocaleNames/es_US/ks=cachemiro LocaleNames/es_US/ku=kurdo LocaleNames/es_US/kv=komi -LocaleNames/es_US/kw=c\u00f3rnico -LocaleNames/es_US/ky=kirgu\u00eds -LocaleNames/es_US/lb=luxemburgu\u00e9s +LocaleNames/es_US/kw=córnico +LocaleNames/es_US/ky=kirguís +LocaleNames/es_US/lb=luxemburgués LocaleNames/es_US/lg=ganda -LocaleNames/es_US/li=limburgu\u00e9s +LocaleNames/es_US/li=limburgués LocaleNames/es_US/lu=luba-katanga -LocaleNames/es_US/mh=marshal\u00e9s -LocaleNames/es_US/mr=marat\u00ed +LocaleNames/es_US/mh=marshalés +LocaleNames/es_US/mr=maratí LocaleNames/es_US/nb=noruego bokmal LocaleNames/es_US/nd=ndebele del norte LocaleNames/es_US/ng=ndonga @@ -3484,7 +3484,7 @@ LocaleNames/es_US/ny=nyanja LocaleNames/es_US/oc=occitano LocaleNames/es_US/oj=ojibwa -LocaleNames/es_US/os=os\u00e9tico +LocaleNames/es_US/os=osético LocaleNames/es_US/pi=pali LocaleNames/es_US/rm=romanche LocaleNames/es_US/rn=kirundi @@ -3496,7 +3496,7 @@ LocaleNames/es_US/sn=shona LocaleNames/es_US/ss=siswati LocaleNames/es_US/st=sesoto -LocaleNames/es_US/su=sundan\u00e9s +LocaleNames/es_US/su=sundanés LocaleNames/es_US/sw=swahili LocaleNames/es_US/tg=tayiko LocaleNames/es_US/tn=setchwana @@ -3507,7 +3507,7 @@ LocaleNames/es_US/uk=ucraniano LocaleNames/es_US/uz=uzbeko LocaleNames/es_US/ve=venda -LocaleNames/es_US/wa=val\u00f3n +LocaleNames/es_US/wa=valón LocaleNames/es_US/za=zhuang LocaleNames/es_US/AN=Antillas Neerlandesas LocaleNames/es_US/BA=Bosnia y Herzegovina @@ -3518,192 +3518,192 @@ LocaleNames/es_US/FK=Islas Malvinas LocaleNames/es_US/HK=RAE de Hong Kong (China) LocaleNames/es_US/KM=Comoras -LocaleNames/es_US/LC=Santa Luc\u00eda +LocaleNames/es_US/LC=Santa Lucía LocaleNames/es_US/LS=Lesoto LocaleNames/es_US/MO=RAE de Macao (China) LocaleNames/es_US/MW=Malaui -LocaleNames/es_US/NL=Pa\u00edses Bajos +LocaleNames/es_US/NL=Países Bajos LocaleNames/es_US/NU=Niue -LocaleNames/es_US/PG=Pap\u00faa Nueva Guinea -LocaleNames/es_US/PK=Pakist\u00e1n +LocaleNames/es_US/PG=Papúa Nueva Guinea +LocaleNames/es_US/PK=Pakistán LocaleNames/es_US/PN=Islas Pitcairn LocaleNames/es_US/PS=Territorios Palestinos LocaleNames/es_US/PW=Palaos -LocaleNames/es_US/RO=Ruman\u00eda -LocaleNames/es_US/SA=Arabia Saud\u00ed +LocaleNames/es_US/RO=Rumanía +LocaleNames/es_US/SA=Arabia Saudí LocaleNames/es_US/SH=Santa Elena LocaleNames/es_US/TF=Territorios Australes Franceses LocaleNames/es_US/TK=Tokelau LocaleNames/es_US/TT=Trinidad y Tobago -LocaleNames/es_US/VI=Islas V\u00edrgenes de EE. UU. +LocaleNames/es_US/VI=Islas Vírgenes de EE. UU. CurrencyNames/es_US/USD=US$ CalendarData/es_US/firstDayOfWeek=1 #bug 4400849 LocaleNames/pt/aa=afar -LocaleNames/pt/ab=abc\u00e1zio -LocaleNames/pt/ae=av\u00e9stico -LocaleNames/pt/af=afric\u00e2ner -LocaleNames/pt/am=am\u00e1rico -LocaleNames/pt/an=aragon\u00eas -LocaleNames/pt/ar=\u00e1rabe -LocaleNames/pt/as=assam\u00eas -LocaleNames/pt/av=av\u00e1rico -LocaleNames/pt/ay=aimar\u00e1 +LocaleNames/pt/ab=abcázio +LocaleNames/pt/ae=avéstico +LocaleNames/pt/af=africâner +LocaleNames/pt/am=amárico +LocaleNames/pt/an=aragonês +LocaleNames/pt/ar=árabe +LocaleNames/pt/as=assamês +LocaleNames/pt/av=avárico +LocaleNames/pt/ay=aimará LocaleNames/pt/az=azerbaijano LocaleNames/pt/ba=bashkir LocaleNames/pt/be=bielorrusso -LocaleNames/pt/bg=b\u00falgaro +LocaleNames/pt/bg=búlgaro LocaleNames/pt/bh=biari -LocaleNames/pt/bi=bislam\u00e1 +LocaleNames/pt/bi=bislamá LocaleNames/pt/bm=bambara LocaleNames/pt/bn=bengali LocaleNames/pt/bo=tibetano -LocaleNames/pt/br=bret\u00e3o -LocaleNames/pt/bs=b\u00f3snio -LocaleNames/pt/ca=catal\u00e3o +LocaleNames/pt/br=bretão +LocaleNames/pt/bs=bósnio +LocaleNames/pt/ca=catalão LocaleNames/pt/ce=checheno LocaleNames/pt/ch=chamorro LocaleNames/pt/co=corso LocaleNames/pt/cr=cree LocaleNames/pt/cs=tcheco -LocaleNames/pt/cu=eslavo eclesi\u00e1stico +LocaleNames/pt/cu=eslavo eclesiástico LocaleNames/pt/cv=tchuvache -LocaleNames/pt/cy=gal\u00eas -LocaleNames/pt/da=dinamarqu\u00eas -LocaleNames/pt/de=alem\u00e3o +LocaleNames/pt/cy=galês +LocaleNames/pt/da=dinamarquês +LocaleNames/pt/de=alemão LocaleNames/pt/dv=divehi LocaleNames/pt/dz=dzonga LocaleNames/pt/ee=ewe LocaleNames/pt/el=grego -LocaleNames/pt/en=ingl\u00eas +LocaleNames/pt/en=inglês LocaleNames/pt/eo=esperanto LocaleNames/pt/es=espanhol LocaleNames/pt/et=estoniano LocaleNames/pt/eu=basco LocaleNames/pt/fa=persa LocaleNames/pt/ff=fula -LocaleNames/pt/fi=finland\u00eas +LocaleNames/pt/fi=finlandês LocaleNames/pt/fj=fijiano -LocaleNames/pt/fo=fero\u00eas -LocaleNames/pt/fr=franc\u00eas -LocaleNames/pt/fy=fr\u00edsio ocidental -LocaleNames/pt/ga=irland\u00eas -LocaleNames/pt/gd=ga\u00e9lico escoc\u00eas +LocaleNames/pt/fo=feroês +LocaleNames/pt/fr=francês +LocaleNames/pt/fy=frísio ocidental +LocaleNames/pt/ga=irlandês +LocaleNames/pt/gd=gaélico escocês LocaleNames/pt/gl=galego LocaleNames/pt/gn=guarani LocaleNames/pt/gu=guzerate LocaleNames/pt/gv=manx -LocaleNames/pt/ha=hau\u00e7\u00e1 +LocaleNames/pt/ha=hauçá LocaleNames/pt/he=hebraico -LocaleNames/pt/hi=h\u00edndi +LocaleNames/pt/hi=híndi LocaleNames/pt/ho=hiri motu LocaleNames/pt/hr=croata LocaleNames/pt/ht=haitiano -LocaleNames/pt/hu=h\u00fangaro -LocaleNames/pt/hy=arm\u00eanio +LocaleNames/pt/hu=húngaro +LocaleNames/pt/hy=armênio LocaleNames/pt/hz=herero -LocaleNames/pt/ia=interl\u00edngua -LocaleNames/pt/id=indon\u00e9sio +LocaleNames/pt/ia=interlíngua +LocaleNames/pt/id=indonésio LocaleNames/pt/ie=interlingue LocaleNames/pt/ig=igbo LocaleNames/pt/ii=sichuan yi -LocaleNames/pt/in=indon\u00e9sio +LocaleNames/pt/in=indonésio LocaleNames/pt/io=ido -LocaleNames/pt/is=island\u00eas +LocaleNames/pt/is=islandês LocaleNames/pt/it=italiano LocaleNames/pt/iu=inuktitut LocaleNames/pt/iw=hebraico -LocaleNames/pt/ja=japon\u00eas -LocaleNames/pt/ji=i\u00eddiche +LocaleNames/pt/ja=japonês +LocaleNames/pt/ji=iídiche LocaleNames/pt/ka=georgiano -LocaleNames/pt/kg=congol\u00eas +LocaleNames/pt/kg=congolês LocaleNames/pt/ki=quicuio LocaleNames/pt/kj=cuanhama LocaleNames/pt/kk=cazaque -LocaleNames/pt/kl=groenland\u00eas +LocaleNames/pt/kl=groenlandês LocaleNames/pt/km=khmer LocaleNames/pt/kn=canarim LocaleNames/pt/ko=coreano -LocaleNames/pt/kr=can\u00fari +LocaleNames/pt/kr=canúri LocaleNames/pt/ks=caxemira LocaleNames/pt/ku=curdo LocaleNames/pt/kv=komi -LocaleNames/pt/kw=c\u00f3rnico +LocaleNames/pt/kw=córnico LocaleNames/pt/ky=quirguiz LocaleNames/pt/la=latim -LocaleNames/pt/lb=luxemburgu\u00eas +LocaleNames/pt/lb=luxemburguês LocaleNames/pt/lg=luganda -LocaleNames/pt/li=limburgu\u00eas +LocaleNames/pt/li=limburguês LocaleNames/pt/ln=lingala LocaleNames/pt/lo=laosiano LocaleNames/pt/lt=lituano LocaleNames/pt/lu=luba-catanga -LocaleNames/pt/lv=let\u00e3o +LocaleNames/pt/lv=letão LocaleNames/pt/mg=malgaxe -LocaleNames/pt/mh=marshal\u00eas +LocaleNames/pt/mh=marshalês LocaleNames/pt/mi=maori -LocaleNames/pt/mk=maced\u00f4nio +LocaleNames/pt/mk=macedônio LocaleNames/pt/ml=malaiala LocaleNames/pt/mn=mongol -LocaleNames/pt/mo=mold\u00e1vio +LocaleNames/pt/mo=moldávio LocaleNames/pt/mr=marati LocaleNames/pt/ms=malaio -LocaleNames/pt/mt=malt\u00eas -LocaleNames/pt/my=birman\u00eas +LocaleNames/pt/mt=maltês +LocaleNames/pt/my=birmanês LocaleNames/pt/na=nauruano -LocaleNames/pt/nb=bokm\u00e5l noruegu\u00eas +LocaleNames/pt/nb=bokmål norueguês LocaleNames/pt/nd=ndebele do norte -LocaleNames/pt/ne=nepal\u00eas +LocaleNames/pt/ne=nepalês LocaleNames/pt/ng=dongo -LocaleNames/pt/nl=holand\u00eas -LocaleNames/pt/nn=nynorsk noruegu\u00eas -LocaleNames/pt/no=noruegu\u00eas +LocaleNames/pt/nl=holandês +LocaleNames/pt/nn=nynorsk norueguês +LocaleNames/pt/no=norueguês LocaleNames/pt/nr=ndebele do sul LocaleNames/pt/nv=navajo LocaleNames/pt/ny=nianja -LocaleNames/pt/oc=occit\u00e2nico +LocaleNames/pt/oc=occitânico LocaleNames/pt/oj=ojibwa LocaleNames/pt/om=oromo -LocaleNames/pt/or=ori\u00e1 +LocaleNames/pt/or=oriá LocaleNames/pt/os=osseto LocaleNames/pt/pa=panjabi -LocaleNames/pt/pi=p\u00e1li -LocaleNames/pt/pl=polon\u00eas +LocaleNames/pt/pi=páli +LocaleNames/pt/pl=polonês LocaleNames/pt/ps=pashto -LocaleNames/pt/pt=portugu\u00eas -LocaleNames/pt/qu=qu\u00edchua +LocaleNames/pt/pt=português +LocaleNames/pt/qu=quíchua LocaleNames/pt/rm=romanche LocaleNames/pt/rn=rundi LocaleNames/pt/ro=romeno LocaleNames/pt/ru=russo LocaleNames/pt/rw=quiniaruanda -LocaleNames/pt/sa=s\u00e2nscrito +LocaleNames/pt/sa=sânscrito LocaleNames/pt/sc=sardo LocaleNames/pt/sd=sindi LocaleNames/pt/se=sami setentrional LocaleNames/pt/sg=sango -LocaleNames/pt/si=cingal\u00eas +LocaleNames/pt/si=cingalês LocaleNames/pt/sk=eslovaco LocaleNames/pt/sl=esloveno LocaleNames/pt/so=somali -LocaleNames/pt/sq=alban\u00eas -LocaleNames/pt/sr=s\u00e9rvio -LocaleNames/pt/ss=su\u00e1zi +LocaleNames/pt/sq=albanês +LocaleNames/pt/sr=sérvio +LocaleNames/pt/ss=suázi LocaleNames/pt/st=soto do sul -LocaleNames/pt/su=sundan\u00eas +LocaleNames/pt/su=sundanês LocaleNames/pt/sv=sueco -LocaleNames/pt/sw=sua\u00edli -LocaleNames/pt/ta=t\u00e2mil -LocaleNames/pt/te=t\u00e9lugo +LocaleNames/pt/sw=suaíli +LocaleNames/pt/ta=tâmil +LocaleNames/pt/te=télugo LocaleNames/pt/tg=tadjique -LocaleNames/pt/th=tailand\u00eas -LocaleNames/pt/ti=tigr\u00ednia +LocaleNames/pt/th=tailandês +LocaleNames/pt/ti=tigrínia LocaleNames/pt/tk=turcomeno LocaleNames/pt/tn=tswana -LocaleNames/pt/to=tongan\u00eas +LocaleNames/pt/to=tonganês LocaleNames/pt/tr=turco LocaleNames/pt/ts=tsonga -LocaleNames/pt/tt=t\u00e1rtaro +LocaleNames/pt/tt=tártaro LocaleNames/pt/tw=twi LocaleNames/pt/ty=taitiano LocaleNames/pt/ug=uigur @@ -3713,632 +3713,632 @@ LocaleNames/pt/ve=venda LocaleNames/pt/vi=vietnamita LocaleNames/pt/vo=volapuque -LocaleNames/pt/wa=val\u00e3o +LocaleNames/pt/wa=valão LocaleNames/pt/wo=uolofe LocaleNames/pt/xh=xhosa -LocaleNames/pt/yi=i\u00eddiche -LocaleNames/pt/yo=iorub\u00e1 +LocaleNames/pt/yi=iídiche +LocaleNames/pt/yo=iorubá LocaleNames/pt/za=zhuang -LocaleNames/pt/zh=chin\u00eas +LocaleNames/pt/zh=chinês LocaleNames/pt/zu=zulu -LocaleNames/pt/AE=Emirados \u00c1rabes Unidos -LocaleNames/pt/AF=Afeganist\u00e3o -LocaleNames/pt/AG=Ant\u00edgua e Barbuda -LocaleNames/pt/AL=Alb\u00e2nia -LocaleNames/pt/AM=Arm\u00eania +LocaleNames/pt/AE=Emirados Árabes Unidos +LocaleNames/pt/AF=Afeganistão +LocaleNames/pt/AG=Antígua e Barbuda +LocaleNames/pt/AL=Albânia +LocaleNames/pt/AM=Armênia LocaleNames/pt/AN=Antilhas Holandesas -LocaleNames/pt/AQ=Ant\u00e1rtida +LocaleNames/pt/AQ=Antártida LocaleNames/pt/AS=Samoa Americana -LocaleNames/pt/AT=\u00c1ustria -LocaleNames/pt/AU=Austr\u00e1lia -LocaleNames/pt/AZ=Azerbaij\u00e3o -LocaleNames/pt/BA=B\u00f3snia e Herzegovina -LocaleNames/pt/BE=B\u00e9lgica +LocaleNames/pt/AT=Áustria +LocaleNames/pt/AU=Austrália +LocaleNames/pt/AZ=Azerbaijão +LocaleNames/pt/BA=Bósnia e Herzegovina +LocaleNames/pt/BE=Bélgica LocaleNames/pt/BF=Burquina Faso -LocaleNames/pt/BG=Bulg\u00e1ria +LocaleNames/pt/BG=Bulgária LocaleNames/pt/BH=Barein LocaleNames/pt/BM=Bermudas -LocaleNames/pt/BO=Bol\u00edvia +LocaleNames/pt/BO=Bolívia LocaleNames/pt/BR=Brasil -LocaleNames/pt/BT=But\u00e3o +LocaleNames/pt/BT=Butão LocaleNames/pt/BV=Ilha Bouvet LocaleNames/pt/BW=Botsuana -LocaleNames/pt/CA=Canad\u00e1 +LocaleNames/pt/CA=Canadá LocaleNames/pt/CC=Ilhas Cocos (Keeling) LocaleNames/pt/CD=Congo - Kinshasa -LocaleNames/pt/CF=Rep\u00fablica Centro-Africana -LocaleNames/pt/CH=Su\u00ed\u00e7a +LocaleNames/pt/CF=República Centro-Africana +LocaleNames/pt/CH=Suíça LocaleNames/pt/CI=Costa do Marfim LocaleNames/pt/CK=Ilhas Cook -LocaleNames/pt/CM=Camar\u00f5es -LocaleNames/pt/CO=Col\u00f4mbia +LocaleNames/pt/CM=Camarões +LocaleNames/pt/CO=Colômbia LocaleNames/pt/CV=Cabo Verde LocaleNames/pt/CX=Ilha Christmas LocaleNames/pt/CY=Chipre -LocaleNames/pt/CZ=Tch\u00e9quia +LocaleNames/pt/CZ=Tchéquia LocaleNames/pt/DE=Alemanha LocaleNames/pt/DJ=Djibuti LocaleNames/pt/DK=Dinamarca -LocaleNames/pt/DO=Rep\u00fablica Dominicana -LocaleNames/pt/DZ=Arg\u00e9lia +LocaleNames/pt/DO=República Dominicana +LocaleNames/pt/DZ=Argélia LocaleNames/pt/EC=Equador -LocaleNames/pt/EE=Est\u00f4nia +LocaleNames/pt/EE=Estônia LocaleNames/pt/EG=Egito LocaleNames/pt/EH=Saara Ocidental LocaleNames/pt/ER=Eritreia LocaleNames/pt/ES=Espanha -LocaleNames/pt/ET=Eti\u00f3pia -LocaleNames/pt/FI=Finl\u00e2ndia +LocaleNames/pt/ET=Etiópia +LocaleNames/pt/FI=Finlândia LocaleNames/pt/FK=Ilhas Malvinas -LocaleNames/pt/FM=Micron\u00e9sia -LocaleNames/pt/FO=Ilhas Faro\u00e9 -LocaleNames/pt/FR=Fran\u00e7a -LocaleNames/pt/GA=Gab\u00e3o +LocaleNames/pt/FM=Micronésia +LocaleNames/pt/FO=Ilhas Faroé +LocaleNames/pt/FR=França +LocaleNames/pt/GA=Gabão LocaleNames/pt/GB=Reino Unido LocaleNames/pt/GD=Granada -LocaleNames/pt/GE=Ge\u00f3rgia +LocaleNames/pt/GE=Geórgia LocaleNames/pt/GF=Guiana Francesa LocaleNames/pt/GH=Gana -LocaleNames/pt/GL=Groenl\u00e2ndia -LocaleNames/pt/GM=G\u00e2mbia -LocaleNames/pt/GN=Guin\u00e9 +LocaleNames/pt/GL=Groenlândia +LocaleNames/pt/GM=Gâmbia +LocaleNames/pt/GN=Guiné LocaleNames/pt/GP=Guadalupe -LocaleNames/pt/GQ=Guin\u00e9 Equatorial -LocaleNames/pt/GR=Gr\u00e9cia -LocaleNames/pt/GS=Ilhas Ge\u00f3rgia do Sul e Sandwich do Sul -LocaleNames/pt/GW=Guin\u00e9-Bissau +LocaleNames/pt/GQ=Guiné Equatorial +LocaleNames/pt/GR=Grécia +LocaleNames/pt/GS=Ilhas Geórgia do Sul e Sandwich do Sul +LocaleNames/pt/GW=Guiné-Bissau LocaleNames/pt/GY=Guiana LocaleNames/pt/HK=Hong Kong, RAE da China LocaleNames/pt/HM=Ilhas Heard e McDonald -LocaleNames/pt/HR=Cro\u00e1cia +LocaleNames/pt/HR=Croácia LocaleNames/pt/HU=Hungria -LocaleNames/pt/ID=Indon\u00e9sia +LocaleNames/pt/ID=Indonésia LocaleNames/pt/IE=Irlanda -LocaleNames/pt/IN=\u00cdndia -LocaleNames/pt/IO=Territ\u00f3rio Brit\u00e2nico do Oceano \u00cdndico +LocaleNames/pt/IN=Índia +LocaleNames/pt/IO=Território Britânico do Oceano Índico LocaleNames/pt/IQ=Iraque -LocaleNames/pt/IR=Ir\u00e3 -LocaleNames/pt/IS=Isl\u00e2ndia -LocaleNames/pt/IT=It\u00e1lia -LocaleNames/pt/JO=Jord\u00e2nia -LocaleNames/pt/JP=Jap\u00e3o -LocaleNames/pt/KE=Qu\u00eania -LocaleNames/pt/KG=Quirguist\u00e3o +LocaleNames/pt/IR=Irã +LocaleNames/pt/IS=Islândia +LocaleNames/pt/IT=Itália +LocaleNames/pt/JO=Jordânia +LocaleNames/pt/JP=Japão +LocaleNames/pt/KE=Quênia +LocaleNames/pt/KG=Quirguistão LocaleNames/pt/KH=Camboja LocaleNames/pt/KI=Quiribati LocaleNames/pt/KM=Comores -LocaleNames/pt/KN=S\u00e3o Crist\u00f3v\u00e3o e N\u00e9vis +LocaleNames/pt/KN=São Cristóvão e Névis LocaleNames/pt/KP=Coreia do Norte LocaleNames/pt/KR=Coreia do Sul LocaleNames/pt/KY=Ilhas Cayman -LocaleNames/pt/KZ=Cazaquist\u00e3o +LocaleNames/pt/KZ=Cazaquistão LocaleNames/pt/LA=Laos -LocaleNames/pt/LB=L\u00edbano -LocaleNames/pt/LC=Santa L\u00facia -LocaleNames/pt/LR=Lib\u00e9ria +LocaleNames/pt/LB=Líbano +LocaleNames/pt/LC=Santa Lúcia +LocaleNames/pt/LR=Libéria LocaleNames/pt/LS=Lesoto -LocaleNames/pt/LT=Litu\u00e2nia +LocaleNames/pt/LT=Lituânia LocaleNames/pt/LU=Luxemburgo -LocaleNames/pt/LV=Let\u00f4nia -LocaleNames/pt/LY=L\u00edbia +LocaleNames/pt/LV=Letônia +LocaleNames/pt/LY=Líbia LocaleNames/pt/MA=Marrocos -LocaleNames/pt/MC=M\u00f4naco -LocaleNames/pt/MD=Mold\u00e1via +LocaleNames/pt/MC=Mônaco +LocaleNames/pt/MD=Moldávia LocaleNames/pt/MH=Ilhas Marshall -LocaleNames/pt/MK=Maced\u00f4nia do Norte -LocaleNames/pt/MM=Mianmar (Birm\u00e2nia) -LocaleNames/pt/MN=Mong\u00f3lia +LocaleNames/pt/MK=Macedônia do Norte +LocaleNames/pt/MM=Mianmar (Birmânia) +LocaleNames/pt/MN=Mongólia LocaleNames/pt/MO=Macau, RAE da China LocaleNames/pt/MP=Ilhas Marianas do Norte LocaleNames/pt/MQ=Martinica -LocaleNames/pt/MR=Maurit\u00e2nia -LocaleNames/pt/MU=Maur\u00edcio +LocaleNames/pt/MR=Mauritânia +LocaleNames/pt/MU=Maurício LocaleNames/pt/MV=Maldivas -LocaleNames/pt/MX=M\u00e9xico -LocaleNames/pt/MY=Mal\u00e1sia -LocaleNames/pt/MZ=Mo\u00e7ambique -LocaleNames/pt/NA=Nam\u00edbia -LocaleNames/pt/NC=Nova Caled\u00f4nia -LocaleNames/pt/NE=N\u00edger +LocaleNames/pt/MX=México +LocaleNames/pt/MY=Malásia +LocaleNames/pt/MZ=Moçambique +LocaleNames/pt/NA=Namíbia +LocaleNames/pt/NC=Nova Caledônia +LocaleNames/pt/NE=Níger LocaleNames/pt/NF=Ilha Norfolk -LocaleNames/pt/NG=Nig\u00e9ria -LocaleNames/pt/NI=Nicar\u00e1gua -LocaleNames/pt/NL=Pa\u00edses Baixos +LocaleNames/pt/NG=Nigéria +LocaleNames/pt/NI=Nicarágua +LocaleNames/pt/NL=Países Baixos LocaleNames/pt/NO=Noruega -LocaleNames/pt/NZ=Nova Zel\u00e2ndia -LocaleNames/pt/OM=Om\u00e3 -LocaleNames/pt/PA=Panam\u00e1 -LocaleNames/pt/PF=Polin\u00e9sia Francesa -LocaleNames/pt/PG=Papua-Nova Guin\u00e9 +LocaleNames/pt/NZ=Nova Zelândia +LocaleNames/pt/OM=Omã +LocaleNames/pt/PA=Panamá +LocaleNames/pt/PF=Polinésia Francesa +LocaleNames/pt/PG=Papua-Nova Guiné LocaleNames/pt/PH=Filipinas -LocaleNames/pt/PK=Paquist\u00e3o -LocaleNames/pt/PL=Pol\u00f4nia -LocaleNames/pt/PM=S\u00e3o Pedro e Miquel\u00e3o +LocaleNames/pt/PK=Paquistão +LocaleNames/pt/PL=Polônia +LocaleNames/pt/PM=São Pedro e Miquelão LocaleNames/pt/PR=Porto Rico -LocaleNames/pt/PS=Territ\u00f3rios palestinos +LocaleNames/pt/PS=Territórios palestinos LocaleNames/pt/PY=Paraguai LocaleNames/pt/QA=Catar -LocaleNames/pt/RE=Reuni\u00e3o -LocaleNames/pt/RO=Rom\u00eania -LocaleNames/pt/RU=R\u00fassia +LocaleNames/pt/RE=Reunião +LocaleNames/pt/RO=Romênia +LocaleNames/pt/RU=Rússia LocaleNames/pt/RW=Ruanda -LocaleNames/pt/SA=Ar\u00e1bia Saudita -LocaleNames/pt/SB=Ilhas Salom\u00e3o -LocaleNames/pt/SD=Sud\u00e3o -LocaleNames/pt/SE=Su\u00e9cia +LocaleNames/pt/SA=Arábia Saudita +LocaleNames/pt/SB=Ilhas Salomão +LocaleNames/pt/SD=Sudão +LocaleNames/pt/SE=Suécia LocaleNames/pt/SG=Singapura LocaleNames/pt/SH=Santa Helena -LocaleNames/pt/SI=Eslov\u00eania +LocaleNames/pt/SI=Eslovênia LocaleNames/pt/SJ=Svalbard e Jan Mayen -LocaleNames/pt/SK=Eslov\u00e1quia +LocaleNames/pt/SK=Eslováquia LocaleNames/pt/SL=Serra Leoa -LocaleNames/pt/SO=Som\u00e1lia -LocaleNames/pt/ST=S\u00e3o Tom\u00e9 e Pr\u00edncipe -LocaleNames/pt/SY=S\u00edria +LocaleNames/pt/SO=Somália +LocaleNames/pt/ST=São Tomé e Príncipe +LocaleNames/pt/SY=Síria LocaleNames/pt/TC=Ilhas Turcas e Caicos LocaleNames/pt/TD=Chade -LocaleNames/pt/TF=Territ\u00f3rios Franceses do Sul -LocaleNames/pt/TH=Tail\u00e2ndia -LocaleNames/pt/TJ=Tadjiquist\u00e3o +LocaleNames/pt/TF=Territórios Franceses do Sul +LocaleNames/pt/TH=Tailândia +LocaleNames/pt/TJ=Tadjiquistão LocaleNames/pt/TL=Timor-Leste -LocaleNames/pt/TM=Turcomenist\u00e3o -LocaleNames/pt/TN=Tun\u00edsia +LocaleNames/pt/TM=Turcomenistão +LocaleNames/pt/TN=Tunísia LocaleNames/pt/TR=Turquia LocaleNames/pt/TT=Trinidad e Tobago -LocaleNames/pt/TZ=Tanz\u00e2nia -LocaleNames/pt/UA=Ucr\u00e2nia +LocaleNames/pt/TZ=Tanzânia +LocaleNames/pt/UA=Ucrânia LocaleNames/pt/UM=Ilhas Menores Distantes dos EUA LocaleNames/pt/US=Estados Unidos LocaleNames/pt/UY=Uruguai -LocaleNames/pt/UZ=Uzbequist\u00e3o +LocaleNames/pt/UZ=Uzbequistão LocaleNames/pt/VA=Cidade do Vaticano -LocaleNames/pt/VC=S\u00e3o Vicente e Granadinas -LocaleNames/pt/VG=Ilhas Virgens Brit\u00e2nicas +LocaleNames/pt/VC=São Vicente e Granadinas +LocaleNames/pt/VG=Ilhas Virgens Britânicas LocaleNames/pt/VI=Ilhas Virgens Americanas -LocaleNames/pt/VN=Vietn\u00e3 +LocaleNames/pt/VN=Vietnã LocaleNames/pt/WF=Wallis e Futuna -LocaleNames/pt/YE=I\u00eamen -LocaleNames/pt/ZA=\u00c1frica do Sul -LocaleNames/pt/ZM=Z\u00e2mbia -LocaleNames/pt/ZW=Zimb\u00e1bue +LocaleNames/pt/YE=Iêmen +LocaleNames/pt/ZA=África do Sul +LocaleNames/pt/ZM=Zâmbia +LocaleNames/pt/ZW=Zimbábue # pt_PT LocaleNames/pt_PT/cs=checo -LocaleNames/pt_PT/et=est\u00f3nio +LocaleNames/pt_PT/et=estónio LocaleNames/pt_PT/pl=polaco LocaleNames/pt_PT/sl=esloveno -LocaleNames/pt_PT/AE=Emirados \u00c1rabes Unidos -LocaleNames/pt_PT/AM=Arm\u00e9nia -LocaleNames/pt_PT/AQ=Ant\u00e1rtida -LocaleNames/pt_PT/AZ=Azerbaij\u00e3o -LocaleNames/pt_PT/BA=B\u00f3snia e Herzegovina +LocaleNames/pt_PT/AE=Emirados Árabes Unidos +LocaleNames/pt_PT/AM=Arménia +LocaleNames/pt_PT/AQ=Antártida +LocaleNames/pt_PT/AZ=Azerbaijão +LocaleNames/pt_PT/BA=Bósnia e Herzegovina LocaleNames/pt_PT/BJ=Benim -LocaleNames/pt_PT/BY=Bielorr\u00fassia -LocaleNames/pt_PT/CM=Camar\u00f5es +LocaleNames/pt_PT/BY=Bielorrússia +LocaleNames/pt_PT/CM=Camarões LocaleNames/pt_PT/CX=Ilha do Natal -LocaleNames/pt_PT/CZ=Ch\u00e9quia -LocaleNames/pt_PT/EE=Est\u00f3nia +LocaleNames/pt_PT/CZ=Chéquia +LocaleNames/pt_PT/EE=Estónia LocaleNames/pt_PT/EG=Egito LocaleNames/pt_PT/EH=Sara Ocidental LocaleNames/pt_PT/ER=Eritreia LocaleNames/pt_PT/FK=Ilhas Falkland -LocaleNames/pt_PT/GL=Gronel\u00e2ndia -LocaleNames/pt_PT/GS=Ilhas Ge\u00f3rgia do Sul e Sandwich do Sul -LocaleNames/pt_PT/GW=Guin\u00e9-Bissau +LocaleNames/pt_PT/GL=Gronelândia +LocaleNames/pt_PT/GS=Ilhas Geórgia do Sul e Sandwich do Sul +LocaleNames/pt_PT/GW=Guiné-Bissau LocaleNames/pt_PT/HK=Hong Kong, RAE da China -LocaleNames/pt_PT/KE=Qu\u00e9nia -LocaleNames/pt_PT/KG=Quirguist\u00e3o -LocaleNames/pt_PT/KN=S\u00e3o Crist\u00f3v\u00e3o e Neves +LocaleNames/pt_PT/KE=Quénia +LocaleNames/pt_PT/KG=Quirguistão +LocaleNames/pt_PT/KN=São Cristóvão e Neves LocaleNames/pt_PT/KP=Coreia do Norte LocaleNames/pt_PT/KR=Coreia do Sul -LocaleNames/pt_PT/KY=Ilhas Caim\u00e3o -LocaleNames/pt_PT/KZ=Cazaquist\u00e3o +LocaleNames/pt_PT/KY=Ilhas Caimão +LocaleNames/pt_PT/KZ=Cazaquistão LocaleNames/pt_PT/LA=Laos -LocaleNames/pt_PT/LV=Let\u00f3nia -LocaleNames/pt_PT/MC=M\u00f3naco -LocaleNames/pt_PT/MD=Mold\u00e1via -LocaleNames/pt_PT/MG=Madag\u00e1scar -LocaleNames/pt_PT/MK=Maced\u00f3nia do Norte +LocaleNames/pt_PT/LV=Letónia +LocaleNames/pt_PT/MC=Mónaco +LocaleNames/pt_PT/MD=Moldávia +LocaleNames/pt_PT/MG=Madagáscar +LocaleNames/pt_PT/MK=Macedónia do Norte LocaleNames/pt_PT/MO=Macau, RAE da China LocaleNames/pt_PT/MP=Ilhas Marianas do Norte -LocaleNames/pt_PT/MU=Maur\u00edcia -LocaleNames/pt_PT/NC=Nova Caled\u00f3nia -LocaleNames/pt_PT/PG=Papua-Nova Guin\u00e9 -LocaleNames/pt_PT/PL=Pol\u00f3nia -LocaleNames/pt_PT/PS=Territ\u00f3rios palestinianos -LocaleNames/pt_PT/RE=Reuni\u00e3o -LocaleNames/pt_PT/RO=Rom\u00e9nia +LocaleNames/pt_PT/MU=Maurícia +LocaleNames/pt_PT/NC=Nova Caledónia +LocaleNames/pt_PT/PG=Papua-Nova Guiné +LocaleNames/pt_PT/PL=Polónia +LocaleNames/pt_PT/PS=Territórios palestinianos +LocaleNames/pt_PT/RE=Reunião +LocaleNames/pt_PT/RO=Roménia LocaleNames/pt_PT/SC=Seicheles LocaleNames/pt_PT/SG=Singapura -LocaleNames/pt_PT/SI=Eslov\u00e9nia -LocaleNames/pt_PT/SM=S\u00e3o Marinho +LocaleNames/pt_PT/SI=Eslovénia +LocaleNames/pt_PT/SM=São Marinho LocaleNames/pt_PT/TC=Ilhas Turcas e Caicos LocaleNames/pt_PT/TD=Chade -LocaleNames/pt_PT/TF=Territ\u00f3rios Austrais Franceses -LocaleNames/pt_PT/TJ=Tajiquist\u00e3o -LocaleNames/pt_PT/TM=Turquemenist\u00e3o +LocaleNames/pt_PT/TF=Territórios Austrais Franceses +LocaleNames/pt_PT/TJ=Tajiquistão +LocaleNames/pt_PT/TM=Turquemenistão LocaleNames/pt_PT/UM=Ilhas Menores Afastadas dos EUA -LocaleNames/pt_PT/UZ=Usbequist\u00e3o +LocaleNames/pt_PT/UZ=Usbequistão LocaleNames/pt_PT/VA=Cidade do Vaticano -LocaleNames/pt_PT/VC=S\u00e3o Vicente e Granadinas -LocaleNames/pt_PT/VG=Ilhas Virgens Brit\u00e2nicas +LocaleNames/pt_PT/VC=São Vicente e Granadinas +LocaleNames/pt_PT/VG=Ilhas Virgens Britânicas LocaleNames/pt_PT/VI=Ilhas Virgens dos EUA LocaleNames/pt_PT/VN=Vietname -LocaleNames/pt_PT/YE=I\u00e9men +LocaleNames/pt_PT/YE=Iémen #bug 6290792 Gaelic support -LocaleNames/ga/ab=Abc\u00e1isis -LocaleNames/ga/ae=Aiv\u00e9istis -LocaleNames/ga/af=Afrac\u00e1inis +LocaleNames/ga/ab=Abcáisis +LocaleNames/ga/ae=Aivéistis +LocaleNames/ga/af=Afracáinis LocaleNames/ga/ar=Araibis LocaleNames/ga/as=Asaimis -LocaleNames/ga/az=Asarbaise\u00e1inis -LocaleNames/ga/ba=Baisc\u00edris -LocaleNames/ga/be=Bealar\u00faisis -LocaleNames/ga/bg=Bulg\u00e1iris -LocaleNames/ga/bn=Beang\u00e1ilis -LocaleNames/ga/bo=Tib\u00e9idis -LocaleNames/ga/br=Briot\u00e1inis +LocaleNames/ga/az=Asarbaiseáinis +LocaleNames/ga/ba=Baiscíris +LocaleNames/ga/be=Bealarúisis +LocaleNames/ga/bg=Bulgáiris +LocaleNames/ga/bn=Beangáilis +LocaleNames/ga/bo=Tibéidis +LocaleNames/ga/br=Briotáinis LocaleNames/ga/bs=Boisnis -LocaleNames/ga/ca=Catal\u00f3inis +LocaleNames/ga/ca=Catalóinis LocaleNames/ga/ce=Seisnis LocaleNames/ga/co=Corsaicis -LocaleNames/ga/cr=Cra\u00eds +LocaleNames/ga/cr=Craís LocaleNames/ga/cs=Seicis LocaleNames/ga/cu=Slavais na hEaglaise LocaleNames/ga/cv=Suvaisis LocaleNames/ga/cy=Breatnais LocaleNames/ga/da=Danmhairgis -LocaleNames/ga/de=Gearm\u00e1inis -LocaleNames/ga/el=Gr\u00e9igis -LocaleNames/ga/en=B\u00e9arla -LocaleNames/ga/es=Sp\u00e1innis -LocaleNames/ga/et=East\u00f3inis +LocaleNames/ga/de=Gearmáinis +LocaleNames/ga/el=Gréigis +LocaleNames/ga/en=Béarla +LocaleNames/ga/es=Spáinnis +LocaleNames/ga/et=Eastóinis LocaleNames/ga/eu=Bascais LocaleNames/ga/fa=Peirsis LocaleNames/ga/fi=Fionlainnis LocaleNames/ga/fj=Fidsis -LocaleNames/ga/fo=Far\u00f3is +LocaleNames/ga/fo=Faróis LocaleNames/ga/fr=Fraincis LocaleNames/ga/fy=Freaslainnis Iartharach LocaleNames/ga/ga=Gaeilge LocaleNames/ga/gd=Gaeilge na hAlban -LocaleNames/ga/gu=G\u00faisear\u00e1itis +LocaleNames/ga/gu=Gúisearáitis LocaleNames/ga/gv=Manainnis LocaleNames/ga/he=Eabhrais -LocaleNames/ga/hi=Hiond\u00fais -LocaleNames/ga/hr=Cr\u00f3itis -LocaleNames/ga/hu=Ung\u00e1iris -LocaleNames/ga/hy=Airm\u00e9inis -LocaleNames/ga/id=Indin\u00e9isis -LocaleNames/ga/in=Indin\u00e9isis -LocaleNames/ga/is=\u00cdoslainnis -LocaleNames/ga/it=Iod\u00e1ilis -LocaleNames/ga/iu=Ion\u00faitis +LocaleNames/ga/hi=Hiondúis +LocaleNames/ga/hr=Cróitis +LocaleNames/ga/hu=Ungáiris +LocaleNames/ga/hy=Airméinis +LocaleNames/ga/id=Indinéisis +LocaleNames/ga/in=Indinéisis +LocaleNames/ga/is=Íoslainnis +LocaleNames/ga/it=Iodáilis +LocaleNames/ga/iu=Ionúitis LocaleNames/ga/iw=Eabhrais -LocaleNames/ga/ja=Seap\u00e1inis -LocaleNames/ga/ji=Gi\u00fadais -LocaleNames/ga/jv=I\u00e1ivis +LocaleNames/ga/ja=Seapáinis +LocaleNames/ga/ji=Giúdais +LocaleNames/ga/jv=Iáivis LocaleNames/ga/ka=Seoirsis LocaleNames/ga/kk=Casaicis LocaleNames/ga/kn=Cannadais -LocaleNames/ga/ko=C\u00f3ir\u00e9is -LocaleNames/ga/ks=Caism\u00edris +LocaleNames/ga/ko=Cóiréis +LocaleNames/ga/ks=Caismíris LocaleNames/ga/kw=Coirnis LocaleNames/ga/ky=Cirgisis LocaleNames/ga/la=Laidin LocaleNames/ga/lb=Lucsambuirgis LocaleNames/ga/lo=Laoisis -LocaleNames/ga/lt=Liotu\u00e1inis +LocaleNames/ga/lt=Liotuáinis LocaleNames/ga/lv=Laitvis -LocaleNames/ga/mg=Malag\u00e1isis +LocaleNames/ga/mg=Malagáisis LocaleNames/ga/mi=Maorais -LocaleNames/ga/mk=Macad\u00f3inis -LocaleNames/ga/ml=Mail\u00e9alaimis -LocaleNames/ga/mn=Mong\u00f3ilis -LocaleNames/ga/mo=Mold\u00e1ivis +LocaleNames/ga/mk=Macadóinis +LocaleNames/ga/ml=Mailéalaimis +LocaleNames/ga/mn=Mongóilis +LocaleNames/ga/mo=Moldáivis LocaleNames/ga/mr=Maraitis -LocaleNames/ga/mt=M\u00e1ltais +LocaleNames/ga/mt=Máltais LocaleNames/ga/my=Burmais -LocaleNames/ga/na=N\u00e1r\u00fais -LocaleNames/ga/nb=Bocm\u00e1l +LocaleNames/ga/na=Nárúis +LocaleNames/ga/nb=Bocmál LocaleNames/ga/ne=Neipeailis LocaleNames/ga/nl=Ollainnis LocaleNames/ga/nn=Nua-Ioruais LocaleNames/ga/no=Ioruais -LocaleNames/ga/nv=Navach\u00f3is -LocaleNames/ga/oc=Ocsat\u00e1inis -LocaleNames/ga/os=Ois\u00e9itis -LocaleNames/ga/pa=Puinse\u00e1ibis +LocaleNames/ga/nv=Navachóis +LocaleNames/ga/oc=Ocsatáinis +LocaleNames/ga/os=Oiséitis +LocaleNames/ga/pa=Puinseáibis LocaleNames/ga/pl=Polainnis LocaleNames/ga/ps=Paistis -LocaleNames/ga/pt=Portaing\u00e9ilis +LocaleNames/ga/pt=Portaingéilis LocaleNames/ga/qu=Ceatsuais -LocaleNames/ga/ro=R\u00f3m\u00e1inis -LocaleNames/ga/ru=R\u00faisis +LocaleNames/ga/ro=Rómáinis +LocaleNames/ga/ru=Rúisis LocaleNames/ga/sa=Sanscrait -LocaleNames/ga/sc=Saird\u00ednis +LocaleNames/ga/sc=Sairdínis LocaleNames/ga/sd=Sindis -LocaleNames/ga/se=S\u00e1imis an Tuaiscirt -LocaleNames/ga/sk=Sl\u00f3vaicis -LocaleNames/ga/sl=Sl\u00f3iv\u00e9inis -LocaleNames/ga/sm=Sam\u00f3is -LocaleNames/ga/so=Som\u00e1ilis -LocaleNames/ga/sq=Alb\u00e1inis +LocaleNames/ga/se=Sáimis an Tuaiscirt +LocaleNames/ga/sk=Slóvaicis +LocaleNames/ga/sl=Slóivéinis +LocaleNames/ga/sm=Samóis +LocaleNames/ga/so=Somáilis +LocaleNames/ga/sq=Albáinis LocaleNames/ga/sr=Seirbis LocaleNames/ga/sv=Sualainnis -LocaleNames/ga/sw=Svaha\u00edlis +LocaleNames/ga/sw=Svahaílis LocaleNames/ga/ta=Tamailis -LocaleNames/ga/th=T\u00e9alainnis -LocaleNames/ga/tl=Tag\u00e1laigis +LocaleNames/ga/th=Téalainnis +LocaleNames/ga/tl=Tagálaigis LocaleNames/ga/tr=Tuircis LocaleNames/ga/tt=Tatairis -LocaleNames/ga/ty=Taih\u00edtis -LocaleNames/ga/uk=\u00dacr\u00e1inis -LocaleNames/ga/ur=Urd\u00fais -LocaleNames/ga/uz=\u00daisb\u00e9iceast\u00e1inis -LocaleNames/ga/vi=V\u00edtneaimis -LocaleNames/ga/wa=Vall\u00fanais -LocaleNames/ga/yi=Gi\u00fadais -LocaleNames/ga/zh=S\u00ednis -LocaleNames/ga/zu=S\u00fal\u00fais -LocaleNames/ga/AD=And\u00f3ra -LocaleNames/ga/AE=Aontas na n\u00c9im\u00edr\u00edochta\u00ed Arabacha -LocaleNames/ga/AF=an Afganast\u00e1in -LocaleNames/ga/AG=Antigua agus Barb\u00fada -LocaleNames/ga/AL=an Alb\u00e1in -LocaleNames/ga/AM=an Airm\u00e9in -LocaleNames/ga/AN=Antill\u00ed na h\u00cdsilt\u00edre -LocaleNames/ga/AO=Ang\u00f3la +LocaleNames/ga/ty=Taihítis +LocaleNames/ga/uk=Úcráinis +LocaleNames/ga/ur=Urdúis +LocaleNames/ga/uz=Úisbéiceastáinis +LocaleNames/ga/vi=Vítneaimis +LocaleNames/ga/wa=Vallúnais +LocaleNames/ga/yi=Giúdais +LocaleNames/ga/zh=Sínis +LocaleNames/ga/zu=Súlúis +LocaleNames/ga/AD=Andóra +LocaleNames/ga/AE=Aontas na nÉimíríochtaí Arabacha +LocaleNames/ga/AF=an Afganastáin +LocaleNames/ga/AG=Antigua agus Barbúda +LocaleNames/ga/AL=an Albáin +LocaleNames/ga/AM=an Airméin +LocaleNames/ga/AN=Antillí na hÍsiltíre +LocaleNames/ga/AO=Angóla LocaleNames/ga/AQ=Antartaice -LocaleNames/ga/AR=an Airgint\u00edn -LocaleNames/ga/AS=Sam\u00f3 Mheirice\u00e1 +LocaleNames/ga/AR=an Airgintín +LocaleNames/ga/AS=Samó Mheiriceá LocaleNames/ga/AT=an Ostair -LocaleNames/ga/AU=an Astr\u00e1il -LocaleNames/ga/AZ=an Asarbaise\u00e1in -LocaleNames/ga/BA=an Bhoisnia agus an Heirseagaiv\u00e9in -LocaleNames/ga/BB=Barbad\u00f3s -LocaleNames/ga/BD=an Bhanglaid\u00e9is +LocaleNames/ga/AU=an Astráil +LocaleNames/ga/AZ=an Asarbaiseáin +LocaleNames/ga/BA=an Bhoisnia agus an Heirseagaivéin +LocaleNames/ga/BB=Barbadós +LocaleNames/ga/BD=an Bhanglaidéis LocaleNames/ga/BE=an Bheilg -LocaleNames/ga/BF=Buirc\u00edne Fas\u00f3 -LocaleNames/ga/BG=an Bhulg\u00e1ir -LocaleNames/ga/BH=Bair\u00e9in -LocaleNames/ga/BI=an Bhur\u00fain +LocaleNames/ga/BF=Buircíne Fasó +LocaleNames/ga/BG=an Bhulgáir +LocaleNames/ga/BH=Bairéin +LocaleNames/ga/BI=an Bhurúin LocaleNames/ga/BJ=Beinin -LocaleNames/ga/BM=Beirmi\u00fada -LocaleNames/ga/BN=Br\u00fain\u00e9 +LocaleNames/ga/BM=Beirmiúda +LocaleNames/ga/BN=Brúiné LocaleNames/ga/BO=an Bholaiv -LocaleNames/ga/BR=an Bhrasa\u00edl -LocaleNames/ga/BS=na Bah\u00e1ma\u00ed -LocaleNames/ga/BT=an Bh\u00fat\u00e1in -LocaleNames/ga/BV=Oile\u00e1n Bouvet -LocaleNames/ga/BW=an Bhotsu\u00e1in -LocaleNames/ga/BY=an Bhealar\u00fais -LocaleNames/ga/BZ=an Bheil\u00eds +LocaleNames/ga/BR=an Bhrasaíl +LocaleNames/ga/BS=na Bahámaí +LocaleNames/ga/BT=an Bhútáin +LocaleNames/ga/BV=Oileán Bouvet +LocaleNames/ga/BW=an Bhotsuáin +LocaleNames/ga/BY=an Bhealarúis +LocaleNames/ga/BZ=an Bheilís LocaleNames/ga/CA=Ceanada -LocaleNames/ga/CC=Oile\u00e1in Cocos (Keeling) -LocaleNames/ga/CD=Poblacht Dhaonlathach an Chong\u00f3 -LocaleNames/ga/CF=Poblacht na hAfraice L\u00e1ir -LocaleNames/ga/CG=Cong\u00f3-Brazzaville -LocaleNames/ga/CH=an Eilv\u00e9is -LocaleNames/ga/CI=an C\u00f3sta Eabhair -LocaleNames/ga/CK=Oile\u00e1in Cook +LocaleNames/ga/CC=Oileáin Cocos (Keeling) +LocaleNames/ga/CD=Poblacht Dhaonlathach an Chongó +LocaleNames/ga/CF=Poblacht na hAfraice Láir +LocaleNames/ga/CG=Congó-Brazzaville +LocaleNames/ga/CH=an Eilvéis +LocaleNames/ga/CI=an Cósta Eabhair +LocaleNames/ga/CK=Oileáin Cook LocaleNames/ga/CL=an tSile -LocaleNames/ga/CM=Camar\u00fan -LocaleNames/ga/CN=an tS\u00edn -LocaleNames/ga/CO=an Chol\u00f3im -LocaleNames/ga/CR=C\u00f3sta R\u00edce -LocaleNames/ga/CU=C\u00faba +LocaleNames/ga/CM=Camarún +LocaleNames/ga/CN=an tSín +LocaleNames/ga/CO=an Cholóim +LocaleNames/ga/CR=Cósta Ríce +LocaleNames/ga/CU=Cúba LocaleNames/ga/CV=Rinn Verde -LocaleNames/ga/CX=Oile\u00e1n na Nollag +LocaleNames/ga/CX=Oileán na Nollag LocaleNames/ga/CY=an Chipir LocaleNames/ga/CZ=an tSeicia -LocaleNames/ga/DE=an Ghearm\u00e1in +LocaleNames/ga/DE=an Ghearmáin LocaleNames/ga/DK=an Danmhairg LocaleNames/ga/DM=Doiminice LocaleNames/ga/DO=an Phoblacht Dhoiminiceach -LocaleNames/ga/DZ=an Ailg\u00e9ir -LocaleNames/ga/EC=Eacuad\u00f3r -LocaleNames/ga/EE=an East\u00f3in -LocaleNames/ga/EG=an \u00c9igipt -LocaleNames/ga/EH=an Sah\u00e1ra Thiar -LocaleNames/ga/ES=an Sp\u00e1inn -LocaleNames/ga/ET=an Aet\u00f3ip +LocaleNames/ga/DZ=an Ailgéir +LocaleNames/ga/EC=Eacuadór +LocaleNames/ga/EE=an Eastóin +LocaleNames/ga/EG=an Éigipt +LocaleNames/ga/EH=an Sahára Thiar +LocaleNames/ga/ES=an Spáinn +LocaleNames/ga/ET=an Aetóip LocaleNames/ga/FI=an Fhionlainn -LocaleNames/ga/FJ=Fids\u00ed -LocaleNames/ga/FK=Oile\u00e1in Fh\u00e1clainne -LocaleNames/ga/FM=an Mhicrin\u00e9is -LocaleNames/ga/FO=Oile\u00e1in Fhar\u00f3 +LocaleNames/ga/FJ=Fidsí +LocaleNames/ga/FK=Oileáin Fháclainne +LocaleNames/ga/FM=an Mhicrinéis +LocaleNames/ga/FO=Oileáin Fharó LocaleNames/ga/FR=an Fhrainc -LocaleNames/ga/GA=an Ghab\u00fain -LocaleNames/ga/GB=an R\u00edocht Aontaithe +LocaleNames/ga/GA=an Ghabúin +LocaleNames/ga/GB=an Ríocht Aontaithe LocaleNames/ga/GE=an tSeoirsia -LocaleNames/ga/GF=Gu\u00e1in na Fraince -LocaleNames/ga/GH=G\u00e1na -LocaleNames/ga/GI=Giobr\u00e1ltar +LocaleNames/ga/GF=Guáin na Fraince +LocaleNames/ga/GH=Gána +LocaleNames/ga/GI=Giobráltar LocaleNames/ga/GL=an Ghraonlainn LocaleNames/ga/GM=an Ghaimbia LocaleNames/ga/GN=an Ghuine -LocaleNames/ga/GP=Guadal\u00faip -LocaleNames/ga/GQ=an Ghuine Mhe\u00e1nchiorclach -LocaleNames/ga/GR=an Ghr\u00e9ig -LocaleNames/ga/GS=an tSeoirsia Theas agus Oile\u00e1in Sandwich Theas +LocaleNames/ga/GP=Guadalúip +LocaleNames/ga/GQ=an Ghuine Mheánchiorclach +LocaleNames/ga/GR=an Ghréig +LocaleNames/ga/GS=an tSeoirsia Theas agus Oileáin Sandwich Theas LocaleNames/ga/GT=Guatamala LocaleNames/ga/GW=Guine Bissau -LocaleNames/ga/GY=an Ghu\u00e1in -LocaleNames/ga/HM=Oile\u00e1n Heard agus Oile\u00e1in McDonald -LocaleNames/ga/HN=Hond\u00faras -LocaleNames/ga/HR=an Chr\u00f3it -LocaleNames/ga/HT=H\u00e1\u00edt\u00ed -LocaleNames/ga/HU=an Ung\u00e1ir -LocaleNames/ga/ID=an Indin\u00e9is -LocaleNames/ga/IE=\u00c9ire +LocaleNames/ga/GY=an Ghuáin +LocaleNames/ga/HM=Oileán Heard agus Oileáin McDonald +LocaleNames/ga/HN=Hondúras +LocaleNames/ga/HR=an Chróit +LocaleNames/ga/HT=Háítí +LocaleNames/ga/HU=an Ungáir +LocaleNames/ga/ID=an Indinéis +LocaleNames/ga/IE=Éire LocaleNames/ga/IL=Iosrael LocaleNames/ga/IN=an India -LocaleNames/ga/IO=Cr\u00edoch Aig\u00e9an Indiach na Breataine -LocaleNames/ga/IQ=an Iar\u00e1ic -LocaleNames/ga/IR=an Iar\u00e1in -LocaleNames/ga/IS=an \u00cdoslainn -LocaleNames/ga/IT=an Iod\u00e1il -LocaleNames/ga/JM=Iam\u00e1ice -LocaleNames/ga/JO=an Iord\u00e1in -LocaleNames/ga/JP=an tSeap\u00e1in -LocaleNames/ga/KE=an Ch\u00e9inia -LocaleNames/ga/KG=an Chirgeast\u00e1in -LocaleNames/ga/KH=an Chamb\u00f3id +LocaleNames/ga/IO=Críoch Aigéan Indiach na Breataine +LocaleNames/ga/IQ=an Iaráic +LocaleNames/ga/IR=an Iaráin +LocaleNames/ga/IS=an Íoslainn +LocaleNames/ga/IT=an Iodáil +LocaleNames/ga/JM=Iamáice +LocaleNames/ga/JO=an Iordáin +LocaleNames/ga/JP=an tSeapáin +LocaleNames/ga/KE=an Chéinia +LocaleNames/ga/KG=an Chirgeastáin +LocaleNames/ga/KH=an Chambóid LocaleNames/ga/KI=Ciribeas -LocaleNames/ga/KM=Oile\u00e1in Chom\u00f3ra -LocaleNames/ga/KN=San Cr\u00edost\u00f3ir-Nimheas -LocaleNames/ga/KP=an Ch\u00f3ir\u00e9 Thuaidh -LocaleNames/ga/KR=an Ch\u00f3ir\u00e9 Theas -LocaleNames/ga/KW=Cu\u00e1it -LocaleNames/ga/KY=Oile\u00e1in Cayman -LocaleNames/ga/KZ=an Chasacst\u00e1in -LocaleNames/ga/LB=an Liob\u00e1in -LocaleNames/ga/LI=Lichtinst\u00e9in -LocaleNames/ga/LK=Sr\u00ed Lanca -LocaleNames/ga/LR=an Lib\u00e9ir -LocaleNames/ga/LS=Leos\u00f3ta -LocaleNames/ga/LT=an Liotu\u00e1in +LocaleNames/ga/KM=Oileáin Chomóra +LocaleNames/ga/KN=San Críostóir-Nimheas +LocaleNames/ga/KP=an Chóiré Thuaidh +LocaleNames/ga/KR=an Chóiré Theas +LocaleNames/ga/KW=Cuáit +LocaleNames/ga/KY=Oileáin Cayman +LocaleNames/ga/KZ=an Chasacstáin +LocaleNames/ga/LB=an Liobáin +LocaleNames/ga/LI=Lichtinstéin +LocaleNames/ga/LK=Srí Lanca +LocaleNames/ga/LR=an Libéir +LocaleNames/ga/LS=Leosóta +LocaleNames/ga/LT=an Liotuáin LocaleNames/ga/LU=Lucsamburg LocaleNames/ga/LV=an Laitvia LocaleNames/ga/LY=an Libia -LocaleNames/ga/MA=Marac\u00f3 -LocaleNames/ga/MC=Monac\u00f3 -LocaleNames/ga/MD=an Mhold\u00f3iv -LocaleNames/ga/MH=Oile\u00e1in Marshall -LocaleNames/ga/MK=an Mhacad\u00f3in Thuaidh -LocaleNames/ga/ML=Mail\u00ed +LocaleNames/ga/MA=Maracó +LocaleNames/ga/MC=Monacó +LocaleNames/ga/MD=an Mholdóiv +LocaleNames/ga/MH=Oileáin Marshall +LocaleNames/ga/MK=an Mhacadóin Thuaidh +LocaleNames/ga/ML=Mailí LocaleNames/ga/MM=Maenmar (Burma) -LocaleNames/ga/MN=an Mhong\u00f3il -LocaleNames/ga/MP=na hOile\u00e1in Mh\u00e1irianacha Thuaidh -LocaleNames/ga/MR=an Mh\u00e1rat\u00e1in +LocaleNames/ga/MN=an Mhongóil +LocaleNames/ga/MP=na hOileáin Mháirianacha Thuaidh +LocaleNames/ga/MR=an Mháratáin LocaleNames/ga/MS=Montsarat -LocaleNames/ga/MT=M\u00e1lta -LocaleNames/ga/MU=Oile\u00e1n Mhuir\u00eds -LocaleNames/ga/MV=Oile\u00e1in Mhaild\u00edve -LocaleNames/ga/MW=an Mhal\u00e1iv +LocaleNames/ga/MT=Málta +LocaleNames/ga/MU=Oileán Mhuirís +LocaleNames/ga/MV=Oileáin Mhaildíve +LocaleNames/ga/MW=an Mhaláiv LocaleNames/ga/MX=Meicsiceo LocaleNames/ga/MY=an Mhalaeisia -LocaleNames/ga/MZ=M\u00f3saimb\u00edc +LocaleNames/ga/MZ=Mósaimbíc LocaleNames/ga/NA=an Namaib -LocaleNames/ga/NC=an Nua-Chalad\u00f3in -LocaleNames/ga/NE=an N\u00edgir -LocaleNames/ga/NF=Oile\u00e1n Norfolk -LocaleNames/ga/NG=an Nig\u00e9ir +LocaleNames/ga/NC=an Nua-Chaladóin +LocaleNames/ga/NE=an Nígir +LocaleNames/ga/NF=Oileán Norfolk +LocaleNames/ga/NG=an Nigéir LocaleNames/ga/NI=Nicearagua -LocaleNames/ga/NL=an \u00cdsilt\u00edr +LocaleNames/ga/NL=an Ísiltír LocaleNames/ga/NO=an Iorua LocaleNames/ga/NP=Neipeal -LocaleNames/ga/NR=N\u00e1r\u00fa -LocaleNames/ga/NZ=an Nua-Sh\u00e9alainn -LocaleNames/ga/PE=Peiri\u00fa -LocaleNames/ga/PF=Polain\u00e9is na Fraince +LocaleNames/ga/NR=Nárú +LocaleNames/ga/NZ=an Nua-Shéalainn +LocaleNames/ga/PE=Peiriú +LocaleNames/ga/PF=Polainéis na Fraince LocaleNames/ga/PG=Nua-Ghuine Phapua -LocaleNames/ga/PH=na hOile\u00e1in Fhilip\u00edneacha -LocaleNames/ga/PK=an Phacast\u00e1in +LocaleNames/ga/PH=na hOileáin Fhilipíneacha +LocaleNames/ga/PK=an Phacastáin LocaleNames/ga/PL=an Pholainn LocaleNames/ga/PM=San Pierre agus Miquelon -LocaleNames/ga/PR=P\u00f3rt\u00f3 R\u00edce -LocaleNames/ga/PS=na Cr\u00edocha Palaist\u00edneacha -LocaleNames/ga/PT=an Phortaing\u00e9il +LocaleNames/ga/PR=Pórtó Ríce +LocaleNames/ga/PS=na Críocha Palaistíneacha +LocaleNames/ga/PT=an Phortaingéil LocaleNames/ga/PY=Paragua LocaleNames/ga/QA=Catar -LocaleNames/ga/RE=La R\u00e9union -LocaleNames/ga/RO=an R\u00f3m\u00e1in -LocaleNames/ga/RU=an R\u00fais +LocaleNames/ga/RE=La Réunion +LocaleNames/ga/RO=an Rómáin +LocaleNames/ga/RU=an Rúis LocaleNames/ga/RW=Ruanda -LocaleNames/ga/SA=an Araib Sh\u00e1dach -LocaleNames/ga/SB=Oile\u00e1in Sholaimh -LocaleNames/ga/SC=na S\u00e9is\u00e9il -LocaleNames/ga/SD=an tS\u00fad\u00e1in +LocaleNames/ga/SA=an Araib Shádach +LocaleNames/ga/SB=Oileáin Sholaimh +LocaleNames/ga/SC=na Séiséil +LocaleNames/ga/SD=an tSúdáin LocaleNames/ga/SE=an tSualainn -LocaleNames/ga/SG=Singeap\u00f3r -LocaleNames/ga/SH=San H\u00e9ilin -LocaleNames/ga/SI=an tSl\u00f3iv\u00e9in +LocaleNames/ga/SG=Singeapór +LocaleNames/ga/SH=San Héilin +LocaleNames/ga/SI=an tSlóivéin LocaleNames/ga/SJ=Svalbard agus Jan Mayen -LocaleNames/ga/SK=an tSl\u00f3vaic +LocaleNames/ga/SK=an tSlóvaic LocaleNames/ga/SL=Siarra Leon -LocaleNames/ga/SM=San Mair\u00edne -LocaleNames/ga/SN=an tSeineag\u00e1il -LocaleNames/ga/SO=an tSom\u00e1il +LocaleNames/ga/SM=San Mairíne +LocaleNames/ga/SN=an tSeineagáil +LocaleNames/ga/SO=an tSomáil LocaleNames/ga/SR=Suranam -LocaleNames/ga/ST=S\u00e3o Tom\u00e9 agus Pr\u00edncipe -LocaleNames/ga/SV=an tSalvad\u00f3ir +LocaleNames/ga/ST=São Tomé agus Príncipe +LocaleNames/ga/SV=an tSalvadóir LocaleNames/ga/SY=an tSiria -LocaleNames/ga/TC=Oile\u00e1in na dTurcach agus Caicos +LocaleNames/ga/TC=Oileáin na dTurcach agus Caicos LocaleNames/ga/TD=Sead -LocaleNames/ga/TF=Cr\u00edocha Francacha Dheisceart an Domhain -LocaleNames/ga/TG=T\u00f3ga -LocaleNames/ga/TH=an T\u00e9alainn -LocaleNames/ga/TJ=an T\u00e1ids\u00edceast\u00e1in -LocaleNames/ga/TK=T\u00f3cal\u00e1 -LocaleNames/ga/TL=T\u00edom\u00f3r Thoir -LocaleNames/ga/TM=an Tuircm\u00e9anast\u00e1in -LocaleNames/ga/TN=an T\u00fain\u00e9is +LocaleNames/ga/TF=Críocha Francacha Dheisceart an Domhain +LocaleNames/ga/TG=Tóga +LocaleNames/ga/TH=an Téalainn +LocaleNames/ga/TJ=an Táidsíceastáin +LocaleNames/ga/TK=Tócalá +LocaleNames/ga/TL=Tíomór Thoir +LocaleNames/ga/TM=an Tuircméanastáin +LocaleNames/ga/TN=an Túinéis LocaleNames/ga/TR=an Tuirc -LocaleNames/ga/TT=Oile\u00e1n na Tr\u00edon\u00f3ide agus Tob\u00e1ga -LocaleNames/ga/TV=T\u00faval\u00fa -LocaleNames/ga/TW=an T\u00e9av\u00e1in -LocaleNames/ga/TZ=an Tans\u00e1in -LocaleNames/ga/UA=an \u00dacr\u00e1in -LocaleNames/ga/UM=Oile\u00e1in Imeallacha S.A.M. -LocaleNames/ga/US=St\u00e1it Aontaithe Mheirice\u00e1 +LocaleNames/ga/TT=Oileán na Tríonóide agus Tobága +LocaleNames/ga/TV=Túvalú +LocaleNames/ga/TW=an Téaváin +LocaleNames/ga/TZ=an Tansáin +LocaleNames/ga/UA=an Úcráin +LocaleNames/ga/UM=Oileáin Imeallacha S.A.M. +LocaleNames/ga/US=Stáit Aontaithe Mheiriceá LocaleNames/ga/UY=Uragua -LocaleNames/ga/UZ=an \u00daisb\u00e9iceast\u00e1in -LocaleNames/ga/VA=Cathair na Vatac\u00e1ine -LocaleNames/ga/VC=San Uinseann agus na Grean\u00e1id\u00edn\u00ed -LocaleNames/ga/VE=Veinis\u00e9ala -LocaleNames/ga/VG=Oile\u00e1in Bhriotanacha na Maighdean -LocaleNames/ga/VI=Oile\u00e1in Mheirice\u00e1nacha na Maighdean -LocaleNames/ga/VN=V\u00edtneam -LocaleNames/ga/VU=Vanuat\u00fa -LocaleNames/ga/WF=Vail\u00eds agus Fut\u00fana -LocaleNames/ga/WS=Sam\u00f3 -LocaleNames/ga/YE=\u00c9imin +LocaleNames/ga/UZ=an Úisbéiceastáin +LocaleNames/ga/VA=Cathair na Vatacáine +LocaleNames/ga/VC=San Uinseann agus na Greanáidíní +LocaleNames/ga/VE=Veiniséala +LocaleNames/ga/VG=Oileáin Bhriotanacha na Maighdean +LocaleNames/ga/VI=Oileáin Mheiriceánacha na Maighdean +LocaleNames/ga/VN=Vítneam +LocaleNames/ga/VU=Vanuatú +LocaleNames/ga/WF=Vailís agus Futúna +LocaleNames/ga/WS=Samó +LocaleNames/ga/YE=Éimin LocaleNames/ga/ZA=an Afraic Theas LocaleNames/ga/ZM=an tSaimbia # bug #6277696 -FormatData/sr/MonthNames/0=\u0458\u0430\u043d\u0443\u0430\u0440 -FormatData/sr/MonthNames/1=\u0444\u0435\u0431\u0440\u0443\u0430\u0440 -FormatData/sr/MonthNames/2=\u043c\u0430\u0440\u0442 -FormatData/sr/MonthNames/3=\u0430\u043f\u0440\u0438\u043b -FormatData/sr/MonthNames/4=\u043c\u0430\u0458 -FormatData/sr/MonthNames/5=\u0458\u0443\u043d -FormatData/sr/MonthNames/6=\u0458\u0443\u043b -FormatData/sr/MonthNames/7=\u0430\u0432\u0433\u0443\u0441\u0442 -FormatData/sr/MonthNames/8=\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440 -FormatData/sr/MonthNames/9=\u043e\u043a\u0442\u043e\u0431\u0430\u0440 -FormatData/sr/MonthNames/10=\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440 -FormatData/sr/MonthNames/11=\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440 -FormatData/sr/MonthAbbreviations/0=\u0458\u0430\u043d -FormatData/sr/MonthAbbreviations/1=\u0444\u0435\u0431 -FormatData/sr/MonthAbbreviations/2=\u043c\u0430\u0440 -FormatData/sr/MonthAbbreviations/3=\u0430\u043f\u0440 -FormatData/sr/MonthAbbreviations/4=\u043c\u0430\u0458 -FormatData/sr/MonthAbbreviations/5=\u0458\u0443\u043d -FormatData/sr/MonthAbbreviations/6=\u0458\u0443\u043b -FormatData/sr/MonthAbbreviations/7=\u0430\u0432\u0433 -FormatData/sr/MonthAbbreviations/8=\u0441\u0435\u043f -FormatData/sr/MonthAbbreviations/9=\u043e\u043a\u0442 -FormatData/sr/MonthAbbreviations/10=\u043d\u043e\u0432 -FormatData/sr/MonthAbbreviations/11=\u0434\u0435\u0446 -FormatData/sr/DayNames/0=\u043d\u0435\u0434\u0435\u0459\u0430 -FormatData/sr/DayNames/1=\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a -FormatData/sr/DayNames/2=\u0443\u0442\u043e\u0440\u0430\u043a -FormatData/sr/DayNames/3=\u0441\u0440\u0435\u0434\u0430 -FormatData/sr/DayNames/4=\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a -FormatData/sr/DayNames/5=\u043f\u0435\u0442\u0430\u043a -FormatData/sr/DayNames/6=\u0441\u0443\u0431\u043e\u0442\u0430 -FormatData/sr/DayAbbreviations/0=\u043d\u0435\u0434 -FormatData/sr/DayAbbreviations/1=\u043f\u043e\u043d -FormatData/sr/DayAbbreviations/2=\u0443\u0442\u043e -FormatData/sr/DayAbbreviations/3=\u0441\u0440\u0435 -FormatData/sr/DayAbbreviations/4=\u0447\u0435\u0442 -FormatData/sr/DayAbbreviations/5=\u043f\u0435\u0442 -FormatData/sr/DayAbbreviations/6=\u0441\u0443\u0431 -FormatData/sr/Eras/0=\u043f. \u043d. \u0435. -FormatData/sr/Eras/1=\u043d. \u0435 +FormatData/sr/MonthNames/0=јануар +FormatData/sr/MonthNames/1=фебруар +FormatData/sr/MonthNames/2=март +FormatData/sr/MonthNames/3=април +FormatData/sr/MonthNames/4=мај +FormatData/sr/MonthNames/5=јун +FormatData/sr/MonthNames/6=јул +FormatData/sr/MonthNames/7=август +FormatData/sr/MonthNames/8=септембар +FormatData/sr/MonthNames/9=октобар +FormatData/sr/MonthNames/10=новембар +FormatData/sr/MonthNames/11=децембар +FormatData/sr/MonthAbbreviations/0=јан +FormatData/sr/MonthAbbreviations/1=феб +FormatData/sr/MonthAbbreviations/2=мар +FormatData/sr/MonthAbbreviations/3=апр +FormatData/sr/MonthAbbreviations/4=мај +FormatData/sr/MonthAbbreviations/5=јун +FormatData/sr/MonthAbbreviations/6=јул +FormatData/sr/MonthAbbreviations/7=авг +FormatData/sr/MonthAbbreviations/8=сеп +FormatData/sr/MonthAbbreviations/9=окт +FormatData/sr/MonthAbbreviations/10=нов +FormatData/sr/MonthAbbreviations/11=дец +FormatData/sr/DayNames/0=недеља +FormatData/sr/DayNames/1=понедељак +FormatData/sr/DayNames/2=уторак +FormatData/sr/DayNames/3=среда +FormatData/sr/DayNames/4=четвртак +FormatData/sr/DayNames/5=петак +FormatData/sr/DayNames/6=субота +FormatData/sr/DayAbbreviations/0=нед +FormatData/sr/DayAbbreviations/1=пон +FormatData/sr/DayAbbreviations/2=уто +FormatData/sr/DayAbbreviations/3=сре +FormatData/sr/DayAbbreviations/4=чет +FormatData/sr/DayAbbreviations/5=пет +FormatData/sr/DayAbbreviations/6=суб +FormatData/sr/Eras/0=п. н. е. +FormatData/sr/Eras/1=н. е FormatData/sr/NumberPatterns/0=#,##0.### -FormatData/sr/NumberPatterns/1=\u00a4 #,##0.00 +FormatData/sr/NumberPatterns/1=¤ #,##0.00 FormatData/sr/NumberPatterns/2=#,##0% FormatData/sr/NumberElements/0=, FormatData/sr/NumberElements/1=. @@ -4348,8 +4348,8 @@ FormatData/sr/NumberElements/5=# FormatData/sr/NumberElements/6=- FormatData/sr/NumberElements/7=E -FormatData/sr/NumberElements/8=\u2030 -FormatData/sr/NumberElements/9=\u221e +FormatData/sr/NumberElements/8=‰ +FormatData/sr/NumberElements/9=∞ FormatData/sr/NumberElements/10=NaN FormatData/sr/TimePatterns/0=HH.mm.ss z FormatData/sr/TimePatterns/1=HH.mm.ss z @@ -4360,624 +4360,624 @@ FormatData/sr/DatePatterns/2=dd.MM.yyyy. FormatData/sr/DatePatterns/3=d.M.yy. FormatData/sr/DateTimePatterns/0={1} {0} -LocaleNames/sr/af=\u0430\u0444\u0440\u0438\u043a\u0430\u043d\u0441 -LocaleNames/sr/ar=\u0430\u0440\u0430\u043f\u0441\u043a\u0438 -LocaleNames/sr/be=\u0431\u0435\u043b\u043e\u0440\u0443\u0441\u043a\u0438 -LocaleNames/sr/bg=\u0431\u0443\u0433\u0430\u0440\u0441\u043a\u0438 -LocaleNames/sr/br=\u0431\u0440\u0435\u0442\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/ca=\u043a\u0430\u0442\u0430\u043b\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/co=\u043a\u043e\u0440\u0437\u0438\u043a\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/cs=\u0447\u0435\u0448\u043a\u0438 -LocaleNames/sr/da=\u0434\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/de=\u043d\u0435\u043c\u0430\u0447\u043a\u0438 -LocaleNames/sr/el=\u0433\u0440\u0447\u043a\u0438 -LocaleNames/sr/en=\u0435\u043d\u0433\u043b\u0435\u0441\u043a\u0438 -LocaleNames/sr/eo=\u0435\u0441\u043f\u0435\u0440\u0430\u043d\u0442\u043e -LocaleNames/sr/es=\u0448\u043f\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/et=\u0435\u0441\u0442\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/eu=\u0431\u0430\u0441\u043a\u0438\u0458\u0441\u043a\u0438 -LocaleNames/sr/fa=\u043f\u0435\u0440\u0441\u0438\u0458\u0441\u043a\u0438 -LocaleNames/sr/fi=\u0444\u0438\u043d\u0441\u043a\u0438 -LocaleNames/sr/fr=\u0444\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0438 -LocaleNames/sr/ga=\u0438\u0440\u0441\u043a\u0438 -LocaleNames/sr/he=\u0445\u0435\u0431\u0440\u0435\u0458\u0441\u043a\u0438 -LocaleNames/sr/hi=\u0445\u0438\u043d\u0434\u0438 -LocaleNames/sr/hr=\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438 -LocaleNames/sr/hu=\u043c\u0430\u0452\u0430\u0440\u0441\u043a\u0438 -LocaleNames/sr/hy=\u0458\u0435\u0440\u043c\u0435\u043d\u0441\u043a\u0438 -LocaleNames/sr/id=\u0438\u043d\u0434\u043e\u043d\u0435\u0436\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/in=\u0438\u043d\u0434\u043e\u043d\u0435\u0436\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/is=\u0438\u0441\u043b\u0430\u043d\u0434\u0441\u043a\u0438 -LocaleNames/sr/it=\u0438\u0442\u0430\u043b\u0438\u0458\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/iw=\u0445\u0435\u0431\u0440\u0435\u0458\u0441\u043a\u0438 -LocaleNames/sr/ja=\u0458\u0430\u043f\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/ji=\u0458\u0438\u0434\u0438\u0448 -LocaleNames/sr/ka=\u0433\u0440\u0443\u0437\u0438\u0458\u0441\u043a\u0438 -LocaleNames/sr/km=\u043a\u043c\u0435\u0440\u0441\u043a\u0438 -LocaleNames/sr/ko=\u043a\u043e\u0440\u0435\u0458\u0441\u043a\u0438 -LocaleNames/sr/ku=\u043a\u0443\u0440\u0434\u0441\u043a\u0438 -LocaleNames/sr/ky=\u043a\u0438\u0440\u0433\u0438\u0441\u043a\u0438 -LocaleNames/sr/la=\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438 -LocaleNames/sr/lt=\u043b\u0438\u0442\u0432\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/lv=\u043b\u0435\u0442\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/mk=\u043c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/mn=\u043c\u043e\u043d\u0433\u043e\u043b\u0441\u043a\u0438 -LocaleNames/sr/mo=\u041c\u043e\u043b\u0434\u0430\u0432\u0441\u043a\u0438 -LocaleNames/sr/my=\u0431\u0443\u0440\u043c\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/nl=\u0445\u043e\u043b\u0430\u043d\u0434\u0441\u043a\u0438 -LocaleNames/sr/no=\u043d\u043e\u0440\u0432\u0435\u0448\u043a\u0438 -LocaleNames/sr/pl=\u043f\u043e\u0459\u0441\u043a\u0438 -LocaleNames/sr/pt=\u043f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0441\u043a\u0438 -LocaleNames/sr/rm=\u0440\u043e\u043c\u0430\u043d\u0448 -LocaleNames/sr/ro=\u0440\u0443\u043c\u0443\u043d\u0441\u043a\u0438 -LocaleNames/sr/ru=\u0440\u0443\u0441\u043a\u0438 -LocaleNames/sr/sa=\u0441\u0430\u043d\u0441\u043a\u0440\u0438\u0442 -LocaleNames/sr/sk=\u0441\u043b\u043e\u0432\u0430\u0447\u043a\u0438 -LocaleNames/sr/sl=\u0441\u043b\u043e\u0432\u0435\u043d\u0430\u0447\u043a\u0438 -LocaleNames/sr/sq=\u0430\u043b\u0431\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/sr=\u0441\u0440\u043f\u0441\u043a\u0438 -LocaleNames/sr/sv=\u0448\u0432\u0435\u0434\u0441\u043a\u0438 -LocaleNames/sr/sw=\u0441\u0432\u0430\u0445\u0438\u043b\u0438 -LocaleNames/sr/tr=\u0442\u0443\u0440\u0441\u043a\u0438 -LocaleNames/sr/uk=\u0443\u043a\u0440\u0430\u0458\u0438\u043d\u0441\u043a\u0438 -LocaleNames/sr/vi=\u0432\u0438\u0458\u0435\u0442\u043d\u0430\u043c\u0441\u043a\u0438 -LocaleNames/sr/yi=\u0458\u0438\u0434\u0438\u0448 -LocaleNames/sr/zh=\u043a\u0438\u043d\u0435\u0441\u043a\u0438 -LocaleNames/sr/AD=\u0410\u043d\u0434\u043e\u0440\u0430 -LocaleNames/sr/AE=\u0423\u0458\u0435\u0434\u0438\u045a\u0435\u043d\u0438 \u0410\u0440\u0430\u043f\u0441\u043a\u0438 \u0415\u043c\u0438\u0440\u0430\u0442\u0438 -LocaleNames/sr/AF=\u0410\u0432\u0433\u0430\u043d\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/AL=\u0410\u043b\u0431\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/AM=\u0408\u0435\u0440\u043c\u0435\u043d\u0438\u0458\u0430 -LocaleNames/sr/AN=\u0425\u043e\u043b\u0430\u043d\u0434\u0441\u043a\u0438 \u0410\u043d\u0442\u0438\u043b\u0438 -LocaleNames/sr/AO=\u0410\u043d\u0433\u043e\u043b\u0430 -LocaleNames/sr/AR=\u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0430 -LocaleNames/sr/AT=\u0410\u0443\u0441\u0442\u0440\u0438\u0458\u0430 -LocaleNames/sr/AU=\u0410\u0443\u0441\u0442\u0440\u0430\u043b\u0438\u0458\u0430 -LocaleNames/sr/AW=\u0410\u0440\u0443\u0431\u0430 -LocaleNames/sr/AX=\u041e\u043b\u0430\u043d\u0434\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/AZ=\u0410\u0437\u0435\u0440\u0431\u0435\u0458\u045f\u0430\u043d -LocaleNames/sr/BA=\u0411\u043e\u0441\u043d\u0430 \u0438 \u0425\u0435\u0440\u0446\u0435\u0433\u043e\u0432\u0438\u043d\u0430 -LocaleNames/sr/BB=\u0411\u0430\u0440\u0431\u0430\u0434\u043e\u0441 -LocaleNames/sr/BD=\u0411\u0430\u043d\u0433\u043b\u0430\u0434\u0435\u0448 -LocaleNames/sr/BE=\u0411\u0435\u043b\u0433\u0438\u0458\u0430 -LocaleNames/sr/BF=\u0411\u0443\u0440\u043a\u0438\u043d\u0430 \u0424\u0430\u0441\u043e -LocaleNames/sr/BG=\u0411\u0443\u0433\u0430\u0440\u0441\u043a\u0430 -LocaleNames/sr/BH=\u0411\u0430\u0445\u0440\u0435\u0438\u043d -LocaleNames/sr/BI=\u0411\u0443\u0440\u0443\u043d\u0434\u0438 -LocaleNames/sr/BJ=\u0411\u0435\u043d\u0438\u043d -LocaleNames/sr/BM=\u0411\u0435\u0440\u043c\u0443\u0434\u0430 -LocaleNames/sr/BN=\u0411\u0440\u0443\u043d\u0435\u0458 -LocaleNames/sr/BO=\u0411\u043e\u043b\u0438\u0432\u0438\u0458\u0430 -LocaleNames/sr/BR=\u0411\u0440\u0430\u0437\u0438\u043b -LocaleNames/sr/BS=\u0411\u0430\u0445\u0430\u043c\u0438 -LocaleNames/sr/BT=\u0411\u0443\u0442\u0430\u043d -LocaleNames/sr/BV=\u041e\u0441\u0442\u0440\u0432\u043e \u0411\u0443\u0432\u0435 -LocaleNames/sr/BW=\u0411\u043e\u0446\u0432\u0430\u043d\u0430 -LocaleNames/sr/BY=\u0411\u0435\u043b\u043e\u0440\u0443\u0441\u0438\u0458\u0430 -LocaleNames/sr/BZ=\u0411\u0435\u043b\u0438\u0437\u0435 -LocaleNames/sr/CA=\u041a\u0430\u043d\u0430\u0434\u0430 -LocaleNames/sr/CC=\u041a\u043e\u043a\u043e\u0441\u043e\u0432\u0430 (\u041a\u0438\u043b\u0438\u043d\u0433\u043e\u0432\u0430) \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/CD=\u041a\u043e\u043d\u0433\u043e - \u041a\u0438\u043d\u0448\u0430\u0441\u0430 -LocaleNames/sr/CF=\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u043d\u043e\u0430\u0444\u0440\u0438\u0447\u043a\u0430 \u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 -LocaleNames/sr/CG=\u041a\u043e\u043d\u0433\u043e - \u0411\u0440\u0430\u0437\u0430\u0432\u0438\u043b -LocaleNames/sr/CH=\u0428\u0432\u0430\u0458\u0446\u0430\u0440\u0441\u043a\u0430 -LocaleNames/sr/CI=\u041e\u0431\u0430\u043b\u0430 \u0421\u043b\u043e\u043d\u043e\u0432\u0430\u0447\u0435 (\u041a\u043e\u0442 \u0434\u2019\u0418\u0432\u043e\u0430\u0440) -LocaleNames/sr/CL=\u0427\u0438\u043b\u0435 -LocaleNames/sr/CM=\u041a\u0430\u043c\u0435\u0440\u0443\u043d -LocaleNames/sr/CN=\u041a\u0438\u043d\u0430 -LocaleNames/sr/CO=\u041a\u043e\u043b\u0443\u043c\u0431\u0438\u0458\u0430 -LocaleNames/sr/CR=\u041a\u043e\u0441\u0442\u0430\u0440\u0438\u043a\u0430 -LocaleNames/sr/CS=\u0421\u0440\u0431\u0438\u0458\u0430 \u0438 \u0426\u0440\u043d\u0430 \u0413\u043e\u0440\u0430 -LocaleNames/sr/CU=\u041a\u0443\u0431\u0430 -LocaleNames/sr/CV=\u0417\u0435\u043b\u0435\u043d\u043e\u0440\u0442\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/CX=\u0411\u043e\u0436\u0438\u045b\u043d\u043e \u041e\u0441\u0442\u0440\u0432\u043e -LocaleNames/sr/CY=\u041a\u0438\u043f\u0430\u0440 -LocaleNames/sr/CZ=\u0427\u0435\u0448\u043a\u0430 -LocaleNames/sr/DE=\u041d\u0435\u043c\u0430\u0447\u043a\u0430 -LocaleNames/sr/DJ=\u040f\u0438\u0431\u0443\u0442\u0438 -LocaleNames/sr/DK=\u0414\u0430\u043d\u0441\u043a\u0430 -LocaleNames/sr/DM=\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430 -LocaleNames/sr/DO=\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430\u043d\u0441\u043a\u0430 \u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 -LocaleNames/sr/DZ=\u0410\u043b\u0436\u0438\u0440 -LocaleNames/sr/EC=\u0415\u043a\u0432\u0430\u0434\u043e\u0440 -LocaleNames/sr/EE=\u0415\u0441\u0442\u043e\u043d\u0438\u0458\u0430 -LocaleNames/sr/EG=\u0415\u0433\u0438\u043f\u0430\u0442 -LocaleNames/sr/EH=\u0417\u0430\u043f\u0430\u0434\u043d\u0430 \u0421\u0430\u0445\u0430\u0440\u0430 -LocaleNames/sr/ER=\u0415\u0440\u0438\u0442\u0440\u0435\u0458\u0430 -LocaleNames/sr/ES=\u0428\u043f\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/ET=\u0415\u0442\u0438\u043e\u043f\u0438\u0458\u0430 -LocaleNames/sr/FI=\u0424\u0438\u043d\u0441\u043a\u0430 -LocaleNames/sr/FJ=\u0424\u0438\u045f\u0438 -LocaleNames/sr/FK=\u0424\u043e\u043a\u043b\u0430\u043d\u0434\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/FM=\u041c\u0438\u043a\u0440\u043e\u043d\u0435\u0437\u0438\u0458\u0430 -LocaleNames/sr/FO=\u0424\u0430\u0440\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/FR=\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0430 -LocaleNames/sr/GA=\u0413\u0430\u0431\u043e\u043d -LocaleNames/sr/GB=\u0423\u0458\u0435\u0434\u0438\u045a\u0435\u043d\u043e \u041a\u0440\u0430\u0459\u0435\u0432\u0441\u0442\u0432\u043e -LocaleNames/sr/GD=\u0413\u0440\u0435\u043d\u0430\u0434\u0430 -LocaleNames/sr/GE=\u0413\u0440\u0443\u0437\u0438\u0458\u0430 -LocaleNames/sr/GF=\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0430 \u0413\u0432\u0430\u0458\u0430\u043d\u0430 -LocaleNames/sr/GH=\u0413\u0430\u043d\u0430 -LocaleNames/sr/GI=\u0413\u0438\u0431\u0440\u0430\u043b\u0442\u0430\u0440 -LocaleNames/sr/GL=\u0413\u0440\u0435\u043d\u043b\u0430\u043d\u0434 -LocaleNames/sr/GM=\u0413\u0430\u043c\u0431\u0438\u0458\u0430 -LocaleNames/sr/GN=\u0413\u0432\u0438\u043d\u0435\u0458\u0430 -LocaleNames/sr/GP=\u0413\u0432\u0430\u0434\u0435\u043b\u0443\u043f -LocaleNames/sr/GQ=\u0415\u043a\u0432\u0430\u0442\u043e\u0440\u0438\u0458\u0430\u043b\u043d\u0430 \u0413\u0432\u0438\u043d\u0435\u0458\u0430 -LocaleNames/sr/GR=\u0413\u0440\u0447\u043a\u0430 -LocaleNames/sr/GS=\u0408\u0443\u0436\u043d\u0430 \u040f\u043e\u0440\u045f\u0438\u0458\u0430 \u0438 \u0408\u0443\u0436\u043d\u0430 \u0421\u0435\u043d\u0434\u0432\u0438\u0447\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/GT=\u0413\u0432\u0430\u0442\u0435\u043c\u0430\u043b\u0430 -LocaleNames/sr/GU=\u0413\u0443\u0430\u043c -LocaleNames/sr/GW=\u0413\u0432\u0438\u043d\u0435\u0458\u0430-\u0411\u0438\u0441\u0430\u043e -LocaleNames/sr/GY=\u0413\u0432\u0430\u0458\u0430\u043d\u0430 -LocaleNames/sr/HK=\u0421\u0410\u0420 \u0425\u043e\u043d\u0433\u043a\u043e\u043d\u0433 (\u041a\u0438\u043d\u0430) -LocaleNames/sr/HM=\u041e\u0441\u0442\u0440\u0432\u043e \u0425\u0435\u0440\u0434 \u0438 \u041c\u0435\u043a\u0434\u043e\u043d\u0430\u043b\u0434\u043e\u0432\u0430 \u043e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/HN=\u0425\u043e\u043d\u0434\u0443\u0440\u0430\u0441 -LocaleNames/sr/HR=\u0425\u0440\u0432\u0430\u0442\u0441\u043a\u0430 -LocaleNames/sr/HT=\u0425\u0430\u0438\u0442\u0438 -LocaleNames/sr/HU=\u041c\u0430\u0452\u0430\u0440\u0441\u043a\u0430 -LocaleNames/sr/ID=\u0418\u043d\u0434\u043e\u043d\u0435\u0437\u0438\u0458\u0430 -LocaleNames/sr/IE=\u0418\u0440\u0441\u043a\u0430 -LocaleNames/sr/IL=\u0418\u0437\u0440\u0430\u0435\u043b -LocaleNames/sr/IN=\u0418\u043d\u0434\u0438\u0458\u0430 -LocaleNames/sr/IQ=\u0418\u0440\u0430\u043a -LocaleNames/sr/IR=\u0418\u0440\u0430\u043d -LocaleNames/sr/IS=\u0418\u0441\u043b\u0430\u043d\u0434 -LocaleNames/sr/IT=\u0418\u0442\u0430\u043b\u0438\u0458\u0430 -LocaleNames/sr/JM=\u0408\u0430\u043c\u0430\u0458\u043a\u0430 -LocaleNames/sr/JO=\u0408\u043e\u0440\u0434\u0430\u043d -LocaleNames/sr/JP=\u0408\u0430\u043f\u0430\u043d -LocaleNames/sr/KE=\u041a\u0435\u043d\u0438\u0458\u0430 -LocaleNames/sr/KG=\u041a\u0438\u0440\u0433\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/KH=\u041a\u0430\u043c\u0431\u043e\u045f\u0430 -LocaleNames/sr/KI=\u041a\u0438\u0440\u0438\u0431\u0430\u0442\u0438 -LocaleNames/sr/KM=\u041a\u043e\u043c\u043e\u0440\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/KN=\u0421\u0435\u043d\u0442 \u041a\u0438\u0442\u0441 \u0438 \u041d\u0435\u0432\u0438\u0441 -LocaleNames/sr/KP=\u0421\u0435\u0432\u0435\u0440\u043d\u0430 \u041a\u043e\u0440\u0435\u0458\u0430 -LocaleNames/sr/KR=\u0408\u0443\u0436\u043d\u0430 \u041a\u043e\u0440\u0435\u0458\u0430 -LocaleNames/sr/KW=\u041a\u0443\u0432\u0430\u0458\u0442 -LocaleNames/sr/KY=\u041a\u0430\u0458\u043c\u0430\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/KZ=\u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d -LocaleNames/sr/LA=\u041b\u0430\u043e\u0441 -LocaleNames/sr/LB=\u041b\u0438\u0431\u0430\u043d -LocaleNames/sr/LC=\u0421\u0432\u0435\u0442\u0430 \u041b\u0443\u0446\u0438\u0458\u0430 -LocaleNames/sr/LI=\u041b\u0438\u0445\u0442\u0435\u043d\u0448\u0442\u0430\u0458\u043d -LocaleNames/sr/LK=\u0428\u0440\u0438 \u041b\u0430\u043d\u043a\u0430 -LocaleNames/sr/LR=\u041b\u0438\u0431\u0435\u0440\u0438\u0458\u0430 -LocaleNames/sr/LS=\u041b\u0435\u0441\u043e\u0442\u043e -LocaleNames/sr/LT=\u041b\u0438\u0442\u0432\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/LU=\u041b\u0443\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0433 -LocaleNames/sr/LV=\u041b\u0435\u0442\u043e\u043d\u0438\u0458\u0430 -LocaleNames/sr/LY=\u041b\u0438\u0431\u0438\u0458\u0430 -LocaleNames/sr/MA=\u041c\u0430\u0440\u043e\u043a\u043e -LocaleNames/sr/MC=\u041c\u043e\u043d\u0430\u043a\u043e -LocaleNames/sr/MD=\u041c\u043e\u043b\u0434\u0430\u0432\u0438\u0458\u0430 -LocaleNames/sr/MG=\u041c\u0430\u0434\u0430\u0433\u0430\u0441\u043a\u0430\u0440 -LocaleNames/sr/MH=\u041c\u0430\u0440\u0448\u0430\u043b\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/MK=\u0421\u0435\u0432\u0435\u0440\u043d\u0430 \u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0438\u0458\u0430 -LocaleNames/sr/ML=\u041c\u0430\u043b\u0438 -LocaleNames/sr/MM=\u041c\u0438\u0458\u0430\u043d\u043c\u0430\u0440 (\u0411\u0443\u0440\u043c\u0430) -LocaleNames/sr/MN=\u041c\u043e\u043d\u0433\u043e\u043b\u0438\u0458\u0430 -LocaleNames/sr/MO=\u0421\u0410\u0420 \u041c\u0430\u043a\u0430\u043e (\u041a\u0438\u043d\u0430) -LocaleNames/sr/MP=\u0421\u0435\u0432\u0435\u0440\u043d\u0430 \u041c\u0430\u0440\u0438\u0458\u0430\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/MQ=\u041c\u0430\u0440\u0442\u0438\u043d\u0438\u043a -LocaleNames/sr/MR=\u041c\u0430\u0443\u0440\u0438\u0442\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/MS=\u041c\u043e\u043d\u0441\u0435\u0440\u0430\u0442 -LocaleNames/sr/MT=\u041c\u0430\u043b\u0442\u0430 -LocaleNames/sr/MU=\u041c\u0430\u0443\u0440\u0438\u0446\u0438\u0458\u0443\u0441 -LocaleNames/sr/MV=\u041c\u0430\u043b\u0434\u0438\u0432\u0438 -LocaleNames/sr/MW=\u041c\u0430\u043b\u0430\u0432\u0438 -LocaleNames/sr/MX=\u041c\u0435\u043a\u0441\u0438\u043a\u043e -LocaleNames/sr/MY=\u041c\u0430\u043b\u0435\u0437\u0438\u0458\u0430 -LocaleNames/sr/MZ=\u041c\u043e\u0437\u0430\u043c\u0431\u0438\u043a -LocaleNames/sr/NA=\u041d\u0430\u043c\u0438\u0431\u0438\u0458\u0430 -LocaleNames/sr/NC=\u041d\u043e\u0432\u0430 \u041a\u0430\u043b\u0435\u0434\u043e\u043d\u0438\u0458\u0430 -LocaleNames/sr/NE=\u041d\u0438\u0433\u0435\u0440 -LocaleNames/sr/NF=\u041e\u0441\u0442\u0440\u0432\u043e \u041d\u043e\u0440\u0444\u043e\u043a -LocaleNames/sr/NG=\u041d\u0438\u0433\u0435\u0440\u0438\u0458\u0430 -LocaleNames/sr/NI=\u041d\u0438\u043a\u0430\u0440\u0430\u0433\u0432\u0430 -LocaleNames/sr/NL=\u0425\u043e\u043b\u0430\u043d\u0434\u0438\u0458\u0430 -LocaleNames/sr/NO=\u041d\u043e\u0440\u0432\u0435\u0448\u043a\u0430 -LocaleNames/sr/NP=\u041d\u0435\u043f\u0430\u043b -LocaleNames/sr/NR=\u041d\u0430\u0443\u0440\u0443 -LocaleNames/sr/NU=\u041d\u0438\u0443\u0435 -LocaleNames/sr/NZ=\u041d\u043e\u0432\u0438 \u0417\u0435\u043b\u0430\u043d\u0434 -LocaleNames/sr/OM=\u041e\u043c\u0430\u043d -LocaleNames/sr/PA=\u041f\u0430\u043d\u0430\u043c\u0430 -LocaleNames/sr/PE=\u041f\u0435\u0440\u0443 -LocaleNames/sr/PF=\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0430 \u041f\u043e\u043b\u0438\u043d\u0435\u0437\u0438\u0458\u0430 -LocaleNames/sr/PG=\u041f\u0430\u043f\u0443\u0430 \u041d\u043e\u0432\u0430 \u0413\u0432\u0438\u043d\u0435\u0458\u0430 -LocaleNames/sr/PH=\u0424\u0438\u043b\u0438\u043f\u0438\u043d\u0438 -LocaleNames/sr/PK=\u041f\u0430\u043a\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/PL=\u041f\u043e\u0459\u0441\u043a\u0430 -LocaleNames/sr/PM=\u0421\u0435\u043d \u041f\u0458\u0435\u0440 \u0438 \u041c\u0438\u043a\u0435\u043b\u043e\u043d -LocaleNames/sr/PN=\u041f\u0438\u0442\u043a\u0435\u0440\u043d -LocaleNames/sr/PR=\u041f\u043e\u0440\u0442\u043e\u0440\u0438\u043a\u043e -LocaleNames/sr/PS=\u041f\u0430\u043b\u0435\u0441\u0442\u0438\u043d\u0441\u043a\u0435 \u0442\u0435\u0440\u0438\u0442\u043e\u0440\u0438\u0458\u0435 -LocaleNames/sr/PT=\u041f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0438\u0458\u0430 -LocaleNames/sr/PW=\u041f\u0430\u043b\u0430\u0443 -LocaleNames/sr/PY=\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0458 -LocaleNames/sr/QA=\u041a\u0430\u0442\u0430\u0440 -LocaleNames/sr/RE=\u0420\u0435\u0438\u043d\u0438\u043e\u043d -LocaleNames/sr/RO=\u0420\u0443\u043c\u0443\u043d\u0438\u0458\u0430 -LocaleNames/sr/RU=\u0420\u0443\u0441\u0438\u0458\u0430 -LocaleNames/sr/RW=\u0420\u0443\u0430\u043d\u0434\u0430 -LocaleNames/sr/SA=\u0421\u0430\u0443\u0434\u0438\u0458\u0441\u043a\u0430 \u0410\u0440\u0430\u0431\u0438\u0458\u0430 -LocaleNames/sr/SB=\u0421\u043e\u043b\u043e\u043c\u043e\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/SC=\u0421\u0435\u0458\u0448\u0435\u043b\u0438 -LocaleNames/sr/SD=\u0421\u0443\u0434\u0430\u043d -LocaleNames/sr/SE=\u0428\u0432\u0435\u0434\u0441\u043a\u0430 -LocaleNames/sr/SG=\u0421\u0438\u043d\u0433\u0430\u043f\u0443\u0440 -LocaleNames/sr/SH=\u0421\u0432\u0435\u0442\u0430 \u0408\u0435\u043b\u0435\u043d\u0430 -LocaleNames/sr/SI=\u0421\u043b\u043e\u0432\u0435\u043d\u0438\u0458\u0430 -LocaleNames/sr/SJ=\u0421\u0432\u0430\u043b\u0431\u0430\u0440\u0434 \u0438 \u0408\u0430\u043d \u041c\u0430\u0458\u0435\u043d -LocaleNames/sr/SK=\u0421\u043b\u043e\u0432\u0430\u0447\u043a\u0430 -LocaleNames/sr/SL=\u0421\u0438\u0458\u0435\u0440\u0430 \u041b\u0435\u043e\u043d\u0435 -LocaleNames/sr/SM=\u0421\u0430\u043d \u041c\u0430\u0440\u0438\u043d\u043e -LocaleNames/sr/SN=\u0421\u0435\u043d\u0435\u0433\u0430\u043b -LocaleNames/sr/SO=\u0421\u043e\u043c\u0430\u043b\u0438\u0458\u0430 -LocaleNames/sr/SR=\u0421\u0443\u0440\u0438\u043d\u0430\u043c -LocaleNames/sr/ST=\u0421\u0430\u043e \u0422\u043e\u043c\u0435 \u0438 \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 -LocaleNames/sr/SV=\u0421\u0430\u043b\u0432\u0430\u0434\u043e\u0440 -LocaleNames/sr/SY=\u0421\u0438\u0440\u0438\u0458\u0430 -LocaleNames/sr/TC=\u041e\u0441\u0442\u0440\u0432\u0430 \u0422\u0443\u0440\u043a\u0441 \u0438 \u041a\u0430\u0438\u043a\u043e\u0441 -LocaleNames/sr/TD=\u0427\u0430\u0434 -LocaleNames/sr/TF=\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0435 \u0408\u0443\u0436\u043d\u0435 \u0422\u0435\u0440\u0438\u0442\u043e\u0440\u0438\u0458\u0435 -LocaleNames/sr/TG=\u0422\u043e\u0433\u043e -LocaleNames/sr/TH=\u0422\u0430\u0458\u043b\u0430\u043d\u0434 -LocaleNames/sr/TJ=\u0422\u0430\u045f\u0438\u043a\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/TK=\u0422\u043e\u043a\u0435\u043b\u0430\u0443 -LocaleNames/sr/TL=\u0422\u0438\u043c\u043e\u0440-\u041b\u0435\u0441\u0442\u0435 (\u0418\u0441\u0442\u043e\u0447\u043d\u0438 \u0422\u0438\u043c\u043e\u0440) -LocaleNames/sr/TM=\u0422\u0443\u0440\u043a\u043c\u0435\u043d\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/TN=\u0422\u0443\u043d\u0438\u0441 -LocaleNames/sr/TO=\u0422\u043e\u043d\u0433\u0430 -LocaleNames/sr/TR=\u0422\u0443\u0440\u0441\u043a\u0430 -LocaleNames/sr/TT=\u0422\u0440\u0438\u043d\u0438\u0434\u0430\u0434 \u0438 \u0422\u043e\u0431\u0430\u0433\u043e -LocaleNames/sr/TV=\u0422\u0443\u0432\u0430\u043b\u0443 -LocaleNames/sr/TW=\u0422\u0430\u0458\u0432\u0430\u043d -LocaleNames/sr/TZ=\u0422\u0430\u043d\u0437\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/UA=\u0423\u043a\u0440\u0430\u0458\u0438\u043d\u0430 -LocaleNames/sr/UG=\u0423\u0433\u0430\u043d\u0434\u0430 -LocaleNames/sr/UM=\u0423\u0434\u0430\u0459\u0435\u043d\u0430 \u043e\u0441\u0442\u0440\u0432\u0430 \u0421\u0410\u0414 -LocaleNames/sr/US=\u0421\u0458\u0435\u0434\u0438\u045a\u0435\u043d\u0435 \u0414\u0440\u0436\u0430\u0432\u0435 -LocaleNames/sr/UY=\u0423\u0440\u0443\u0433\u0432\u0430\u0458 -LocaleNames/sr/UZ=\u0423\u0437\u0431\u0435\u043a\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/VA=\u0412\u0430\u0442\u0438\u043a\u0430\u043d -LocaleNames/sr/VC=\u0421\u0435\u043d\u0442 \u0412\u0438\u043d\u0441\u0435\u043d\u0442 \u0438 \u0413\u0440\u0435\u043d\u0430\u0434\u0438\u043d\u0438 -LocaleNames/sr/VE=\u0412\u0435\u043d\u0435\u0446\u0443\u0435\u043b\u0430 -LocaleNames/sr/VG=\u0411\u0440\u0438\u0442\u0430\u043d\u0441\u043a\u0430 \u0414\u0435\u0432\u0438\u0447\u0430\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/VI=\u0410\u043c\u0435\u0440\u0438\u0447\u043a\u0430 \u0414\u0435\u0432\u0438\u0447\u0430\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/VN=\u0412\u0438\u0458\u0435\u0442\u043d\u0430\u043c -LocaleNames/sr/VU=\u0412\u0430\u043d\u0443\u0430\u0442\u0443 -LocaleNames/sr/WF=\u0412\u0430\u043b\u0438\u0441 \u0438 \u0424\u0443\u0442\u0443\u043d\u0430 -LocaleNames/sr/WS=\u0421\u0430\u043c\u043e\u0430 -LocaleNames/sr/YE=\u0408\u0435\u043c\u0435\u043d -LocaleNames/sr/YT=\u041c\u0430\u0458\u043e\u0442 -LocaleNames/sr/ZM=\u0417\u0430\u043c\u0431\u0438\u0458\u0430 -LocaleNames/sr/ZW=\u0417\u0438\u043c\u0431\u0430\u0431\u0432\u0435 +LocaleNames/sr/af=африканс +LocaleNames/sr/ar=арапски +LocaleNames/sr/be=белоруски +LocaleNames/sr/bg=бугарски +LocaleNames/sr/br=бретонски +LocaleNames/sr/ca=каталонски +LocaleNames/sr/co=корзикански +LocaleNames/sr/cs=чешки +LocaleNames/sr/da=дански +LocaleNames/sr/de=немачки +LocaleNames/sr/el=грчки +LocaleNames/sr/en=енглески +LocaleNames/sr/eo=есперанто +LocaleNames/sr/es=шпански +LocaleNames/sr/et=естонски +LocaleNames/sr/eu=баскијски +LocaleNames/sr/fa=персијски +LocaleNames/sr/fi=фински +LocaleNames/sr/fr=француски +LocaleNames/sr/ga=ирски +LocaleNames/sr/he=хебрејски +LocaleNames/sr/hi=хинди +LocaleNames/sr/hr=хрватски +LocaleNames/sr/hu=мађарски +LocaleNames/sr/hy=јерменски +LocaleNames/sr/id=индонежански +LocaleNames/sr/in=индонежански +LocaleNames/sr/is=исландски +LocaleNames/sr/it=италијански +LocaleNames/sr/iw=хебрејски +LocaleNames/sr/ja=јапански +LocaleNames/sr/ji=јидиш +LocaleNames/sr/ka=грузијски +LocaleNames/sr/km=кмерски +LocaleNames/sr/ko=корејски +LocaleNames/sr/ku=курдски +LocaleNames/sr/ky=киргиски +LocaleNames/sr/la=латински +LocaleNames/sr/lt=литвански +LocaleNames/sr/lv=летонски +LocaleNames/sr/mk=македонски +LocaleNames/sr/mn=монголски +LocaleNames/sr/mo=Молдавски +LocaleNames/sr/my=бурмански +LocaleNames/sr/nl=холандски +LocaleNames/sr/no=норвешки +LocaleNames/sr/pl=пољски +LocaleNames/sr/pt=португалски +LocaleNames/sr/rm=романш +LocaleNames/sr/ro=румунски +LocaleNames/sr/ru=руски +LocaleNames/sr/sa=санскрит +LocaleNames/sr/sk=словачки +LocaleNames/sr/sl=словеначки +LocaleNames/sr/sq=албански +LocaleNames/sr/sr=српски +LocaleNames/sr/sv=шведски +LocaleNames/sr/sw=свахили +LocaleNames/sr/tr=турски +LocaleNames/sr/uk=украјински +LocaleNames/sr/vi=вијетнамски +LocaleNames/sr/yi=јидиш +LocaleNames/sr/zh=кинески +LocaleNames/sr/AD=Андора +LocaleNames/sr/AE=Уједињени Арапски Емирати +LocaleNames/sr/AF=Авганистан +LocaleNames/sr/AL=Албанија +LocaleNames/sr/AM=Јерменија +LocaleNames/sr/AN=Холандски Антили +LocaleNames/sr/AO=Ангола +LocaleNames/sr/AR=Аргентина +LocaleNames/sr/AT=Аустрија +LocaleNames/sr/AU=Аустралија +LocaleNames/sr/AW=Аруба +LocaleNames/sr/AX=Оландска Острва +LocaleNames/sr/AZ=Азербејџан +LocaleNames/sr/BA=Босна и Херцеговина +LocaleNames/sr/BB=Барбадос +LocaleNames/sr/BD=Бангладеш +LocaleNames/sr/BE=Белгија +LocaleNames/sr/BF=Буркина Фасо +LocaleNames/sr/BG=Бугарска +LocaleNames/sr/BH=Бахреин +LocaleNames/sr/BI=Бурунди +LocaleNames/sr/BJ=Бенин +LocaleNames/sr/BM=Бермуда +LocaleNames/sr/BN=Брунеј +LocaleNames/sr/BO=Боливија +LocaleNames/sr/BR=Бразил +LocaleNames/sr/BS=Бахами +LocaleNames/sr/BT=Бутан +LocaleNames/sr/BV=Острво Буве +LocaleNames/sr/BW=Боцвана +LocaleNames/sr/BY=Белорусија +LocaleNames/sr/BZ=Белизе +LocaleNames/sr/CA=Канада +LocaleNames/sr/CC=Кокосова (Килингова) Острва +LocaleNames/sr/CD=Конго - Киншаса +LocaleNames/sr/CF=Централноафричка Република +LocaleNames/sr/CG=Конго - Бразавил +LocaleNames/sr/CH=Швајцарска +LocaleNames/sr/CI=Обала Слоноваче (Кот д’Ивоар) +LocaleNames/sr/CL=Чиле +LocaleNames/sr/CM=Камерун +LocaleNames/sr/CN=Кина +LocaleNames/sr/CO=Колумбија +LocaleNames/sr/CR=Костарика +LocaleNames/sr/CS=Србија и Црна Гора +LocaleNames/sr/CU=Куба +LocaleNames/sr/CV=Зеленортска Острва +LocaleNames/sr/CX=Божићно Острво +LocaleNames/sr/CY=Кипар +LocaleNames/sr/CZ=Чешка +LocaleNames/sr/DE=Немачка +LocaleNames/sr/DJ=Џибути +LocaleNames/sr/DK=Данска +LocaleNames/sr/DM=Доминика +LocaleNames/sr/DO=Доминиканска Република +LocaleNames/sr/DZ=Алжир +LocaleNames/sr/EC=Еквадор +LocaleNames/sr/EE=Естонија +LocaleNames/sr/EG=Египат +LocaleNames/sr/EH=Западна Сахара +LocaleNames/sr/ER=Еритреја +LocaleNames/sr/ES=Шпанија +LocaleNames/sr/ET=Етиопија +LocaleNames/sr/FI=Финска +LocaleNames/sr/FJ=Фиџи +LocaleNames/sr/FK=Фокландска Острва +LocaleNames/sr/FM=Микронезија +LocaleNames/sr/FO=Фарска Острва +LocaleNames/sr/FR=Француска +LocaleNames/sr/GA=Габон +LocaleNames/sr/GB=Уједињено Краљевство +LocaleNames/sr/GD=Гренада +LocaleNames/sr/GE=Грузија +LocaleNames/sr/GF=Француска Гвајана +LocaleNames/sr/GH=Гана +LocaleNames/sr/GI=Гибралтар +LocaleNames/sr/GL=Гренланд +LocaleNames/sr/GM=Гамбија +LocaleNames/sr/GN=Гвинеја +LocaleNames/sr/GP=Гваделуп +LocaleNames/sr/GQ=Екваторијална Гвинеја +LocaleNames/sr/GR=Грчка +LocaleNames/sr/GS=Јужна Џорџија и Јужна Сендвичка Острва +LocaleNames/sr/GT=Гватемала +LocaleNames/sr/GU=Гуам +LocaleNames/sr/GW=Гвинеја-Бисао +LocaleNames/sr/GY=Гвајана +LocaleNames/sr/HK=САР Хонгконг (Кина) +LocaleNames/sr/HM=Острво Херд и Мекдоналдова острва +LocaleNames/sr/HN=Хондурас +LocaleNames/sr/HR=Хрватска +LocaleNames/sr/HT=Хаити +LocaleNames/sr/HU=Мађарска +LocaleNames/sr/ID=Индонезија +LocaleNames/sr/IE=Ирска +LocaleNames/sr/IL=Израел +LocaleNames/sr/IN=Индија +LocaleNames/sr/IQ=Ирак +LocaleNames/sr/IR=Иран +LocaleNames/sr/IS=Исланд +LocaleNames/sr/IT=Италија +LocaleNames/sr/JM=Јамајка +LocaleNames/sr/JO=Јордан +LocaleNames/sr/JP=Јапан +LocaleNames/sr/KE=Кенија +LocaleNames/sr/KG=Киргистан +LocaleNames/sr/KH=Камбоџа +LocaleNames/sr/KI=Кирибати +LocaleNames/sr/KM=Коморска Острва +LocaleNames/sr/KN=Сент Китс и Невис +LocaleNames/sr/KP=Северна Кореја +LocaleNames/sr/KR=Јужна Кореја +LocaleNames/sr/KW=Кувајт +LocaleNames/sr/KY=Кајманска Острва +LocaleNames/sr/KZ=Казахстан +LocaleNames/sr/LA=Лаос +LocaleNames/sr/LB=Либан +LocaleNames/sr/LC=Света Луција +LocaleNames/sr/LI=Лихтенштајн +LocaleNames/sr/LK=Шри Ланка +LocaleNames/sr/LR=Либерија +LocaleNames/sr/LS=Лесото +LocaleNames/sr/LT=Литванија +LocaleNames/sr/LU=Луксембург +LocaleNames/sr/LV=Летонија +LocaleNames/sr/LY=Либија +LocaleNames/sr/MA=Мароко +LocaleNames/sr/MC=Монако +LocaleNames/sr/MD=Молдавија +LocaleNames/sr/MG=Мадагаскар +LocaleNames/sr/MH=Маршалска Острва +LocaleNames/sr/MK=Северна Македонија +LocaleNames/sr/ML=Мали +LocaleNames/sr/MM=Мијанмар (Бурма) +LocaleNames/sr/MN=Монголија +LocaleNames/sr/MO=САР Макао (Кина) +LocaleNames/sr/MP=Северна Маријанска Острва +LocaleNames/sr/MQ=Мартиник +LocaleNames/sr/MR=Мауританија +LocaleNames/sr/MS=Монсерат +LocaleNames/sr/MT=Малта +LocaleNames/sr/MU=Маурицијус +LocaleNames/sr/MV=Малдиви +LocaleNames/sr/MW=Малави +LocaleNames/sr/MX=Мексико +LocaleNames/sr/MY=Малезија +LocaleNames/sr/MZ=Мозамбик +LocaleNames/sr/NA=Намибија +LocaleNames/sr/NC=Нова Каледонија +LocaleNames/sr/NE=Нигер +LocaleNames/sr/NF=Острво Норфок +LocaleNames/sr/NG=Нигерија +LocaleNames/sr/NI=Никарагва +LocaleNames/sr/NL=Холандија +LocaleNames/sr/NO=Норвешка +LocaleNames/sr/NP=Непал +LocaleNames/sr/NR=Науру +LocaleNames/sr/NU=Ниуе +LocaleNames/sr/NZ=Нови Зеланд +LocaleNames/sr/OM=Оман +LocaleNames/sr/PA=Панама +LocaleNames/sr/PE=Перу +LocaleNames/sr/PF=Француска Полинезија +LocaleNames/sr/PG=Папуа Нова Гвинеја +LocaleNames/sr/PH=Филипини +LocaleNames/sr/PK=Пакистан +LocaleNames/sr/PL=Пољска +LocaleNames/sr/PM=Сен Пјер и Микелон +LocaleNames/sr/PN=Питкерн +LocaleNames/sr/PR=Порторико +LocaleNames/sr/PS=Палестинске територије +LocaleNames/sr/PT=Португалија +LocaleNames/sr/PW=Палау +LocaleNames/sr/PY=Парагвај +LocaleNames/sr/QA=Катар +LocaleNames/sr/RE=Реинион +LocaleNames/sr/RO=Румунија +LocaleNames/sr/RU=Русија +LocaleNames/sr/RW=Руанда +LocaleNames/sr/SA=Саудијска Арабија +LocaleNames/sr/SB=Соломонска Острва +LocaleNames/sr/SC=Сејшели +LocaleNames/sr/SD=Судан +LocaleNames/sr/SE=Шведска +LocaleNames/sr/SG=Сингапур +LocaleNames/sr/SH=Света Јелена +LocaleNames/sr/SI=Словенија +LocaleNames/sr/SJ=Свалбард и Јан Мајен +LocaleNames/sr/SK=Словачка +LocaleNames/sr/SL=Сијера Леоне +LocaleNames/sr/SM=Сан Марино +LocaleNames/sr/SN=Сенегал +LocaleNames/sr/SO=Сомалија +LocaleNames/sr/SR=Суринам +LocaleNames/sr/ST=Сао Томе и Принципе +LocaleNames/sr/SV=Салвадор +LocaleNames/sr/SY=Сирија +LocaleNames/sr/TC=Острва Туркс и Каикос +LocaleNames/sr/TD=Чад +LocaleNames/sr/TF=Француске Јужне Територије +LocaleNames/sr/TG=Того +LocaleNames/sr/TH=Тајланд +LocaleNames/sr/TJ=Таџикистан +LocaleNames/sr/TK=Токелау +LocaleNames/sr/TL=Тимор-Лесте (Источни Тимор) +LocaleNames/sr/TM=Туркменистан +LocaleNames/sr/TN=Тунис +LocaleNames/sr/TO=Тонга +LocaleNames/sr/TR=Турска +LocaleNames/sr/TT=Тринидад и Тобаго +LocaleNames/sr/TV=Тувалу +LocaleNames/sr/TW=Тајван +LocaleNames/sr/TZ=Танзанија +LocaleNames/sr/UA=Украјина +LocaleNames/sr/UG=Уганда +LocaleNames/sr/UM=Удаљена острва САД +LocaleNames/sr/US=Сједињене Државе +LocaleNames/sr/UY=Уругвај +LocaleNames/sr/UZ=Узбекистан +LocaleNames/sr/VA=Ватикан +LocaleNames/sr/VC=Сент Винсент и Гренадини +LocaleNames/sr/VE=Венецуела +LocaleNames/sr/VG=Британска Девичанска Острва +LocaleNames/sr/VI=Америчка Девичанска Острва +LocaleNames/sr/VN=Вијетнам +LocaleNames/sr/VU=Вануату +LocaleNames/sr/WF=Валис и Футуна +LocaleNames/sr/WS=Самоа +LocaleNames/sr/YE=Јемен +LocaleNames/sr/YT=Мајот +LocaleNames/sr/ZM=Замбија +LocaleNames/sr/ZW=Зимбабве CalendarData/sr/firstDayOfWeek=2 -CurrencyNames/sr_CS/EUR=\u20ac +CurrencyNames/sr_CS/EUR=€ # bug 6498742: data is changed -CurrencyNames/sr_BA/BAM=\u041a\u041c. +CurrencyNames/sr_BA/BAM=КМ. -CurrencyNames/sr_BA/EUR=\u20ac +CurrencyNames/sr_BA/EUR=€ # bug #6351682 Country name for Korean is wrong in Simplified Chinese -LocaleNames/zh/KP=\u671d\u9c9c -LocaleNames/zh/KR=\u97e9\u56fd +LocaleNames/zh/KP=朝鲜 +LocaleNames/zh/KR=韩国 # bug 6379382: Finnish time of day should be formatted as "H.mm.ss", not "hh:mm:ss" FormatData/fi/TimePatterns/0=H.mm.ss z FormatData/fi/TimePatterns/1='klo 'H.mm.ss # bug 6455680 Update locale data derived from CLDR1.3 to CLDR1.4 -LocaleNames/pt/CS=S\u00e9rvia e Montenegro +LocaleNames/pt/CS=Sérvia e Montenegro # bug 6498742: data for IR & ZW changed -LocaleNames/pt_PT/IR=Ir\u00e3 -LocaleNames/pt_PT/ZW=Zimb\u00e1bue +LocaleNames/pt_PT/IR=Irã +LocaleNames/pt_PT/ZW=Zimbábue -LocaleNames/el/ar=\u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el/be=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03b9\u03ba\u03ac -LocaleNames/el/bg=\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03b9\u03ba\u03ac -LocaleNames/el/bn=\u0392\u03b5\u03b3\u03b3\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/bo=\u0398\u03b9\u03b2\u03b5\u03c4\u03b9\u03b1\u03bd\u03ac -LocaleNames/el/bs=\u0392\u03bf\u03c3\u03bd\u03b9\u03b1\u03ba\u03ac -LocaleNames/el/ca=\u039a\u03b1\u03c4\u03b1\u03bb\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/co=\u039a\u03bf\u03c1\u03c3\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/cs=\u03a4\u03c3\u03b5\u03c7\u03b9\u03ba\u03ac -LocaleNames/el/cy=\u039f\u03c5\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/da=\u0394\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/de=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/el=\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/en=\u0391\u03b3\u03b3\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/es=\u0399\u03c3\u03c0\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/et=\u0395\u03c3\u03b8\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/eu=\u0392\u03b1\u03c3\u03ba\u03b9\u03ba\u03ac -LocaleNames/el/fa=\u03a0\u03b5\u03c1\u03c3\u03b9\u03ba\u03ac -LocaleNames/el/fi=\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/fr=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/ga=\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/gd=\u03a3\u03ba\u03c9\u03c4\u03b9\u03ba\u03ac \u039a\u03b5\u03bb\u03c4\u03b9\u03ba\u03ac -LocaleNames/el/he=\u0395\u03b2\u03c1\u03b1\u03ca\u03ba\u03ac -LocaleNames/el/hi=\u03a7\u03af\u03bd\u03c4\u03b9 -LocaleNames/el/hr=\u039a\u03c1\u03bf\u03b1\u03c4\u03b9\u03ba\u03ac -LocaleNames/el/hu=\u039f\u03c5\u03b3\u03b3\u03c1\u03b9\u03ba\u03ac -LocaleNames/el/hy=\u0391\u03c1\u03bc\u03b5\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/id=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03b9\u03b1\u03ba\u03ac -LocaleNames/el/in=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03b9\u03b1\u03ba\u03ac -LocaleNames/el/is=\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/it=\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/iw=\u0395\u03b2\u03c1\u03b1\u03ca\u03ba\u03ac -LocaleNames/el/ja=\u0399\u03b1\u03c0\u03c9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/ji=\u0393\u03af\u03bd\u03c4\u03b9\u03c2 -LocaleNames/el/ka=\u0393\u03b5\u03c9\u03c1\u03b3\u03b9\u03b1\u03bd\u03ac -LocaleNames/el/ko=\u039a\u03bf\u03c1\u03b5\u03b1\u03c4\u03b9\u03ba\u03ac -LocaleNames/el/la=\u039b\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/lt=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/lv=\u039b\u03b5\u03c4\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/mk=\u03a3\u03bb\u03b1\u03b2\u03bf\u03bc\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/mn=\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/mo=\u039c\u03bf\u03bb\u03b4\u03b1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el/mt=\u039c\u03b1\u03bb\u03c4\u03b5\u03b6\u03b9\u03ba\u03ac -LocaleNames/el/no=\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03b9\u03ba\u03ac -LocaleNames/el/pl=\u03a0\u03bf\u03bb\u03c9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/pt=\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/ro=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/ru=\u03a1\u03c9\u03c3\u03b9\u03ba\u03ac -LocaleNames/el/sk=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03b9\u03ba\u03ac -LocaleNames/el/sl=\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/sq=\u0391\u03bb\u03b2\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/sr=\u03a3\u03b5\u03c1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el/sv=\u03a3\u03bf\u03c5\u03b7\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/th=\u03a4\u03b1\u03ca\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/tr=\u03a4\u03bf\u03c5\u03c1\u03ba\u03b9\u03ba\u03ac -LocaleNames/el/uk=\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/vi=\u0392\u03b9\u03b5\u03c4\u03bd\u03b1\u03bc\u03b9\u03ba\u03ac -LocaleNames/el/yi=\u0393\u03af\u03bd\u03c4\u03b9\u03c2 -LocaleNames/el/zh=\u039a\u03b9\u03bd\u03b5\u03b6\u03b9\u03ba\u03ac -LocaleNames/el/AD=\u0391\u03bd\u03b4\u03cc\u03c1\u03b1 -LocaleNames/el/AE=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b1 \u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac \u0395\u03bc\u03b9\u03c1\u03ac\u03c4\u03b1 -LocaleNames/el/AF=\u0391\u03c6\u03b3\u03b1\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/AG=\u0391\u03bd\u03c4\u03af\u03b3\u03ba\u03bf\u03c5\u03b1 \u03ba\u03b1\u03b9 \u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03bf\u03cd\u03bd\u03c4\u03b1 -LocaleNames/el/AI=\u0391\u03bd\u03b3\u03ba\u03bf\u03c5\u03af\u03bb\u03b1 -LocaleNames/el/AL=\u0391\u03bb\u03b2\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/AM=\u0391\u03c1\u03bc\u03b5\u03bd\u03af\u03b1 -LocaleNames/el/AN=\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ad\u03c2 \u0391\u03bd\u03c4\u03af\u03bb\u03bb\u03b5\u03c2 -LocaleNames/el/AO=\u0391\u03b3\u03ba\u03cc\u03bb\u03b1 -LocaleNames/el/AQ=\u0391\u03bd\u03c4\u03b1\u03c1\u03ba\u03c4\u03b9\u03ba\u03ae -LocaleNames/el/AR=\u0391\u03c1\u03b3\u03b5\u03bd\u03c4\u03b9\u03bd\u03ae -LocaleNames/el/AS=\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u03a3\u03b1\u03bc\u03cc\u03b1 -LocaleNames/el/AT=\u0391\u03c5\u03c3\u03c4\u03c1\u03af\u03b1 -LocaleNames/el/AU=\u0391\u03c5\u03c3\u03c4\u03c1\u03b1\u03bb\u03af\u03b1 -LocaleNames/el/AW=\u0391\u03c1\u03bf\u03cd\u03bc\u03c0\u03b1 -LocaleNames/el/AX=\u039d\u03ae\u03c3\u03bf\u03b9 \u038c\u03bb\u03b1\u03bd\u03c4 -LocaleNames/el/AZ=\u0391\u03b6\u03b5\u03c1\u03bc\u03c0\u03b1\u03ca\u03c4\u03b6\u03ac\u03bd -LocaleNames/el/BA=\u0392\u03bf\u03c3\u03bd\u03af\u03b1 - \u0395\u03c1\u03b6\u03b5\u03b3\u03bf\u03b2\u03af\u03bd\u03b7 -LocaleNames/el/BB=\u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03ad\u03b9\u03bd\u03c4\u03bf\u03c2 -LocaleNames/el/BD=\u039c\u03c0\u03b1\u03bd\u03b3\u03ba\u03bb\u03b1\u03bd\u03c4\u03ad\u03c2 -LocaleNames/el/BE=\u0392\u03ad\u03bb\u03b3\u03b9\u03bf -LocaleNames/el/BF=\u039c\u03c0\u03bf\u03c5\u03c1\u03ba\u03af\u03bd\u03b1 \u03a6\u03ac\u03c3\u03bf -LocaleNames/el/BG=\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03af\u03b1 -LocaleNames/el/BH=\u039c\u03c0\u03b1\u03c7\u03c1\u03ad\u03b9\u03bd -LocaleNames/el/BI=\u039c\u03c0\u03bf\u03c5\u03c1\u03bf\u03cd\u03bd\u03c4\u03b9 -LocaleNames/el/BJ=\u039c\u03c0\u03b5\u03bd\u03af\u03bd -LocaleNames/el/BM=\u0392\u03b5\u03c1\u03bc\u03bf\u03cd\u03b4\u03b5\u03c2 -LocaleNames/el/BN=\u039c\u03c0\u03c1\u03bf\u03c5\u03bd\u03ad\u03b9 -LocaleNames/el/BO=\u0392\u03bf\u03bb\u03b9\u03b2\u03af\u03b1 -LocaleNames/el/BR=\u0392\u03c1\u03b1\u03b6\u03b9\u03bb\u03af\u03b1 -LocaleNames/el/BS=\u039c\u03c0\u03b1\u03c7\u03ac\u03bc\u03b5\u03c2 -LocaleNames/el/BT=\u039c\u03c0\u03bf\u03c5\u03c4\u03ac\u03bd -LocaleNames/el/BV=\u039d\u03ae\u03c3\u03bf\u03c2 \u039c\u03c0\u03bf\u03c5\u03b2\u03ad -LocaleNames/el/BW=\u039c\u03c0\u03bf\u03c4\u03c3\u03bf\u03c5\u03ac\u03bd\u03b1 -LocaleNames/el/BY=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03af\u03b1 -LocaleNames/el/BZ=\u039c\u03c0\u03b5\u03bb\u03af\u03b6 -LocaleNames/el/CA=\u039a\u03b1\u03bd\u03b1\u03b4\u03ac\u03c2 -LocaleNames/el/CC=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03cc\u03ba\u03bf\u03c2 (\u039a\u03af\u03bb\u03b9\u03bd\u03b3\u03ba) -LocaleNames/el/CD=\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039a\u03b9\u03bd\u03c3\u03ac\u03c3\u03b1 -LocaleNames/el/CF=\u039a\u03b5\u03bd\u03c4\u03c1\u03bf\u03b1\u03c6\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1 -LocaleNames/el/CG=\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039c\u03c0\u03c1\u03b1\u03b6\u03b1\u03b2\u03af\u03bb -LocaleNames/el/CH=\u0395\u03bb\u03b2\u03b5\u03c4\u03af\u03b1 -LocaleNames/el/CI=\u0391\u03ba\u03c4\u03ae \u0395\u03bb\u03b5\u03c6\u03b1\u03bd\u03c4\u03bf\u03c3\u03c4\u03bf\u03cd -LocaleNames/el/CK=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03bf\u03c5\u03ba -LocaleNames/el/CL=\u03a7\u03b9\u03bb\u03ae -LocaleNames/el/CM=\u039a\u03b1\u03bc\u03b5\u03c1\u03bf\u03cd\u03bd -LocaleNames/el/CN=\u039a\u03af\u03bd\u03b1 -LocaleNames/el/CO=\u039a\u03bf\u03bb\u03bf\u03bc\u03b2\u03af\u03b1 -LocaleNames/el/CR=\u039a\u03cc\u03c3\u03c4\u03b1 \u03a1\u03af\u03ba\u03b1 -LocaleNames/el/CS=\u03a3\u03b5\u03c1\u03b2\u03af\u03b1 \u03ba\u03b1\u03b9 \u039c\u03b1\u03c5\u03c1\u03bf\u03b2\u03bf\u03cd\u03bd\u03b9\u03bf -LocaleNames/el/CU=\u039a\u03bf\u03cd\u03b2\u03b1 -LocaleNames/el/CV=\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf \u0391\u03ba\u03c1\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf -LocaleNames/el/CX=\u039d\u03ae\u03c3\u03bf\u03c2 \u03c4\u03c9\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd -LocaleNames/el/CY=\u039a\u03cd\u03c0\u03c1\u03bf\u03c2 -LocaleNames/el/CZ=\u03a4\u03c3\u03b5\u03c7\u03af\u03b1 -LocaleNames/el/DE=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/DJ=\u03a4\u03b6\u03b9\u03bc\u03c0\u03bf\u03c5\u03c4\u03af -LocaleNames/el/DK=\u0394\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/DM=\u039d\u03c4\u03bf\u03bc\u03af\u03bd\u03b9\u03ba\u03b1 -LocaleNames/el/DO=\u0394\u03bf\u03bc\u03b9\u03bd\u03b9\u03ba\u03b1\u03bd\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1 -LocaleNames/el/DZ=\u0391\u03bb\u03b3\u03b5\u03c1\u03af\u03b1 -LocaleNames/el/EC=\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03cc\u03c2 -LocaleNames/el/EE=\u0395\u03c3\u03b8\u03bf\u03bd\u03af\u03b1 -LocaleNames/el/EG=\u0391\u03af\u03b3\u03c5\u03c0\u03c4\u03bf\u03c2 -LocaleNames/el/EH=\u0394\u03c5\u03c4\u03b9\u03ba\u03ae \u03a3\u03b1\u03c7\u03ac\u03c1\u03b1 -LocaleNames/el/ER=\u0395\u03c1\u03c5\u03b8\u03c1\u03b1\u03af\u03b1 -LocaleNames/el/ES=\u0399\u03c3\u03c0\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/ET=\u0391\u03b9\u03b8\u03b9\u03bf\u03c0\u03af\u03b1 -LocaleNames/el/FI=\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/FJ=\u03a6\u03af\u03c4\u03b6\u03b9 -LocaleNames/el/FK=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03cc\u03ba\u03bb\u03b1\u03bd\u03c4 -LocaleNames/el/FM=\u039c\u03b9\u03ba\u03c1\u03bf\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el/FO=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03b5\u03c1\u03cc\u03b5\u03c2 -LocaleNames/el/FR=\u0393\u03b1\u03bb\u03bb\u03af\u03b1 -LocaleNames/el/GA=\u0393\u03ba\u03b1\u03bc\u03c0\u03cc\u03bd -LocaleNames/el/GB=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03bf \u0392\u03b1\u03c3\u03af\u03bb\u03b5\u03b9\u03bf -LocaleNames/el/GD=\u0393\u03c1\u03b5\u03bd\u03ac\u03b4\u03b1 -LocaleNames/el/GE=\u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 -LocaleNames/el/GF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1 -LocaleNames/el/GH=\u0393\u03ba\u03ac\u03bd\u03b1 -LocaleNames/el/GI=\u0393\u03b9\u03b2\u03c1\u03b1\u03bb\u03c4\u03ac\u03c1 -LocaleNames/el/GL=\u0393\u03c1\u03bf\u03b9\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/GM=\u0393\u03ba\u03ac\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el/GN=\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el/GP=\u0393\u03bf\u03c5\u03b1\u03b4\u03b5\u03bb\u03bf\u03cd\u03c0\u03b7 -LocaleNames/el/GQ=\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el/GS=\u039d\u03ae\u03c3\u03bf\u03b9 \u039d\u03cc\u03c4\u03b9\u03b1 \u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 \u03ba\u03b1\u03b9 \u039d\u03cc\u03c4\u03b9\u03b5\u03c2 \u03a3\u03ac\u03bd\u03c4\u03bf\u03c5\u03b9\u03c4\u03c2 -LocaleNames/el/GT=\u0393\u03bf\u03c5\u03b1\u03c4\u03b5\u03bc\u03ac\u03bb\u03b1 -LocaleNames/el/GU=\u0393\u03ba\u03bf\u03c5\u03ac\u03bc -LocaleNames/el/GW=\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 \u039c\u03c0\u03b9\u03c3\u03ac\u03bf\u03c5 -LocaleNames/el/GY=\u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1 -LocaleNames/el/HK=\u03a7\u03bf\u03bd\u03b3\u03ba \u039a\u03bf\u03bd\u03b3\u03ba \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2 -LocaleNames/el/HM=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a7\u03b5\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u039c\u03b1\u03ba\u03bd\u03c4\u03cc\u03bd\u03b1\u03bb\u03bd\u03c4 -LocaleNames/el/HN=\u039f\u03bd\u03b4\u03bf\u03cd\u03c1\u03b1 -LocaleNames/el/HR=\u039a\u03c1\u03bf\u03b1\u03c4\u03af\u03b1 -LocaleNames/el/HT=\u0391\u03ca\u03c4\u03ae -LocaleNames/el/HU=\u039f\u03c5\u03b3\u03b3\u03b1\u03c1\u03af\u03b1 -LocaleNames/el/ID=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el/IE=\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/IL=\u0399\u03c3\u03c1\u03b1\u03ae\u03bb -LocaleNames/el/IN=\u0399\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/IO=\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 \u0399\u03bd\u03b4\u03b9\u03ba\u03bf\u03cd \u03a9\u03ba\u03b5\u03b1\u03bd\u03bf\u03cd -LocaleNames/el/IQ=\u0399\u03c1\u03ac\u03ba -LocaleNames/el/IR=\u0399\u03c1\u03ac\u03bd -LocaleNames/el/IS=\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/IT=\u0399\u03c4\u03b1\u03bb\u03af\u03b1 -LocaleNames/el/JM=\u03a4\u03b6\u03b1\u03bc\u03ac\u03b9\u03ba\u03b1 -LocaleNames/el/JO=\u0399\u03bf\u03c1\u03b4\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/JP=\u0399\u03b1\u03c0\u03c9\u03bd\u03af\u03b1 -LocaleNames/el/KE=\u039a\u03ad\u03bd\u03c5\u03b1 -LocaleNames/el/KG=\u039a\u03b9\u03c1\u03b3\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/KH=\u039a\u03b1\u03bc\u03c0\u03cc\u03c4\u03b6\u03b7 -LocaleNames/el/KI=\u039a\u03b9\u03c1\u03b9\u03bc\u03c0\u03ac\u03c4\u03b9 -LocaleNames/el/KM=\u039a\u03bf\u03bc\u03cc\u03c1\u03b5\u03c2 -LocaleNames/el/KN=\u03a3\u03b5\u03bd \u039a\u03b9\u03c4\u03c2 \u03ba\u03b1\u03b9 \u039d\u03ad\u03b2\u03b9\u03c2 -LocaleNames/el/KP=\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1 -LocaleNames/el/KR=\u039d\u03cc\u03c4\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1 -LocaleNames/el/KW=\u039a\u03bf\u03c5\u03b2\u03ad\u03b9\u03c4 -LocaleNames/el/KY=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03ad\u03b9\u03bc\u03b1\u03bd -LocaleNames/el/KZ=\u039a\u03b1\u03b6\u03b1\u03ba\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/LA=\u039b\u03ac\u03bf\u03c2 -LocaleNames/el/LB=\u039b\u03af\u03b2\u03b1\u03bd\u03bf\u03c2 -LocaleNames/el/LC=\u0391\u03b3\u03af\u03b1 \u039b\u03bf\u03c5\u03ba\u03af\u03b1 -LocaleNames/el/LI=\u039b\u03b9\u03c7\u03c4\u03b5\u03bd\u03c3\u03c4\u03ac\u03b9\u03bd -LocaleNames/el/LK=\u03a3\u03c1\u03b9 \u039b\u03ac\u03bd\u03ba\u03b1 -LocaleNames/el/LR=\u039b\u03b9\u03b2\u03b5\u03c1\u03af\u03b1 -LocaleNames/el/LS=\u039b\u03b5\u03c3\u03cc\u03c4\u03bf -LocaleNames/el/LT=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/LU=\u039b\u03bf\u03c5\u03be\u03b5\u03bc\u03b2\u03bf\u03cd\u03c1\u03b3\u03bf -LocaleNames/el/LV=\u039b\u03b5\u03c4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el/LY=\u039b\u03b9\u03b2\u03cd\u03b7 -LocaleNames/el/MA=\u039c\u03b1\u03c1\u03cc\u03ba\u03bf -LocaleNames/el/MC=\u039c\u03bf\u03bd\u03b1\u03ba\u03cc -LocaleNames/el/MD=\u039c\u03bf\u03bb\u03b4\u03b1\u03b2\u03af\u03b1 -LocaleNames/el/MG=\u039c\u03b1\u03b4\u03b1\u03b3\u03b1\u03c3\u03ba\u03ac\u03c1\u03b7 -LocaleNames/el/MH=\u039d\u03ae\u03c3\u03bf\u03b9 \u039c\u03ac\u03c1\u03c3\u03b1\u03bb -LocaleNames/el/MK=\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el/ML=\u039c\u03ac\u03bb\u03b9 -LocaleNames/el/MM=\u039c\u03b9\u03b1\u03bd\u03bc\u03ac\u03c1 (\u0392\u03b9\u03c1\u03bc\u03b1\u03bd\u03af\u03b1) -LocaleNames/el/MN=\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03af\u03b1 -LocaleNames/el/MO=\u039c\u03b1\u03ba\u03ac\u03bf \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2 -LocaleNames/el/MP=\u039d\u03ae\u03c3\u03bf\u03b9 \u0392\u03cc\u03c1\u03b5\u03b9\u03b5\u03c2 \u039c\u03b1\u03c1\u03b9\u03ac\u03bd\u03b5\u03c2 -LocaleNames/el/MQ=\u039c\u03b1\u03c1\u03c4\u03b9\u03bd\u03af\u03ba\u03b1 -LocaleNames/el/MR=\u039c\u03b1\u03c5\u03c1\u03b9\u03c4\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/MS=\u039c\u03bf\u03bd\u03c3\u03b5\u03c1\u03ac\u03c4 -LocaleNames/el/MT=\u039c\u03ac\u03bb\u03c4\u03b1 -LocaleNames/el/MU=\u039c\u03b1\u03c5\u03c1\u03af\u03ba\u03b9\u03bf\u03c2 -LocaleNames/el/MV=\u039c\u03b1\u03bb\u03b4\u03af\u03b2\u03b5\u03c2 -LocaleNames/el/MW=\u039c\u03b1\u03bb\u03ac\u03bf\u03c5\u03b9 -LocaleNames/el/MX=\u039c\u03b5\u03be\u03b9\u03ba\u03cc -LocaleNames/el/MY=\u039c\u03b1\u03bb\u03b1\u03b9\u03c3\u03af\u03b1 -LocaleNames/el/MZ=\u039c\u03bf\u03b6\u03b1\u03bc\u03b2\u03af\u03ba\u03b7 -LocaleNames/el/NA=\u039d\u03b1\u03bc\u03af\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el/NC=\u039d\u03ad\u03b1 \u039a\u03b1\u03bb\u03b7\u03b4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el/NE=\u039d\u03af\u03b3\u03b7\u03c1\u03b1\u03c2 -LocaleNames/el/NF=\u039d\u03ae\u03c3\u03bf\u03c2 \u039d\u03cc\u03c1\u03c6\u03bf\u03bb\u03ba -LocaleNames/el/NG=\u039d\u03b9\u03b3\u03b7\u03c1\u03af\u03b1 -LocaleNames/el/NI=\u039d\u03b9\u03ba\u03b1\u03c1\u03ac\u03b3\u03bf\u03c5\u03b1 -LocaleNames/el/NL=\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/NO=\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03af\u03b1 -LocaleNames/el/NP=\u039d\u03b5\u03c0\u03ac\u03bb -LocaleNames/el/NR=\u039d\u03b1\u03bf\u03c5\u03c1\u03bf\u03cd -LocaleNames/el/NU=\u039d\u03b9\u03bf\u03cd\u03b5 -LocaleNames/el/NZ=\u039d\u03ad\u03b1 \u0396\u03b7\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/OM=\u039f\u03bc\u03ac\u03bd -LocaleNames/el/PA=\u03a0\u03b1\u03bd\u03b1\u03bc\u03ac\u03c2 -LocaleNames/el/PE=\u03a0\u03b5\u03c1\u03bf\u03cd -LocaleNames/el/PF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u03a0\u03bf\u03bb\u03c5\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el/PG=\u03a0\u03b1\u03c0\u03bf\u03cd\u03b1 \u039d\u03ad\u03b1 \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el/PH=\u03a6\u03b9\u03bb\u03b9\u03c0\u03c0\u03af\u03bd\u03b5\u03c2 -LocaleNames/el/PK=\u03a0\u03b1\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/PL=\u03a0\u03bf\u03bb\u03c9\u03bd\u03af\u03b1 -LocaleNames/el/PM=\u03a3\u03b5\u03bd \u03a0\u03b9\u03b5\u03c1 \u03ba\u03b1\u03b9 \u039c\u03b9\u03ba\u03b5\u03bb\u03cc\u03bd -LocaleNames/el/PN=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a0\u03af\u03c4\u03ba\u03b5\u03c1\u03bd -LocaleNames/el/PR=\u03a0\u03bf\u03c5\u03ad\u03c1\u03c4\u03bf \u03a1\u03af\u03ba\u03bf -LocaleNames/el/PS=\u03a0\u03b1\u03bb\u03b1\u03b9\u03c3\u03c4\u03b9\u03bd\u03b9\u03b1\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 -LocaleNames/el/PT=\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03af\u03b1 -LocaleNames/el/PW=\u03a0\u03b1\u03bb\u03ac\u03bf\u03c5 -LocaleNames/el/PY=\u03a0\u03b1\u03c1\u03b1\u03b3\u03bf\u03c5\u03ac\u03b7 -LocaleNames/el/QA=\u039a\u03b1\u03c4\u03ac\u03c1 -LocaleNames/el/RE=\u03a1\u03b5\u03ca\u03bd\u03b9\u03cc\u03bd -LocaleNames/el/RO=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/RU=\u03a1\u03c9\u03c3\u03af\u03b1 -LocaleNames/el/RW=\u03a1\u03bf\u03c5\u03ac\u03bd\u03c4\u03b1 -LocaleNames/el/SA=\u03a3\u03b1\u03bf\u03c5\u03b4\u03b9\u03ba\u03ae \u0391\u03c1\u03b1\u03b2\u03af\u03b1 -LocaleNames/el/SB=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a3\u03bf\u03bb\u03bf\u03bc\u03ce\u03bd\u03c4\u03bf\u03c2 -LocaleNames/el/SC=\u03a3\u03b5\u03cb\u03c7\u03ad\u03bb\u03bb\u03b5\u03c2 -LocaleNames/el/SD=\u03a3\u03bf\u03c5\u03b4\u03ac\u03bd -LocaleNames/el/SE=\u03a3\u03bf\u03c5\u03b7\u03b4\u03af\u03b1 -LocaleNames/el/SG=\u03a3\u03b9\u03b3\u03ba\u03b1\u03c0\u03bf\u03cd\u03c1\u03b7 -LocaleNames/el/SH=\u0391\u03b3\u03af\u03b1 \u0395\u03bb\u03ad\u03bd\u03b7 -LocaleNames/el/SI=\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03af\u03b1 -LocaleNames/el/SJ=\u03a3\u03b2\u03ac\u03bb\u03bc\u03c0\u03b1\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u0393\u03b9\u03b1\u03bd \u039c\u03b1\u03b3\u03b9\u03ad\u03bd -LocaleNames/el/SK=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03af\u03b1 -LocaleNames/el/SL=\u03a3\u03b9\u03ad\u03c1\u03b1 \u039b\u03b5\u03cc\u03bd\u03b5 -LocaleNames/el/SM=\u0386\u03b3\u03b9\u03bf\u03c2 \u039c\u03b1\u03c1\u03af\u03bd\u03bf\u03c2 -LocaleNames/el/SN=\u03a3\u03b5\u03bd\u03b5\u03b3\u03ac\u03bb\u03b7 -LocaleNames/el/SO=\u03a3\u03bf\u03bc\u03b1\u03bb\u03af\u03b1 -LocaleNames/el/SR=\u03a3\u03bf\u03c5\u03c1\u03b9\u03bd\u03ac\u03bc -LocaleNames/el/ST=\u03a3\u03ac\u03bf \u03a4\u03bf\u03bc\u03ad \u03ba\u03b1\u03b9 \u03a0\u03c1\u03af\u03bd\u03c3\u03b9\u03c0\u03b5 -LocaleNames/el/SV=\u0395\u03bb \u03a3\u03b1\u03bb\u03b2\u03b1\u03b4\u03cc\u03c1 -LocaleNames/el/SY=\u03a3\u03c5\u03c1\u03af\u03b1 -LocaleNames/el/TC=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a4\u03b5\u03c1\u03ba\u03c2 \u03ba\u03b1\u03b9 \u039a\u03ac\u03b9\u03ba\u03bf\u03c2 -LocaleNames/el/TD=\u03a4\u03c3\u03b1\u03bd\u03c4 -LocaleNames/el/TF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac \u039d\u03cc\u03c4\u03b9\u03b1 \u0395\u03b4\u03ac\u03c6\u03b7 -LocaleNames/el/TG=\u03a4\u03cc\u03b3\u03ba\u03bf -LocaleNames/el/TH=\u03a4\u03b1\u03ca\u03bb\u03ac\u03bd\u03b4\u03b7 -LocaleNames/el/TJ=\u03a4\u03b1\u03c4\u03b6\u03b9\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/TK=\u03a4\u03bf\u03ba\u03b5\u03bb\u03ac\u03bf\u03c5 -LocaleNames/el/TL=\u03a4\u03b9\u03bc\u03cc\u03c1-\u039b\u03ad\u03c3\u03c4\u03b5 -LocaleNames/el/TM=\u03a4\u03bf\u03c5\u03c1\u03ba\u03bc\u03b5\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/TN=\u03a4\u03c5\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el/TO=\u03a4\u03cc\u03bd\u03b3\u03ba\u03b1 -LocaleNames/el/TR=\u03a4\u03bf\u03c5\u03c1\u03ba\u03af\u03b1 -LocaleNames/el/TT=\u03a4\u03c1\u03b9\u03bd\u03b9\u03bd\u03c4\u03ac\u03bd\u03c4 \u03ba\u03b1\u03b9 \u03a4\u03bf\u03bc\u03c0\u03ac\u03b3\u03ba\u03bf -LocaleNames/el/TV=\u03a4\u03bf\u03c5\u03b2\u03b1\u03bb\u03bf\u03cd -LocaleNames/el/TW=\u03a4\u03b1\u03ca\u03b2\u03ac\u03bd -LocaleNames/el/TZ=\u03a4\u03b1\u03bd\u03b6\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/UA=\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/UG=\u039f\u03c5\u03b3\u03ba\u03ac\u03bd\u03c4\u03b1 -LocaleNames/el/UM=\u0391\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u039d\u03b7\u03c3\u03af\u03b4\u03b5\u03c2 \u0397\u03a0\u0391 -LocaleNames/el/US=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a0\u03bf\u03bb\u03b9\u03c4\u03b5\u03af\u03b5\u03c2 -LocaleNames/el/UY=\u039f\u03c5\u03c1\u03bf\u03c5\u03b3\u03bf\u03c5\u03ac\u03b7 -LocaleNames/el/UZ=\u039f\u03c5\u03b6\u03bc\u03c0\u03b5\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/VA=\u0392\u03b1\u03c4\u03b9\u03ba\u03b1\u03bd\u03cc -LocaleNames/el/VC=\u0386\u03b3\u03b9\u03bf\u03c2 \u0392\u03b9\u03ba\u03ad\u03bd\u03c4\u03b9\u03bf\u03c2 \u03ba\u03b1\u03b9 \u0393\u03c1\u03b5\u03bd\u03b1\u03b4\u03af\u03bd\u03b5\u03c2 -LocaleNames/el/VE=\u0392\u03b5\u03bd\u03b5\u03b6\u03bf\u03c5\u03ad\u03bb\u03b1 -LocaleNames/el/VG=\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9 -LocaleNames/el/VI=\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9 -LocaleNames/el/VN=\u0392\u03b9\u03b5\u03c4\u03bd\u03ac\u03bc -LocaleNames/el/VU=\u0392\u03b1\u03bd\u03bf\u03c5\u03ac\u03c4\u03bf\u03c5 -LocaleNames/el/WF=\u0393\u03bf\u03c5\u03ac\u03bb\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03a6\u03bf\u03c5\u03c4\u03bf\u03cd\u03bd\u03b1 -LocaleNames/el/WS=\u03a3\u03b1\u03bc\u03cc\u03b1 -LocaleNames/el/YE=\u03a5\u03b5\u03bc\u03ad\u03bd\u03b7 -LocaleNames/el/YT=\u039c\u03b1\u03b3\u03b9\u03cc\u03c4 -LocaleNames/el/ZA=\u039d\u03cc\u03c4\u03b9\u03b1 \u0391\u03c6\u03c1\u03b9\u03ba\u03ae -LocaleNames/el/ZM=\u0396\u03ac\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el/ZW=\u0396\u03b9\u03bc\u03c0\u03ac\u03bc\u03c0\u03bf\u03c5\u03b5 +LocaleNames/el/ar=Αραβικά +LocaleNames/el/be=Λευκορωσικά +LocaleNames/el/bg=Βουλγαρικά +LocaleNames/el/bn=Βεγγαλικά +LocaleNames/el/bo=Θιβετιανά +LocaleNames/el/bs=Βοσνιακά +LocaleNames/el/ca=Καταλανικά +LocaleNames/el/co=Κορσικανικά +LocaleNames/el/cs=Τσεχικά +LocaleNames/el/cy=Ουαλικά +LocaleNames/el/da=Δανικά +LocaleNames/el/de=Γερμανικά +LocaleNames/el/el=Ελληνικά +LocaleNames/el/en=Αγγλικά +LocaleNames/el/es=Ισπανικά +LocaleNames/el/et=Εσθονικά +LocaleNames/el/eu=Βασκικά +LocaleNames/el/fa=Περσικά +LocaleNames/el/fi=Φινλανδικά +LocaleNames/el/fr=Γαλλικά +LocaleNames/el/ga=Ιρλανδικά +LocaleNames/el/gd=Σκωτικά Κελτικά +LocaleNames/el/he=Εβραϊκά +LocaleNames/el/hi=Χίντι +LocaleNames/el/hr=Κροατικά +LocaleNames/el/hu=Ουγγρικά +LocaleNames/el/hy=Αρμενικά +LocaleNames/el/id=Ινδονησιακά +LocaleNames/el/in=Ινδονησιακά +LocaleNames/el/is=Ισλανδικά +LocaleNames/el/it=Ιταλικά +LocaleNames/el/iw=Εβραϊκά +LocaleNames/el/ja=Ιαπωνικά +LocaleNames/el/ji=Γίντις +LocaleNames/el/ka=Γεωργιανά +LocaleNames/el/ko=Κορεατικά +LocaleNames/el/la=Λατινικά +LocaleNames/el/lt=Λιθουανικά +LocaleNames/el/lv=Λετονικά +LocaleNames/el/mk=Σλαβομακεδονικά +LocaleNames/el/mn=Μογγολικά +LocaleNames/el/mo=Μολδαβικά +LocaleNames/el/mt=Μαλτεζικά +LocaleNames/el/no=Νορβηγικά +LocaleNames/el/pl=Πολωνικά +LocaleNames/el/pt=Πορτογαλικά +LocaleNames/el/ro=Ρουμανικά +LocaleNames/el/ru=Ρωσικά +LocaleNames/el/sk=Σλοβακικά +LocaleNames/el/sl=Σλοβενικά +LocaleNames/el/sq=Αλβανικά +LocaleNames/el/sr=Σερβικά +LocaleNames/el/sv=Σουηδικά +LocaleNames/el/th=Ταϊλανδικά +LocaleNames/el/tr=Τουρκικά +LocaleNames/el/uk=Ουκρανικά +LocaleNames/el/vi=Βιετναμικά +LocaleNames/el/yi=Γίντις +LocaleNames/el/zh=Κινεζικά +LocaleNames/el/AD=Ανδόρα +LocaleNames/el/AE=Ηνωμένα Αραβικά Εμιράτα +LocaleNames/el/AF=Αφγανιστάν +LocaleNames/el/AG=Αντίγκουα και Μπαρμπούντα +LocaleNames/el/AI=Ανγκουίλα +LocaleNames/el/AL=Αλβανία +LocaleNames/el/AM=Αρμενία +LocaleNames/el/AN=Ολλανδικές Αντίλλες +LocaleNames/el/AO=Αγκόλα +LocaleNames/el/AQ=Ανταρκτική +LocaleNames/el/AR=Αργεντινή +LocaleNames/el/AS=Αμερικανική Σαμόα +LocaleNames/el/AT=Αυστρία +LocaleNames/el/AU=Αυστραλία +LocaleNames/el/AW=Αρούμπα +LocaleNames/el/AX=Νήσοι Όλαντ +LocaleNames/el/AZ=Αζερμπαϊτζάν +LocaleNames/el/BA=Βοσνία - Ερζεγοβίνη +LocaleNames/el/BB=Μπαρμπέιντος +LocaleNames/el/BD=Μπανγκλαντές +LocaleNames/el/BE=Βέλγιο +LocaleNames/el/BF=Μπουρκίνα Φάσο +LocaleNames/el/BG=Βουλγαρία +LocaleNames/el/BH=Μπαχρέιν +LocaleNames/el/BI=Μπουρούντι +LocaleNames/el/BJ=Μπενίν +LocaleNames/el/BM=Βερμούδες +LocaleNames/el/BN=Μπρουνέι +LocaleNames/el/BO=Βολιβία +LocaleNames/el/BR=Βραζιλία +LocaleNames/el/BS=Μπαχάμες +LocaleNames/el/BT=Μπουτάν +LocaleNames/el/BV=Νήσος Μπουβέ +LocaleNames/el/BW=Μποτσουάνα +LocaleNames/el/BY=Λευκορωσία +LocaleNames/el/BZ=Μπελίζ +LocaleNames/el/CA=Καναδάς +LocaleNames/el/CC=Νήσοι Κόκος (Κίλινγκ) +LocaleNames/el/CD=Κονγκό - Κινσάσα +LocaleNames/el/CF=Κεντροαφρικανική Δημοκρατία +LocaleNames/el/CG=Κονγκό - Μπραζαβίλ +LocaleNames/el/CH=Ελβετία +LocaleNames/el/CI=Ακτή Ελεφαντοστού +LocaleNames/el/CK=Νήσοι Κουκ +LocaleNames/el/CL=Χιλή +LocaleNames/el/CM=Καμερούν +LocaleNames/el/CN=Κίνα +LocaleNames/el/CO=Κολομβία +LocaleNames/el/CR=Κόστα Ρίκα +LocaleNames/el/CS=Σερβία και Μαυροβούνιο +LocaleNames/el/CU=Κούβα +LocaleNames/el/CV=Πράσινο Ακρωτήριο +LocaleNames/el/CX=Νήσος των Χριστουγέννων +LocaleNames/el/CY=Κύπρος +LocaleNames/el/CZ=Τσεχία +LocaleNames/el/DE=Γερμανία +LocaleNames/el/DJ=Τζιμπουτί +LocaleNames/el/DK=Δανία +LocaleNames/el/DM=Ντομίνικα +LocaleNames/el/DO=Δομινικανή Δημοκρατία +LocaleNames/el/DZ=Αλγερία +LocaleNames/el/EC=Ισημερινός +LocaleNames/el/EE=Εσθονία +LocaleNames/el/EG=Αίγυπτος +LocaleNames/el/EH=Δυτική Σαχάρα +LocaleNames/el/ER=Ερυθραία +LocaleNames/el/ES=Ισπανία +LocaleNames/el/ET=Αιθιοπία +LocaleNames/el/FI=Φινλανδία +LocaleNames/el/FJ=Φίτζι +LocaleNames/el/FK=Νήσοι Φόκλαντ +LocaleNames/el/FM=Μικρονησία +LocaleNames/el/FO=Νήσοι Φερόες +LocaleNames/el/FR=Γαλλία +LocaleNames/el/GA=Γκαμπόν +LocaleNames/el/GB=Ηνωμένο Βασίλειο +LocaleNames/el/GD=Γρενάδα +LocaleNames/el/GE=Γεωργία +LocaleNames/el/GF=Γαλλική Γουιάνα +LocaleNames/el/GH=Γκάνα +LocaleNames/el/GI=Γιβραλτάρ +LocaleNames/el/GL=Γροιλανδία +LocaleNames/el/GM=Γκάμπια +LocaleNames/el/GN=Γουινέα +LocaleNames/el/GP=Γουαδελούπη +LocaleNames/el/GQ=Ισημερινή Γουινέα +LocaleNames/el/GS=Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς +LocaleNames/el/GT=Γουατεμάλα +LocaleNames/el/GU=Γκουάμ +LocaleNames/el/GW=Γουινέα Μπισάου +LocaleNames/el/GY=Γουιάνα +LocaleNames/el/HK=Χονγκ Κονγκ ΕΔΠ Κίνας +LocaleNames/el/HM=Νήσοι Χερντ και Μακντόναλντ +LocaleNames/el/HN=Ονδούρα +LocaleNames/el/HR=Κροατία +LocaleNames/el/HT=Αϊτή +LocaleNames/el/HU=Ουγγαρία +LocaleNames/el/ID=Ινδονησία +LocaleNames/el/IE=Ιρλανδία +LocaleNames/el/IL=Ισραήλ +LocaleNames/el/IN=Ινδία +LocaleNames/el/IO=Βρετανικά Εδάφη Ινδικού Ωκεανού +LocaleNames/el/IQ=Ιράκ +LocaleNames/el/IR=Ιράν +LocaleNames/el/IS=Ισλανδία +LocaleNames/el/IT=Ιταλία +LocaleNames/el/JM=Τζαμάικα +LocaleNames/el/JO=Ιορδανία +LocaleNames/el/JP=Ιαπωνία +LocaleNames/el/KE=Κένυα +LocaleNames/el/KG=Κιργιστάν +LocaleNames/el/KH=Καμπότζη +LocaleNames/el/KI=Κιριμπάτι +LocaleNames/el/KM=Κομόρες +LocaleNames/el/KN=Σεν Κιτς και Νέβις +LocaleNames/el/KP=Βόρεια Κορέα +LocaleNames/el/KR=Νότια Κορέα +LocaleNames/el/KW=Κουβέιτ +LocaleNames/el/KY=Νήσοι Κέιμαν +LocaleNames/el/KZ=Καζακστάν +LocaleNames/el/LA=Λάος +LocaleNames/el/LB=Λίβανος +LocaleNames/el/LC=Αγία Λουκία +LocaleNames/el/LI=Λιχτενστάιν +LocaleNames/el/LK=Σρι Λάνκα +LocaleNames/el/LR=Λιβερία +LocaleNames/el/LS=Λεσότο +LocaleNames/el/LT=Λιθουανία +LocaleNames/el/LU=Λουξεμβούργο +LocaleNames/el/LV=Λετονία +LocaleNames/el/LY=Λιβύη +LocaleNames/el/MA=Μαρόκο +LocaleNames/el/MC=Μονακό +LocaleNames/el/MD=Μολδαβία +LocaleNames/el/MG=Μαδαγασκάρη +LocaleNames/el/MH=Νήσοι Μάρσαλ +LocaleNames/el/MK=Βόρεια Μακεδονία +LocaleNames/el/ML=Μάλι +LocaleNames/el/MM=Μιανμάρ (Βιρμανία) +LocaleNames/el/MN=Μογγολία +LocaleNames/el/MO=Μακάο ΕΔΠ Κίνας +LocaleNames/el/MP=Νήσοι Βόρειες Μαριάνες +LocaleNames/el/MQ=Μαρτινίκα +LocaleNames/el/MR=Μαυριτανία +LocaleNames/el/MS=Μονσεράτ +LocaleNames/el/MT=Μάλτα +LocaleNames/el/MU=Μαυρίκιος +LocaleNames/el/MV=Μαλδίβες +LocaleNames/el/MW=Μαλάουι +LocaleNames/el/MX=Μεξικό +LocaleNames/el/MY=Μαλαισία +LocaleNames/el/MZ=Μοζαμβίκη +LocaleNames/el/NA=Ναμίμπια +LocaleNames/el/NC=Νέα Καληδονία +LocaleNames/el/NE=Νίγηρας +LocaleNames/el/NF=Νήσος Νόρφολκ +LocaleNames/el/NG=Νιγηρία +LocaleNames/el/NI=Νικαράγουα +LocaleNames/el/NL=Ολλανδία +LocaleNames/el/NO=Νορβηγία +LocaleNames/el/NP=Νεπάλ +LocaleNames/el/NR=Ναουρού +LocaleNames/el/NU=Νιούε +LocaleNames/el/NZ=Νέα Ζηλανδία +LocaleNames/el/OM=Ομάν +LocaleNames/el/PA=Παναμάς +LocaleNames/el/PE=Περού +LocaleNames/el/PF=Γαλλική Πολυνησία +LocaleNames/el/PG=Παπούα Νέα Γουινέα +LocaleNames/el/PH=Φιλιππίνες +LocaleNames/el/PK=Πακιστάν +LocaleNames/el/PL=Πολωνία +LocaleNames/el/PM=Σεν Πιερ και Μικελόν +LocaleNames/el/PN=Νήσοι Πίτκερν +LocaleNames/el/PR=Πουέρτο Ρίκο +LocaleNames/el/PS=Παλαιστινιακά Εδάφη +LocaleNames/el/PT=Πορτογαλία +LocaleNames/el/PW=Παλάου +LocaleNames/el/PY=Παραγουάη +LocaleNames/el/QA=Κατάρ +LocaleNames/el/RE=Ρεϊνιόν +LocaleNames/el/RO=Ρουμανία +LocaleNames/el/RU=Ρωσία +LocaleNames/el/RW=Ρουάντα +LocaleNames/el/SA=Σαουδική Αραβία +LocaleNames/el/SB=Νήσοι Σολομώντος +LocaleNames/el/SC=Σεϋχέλλες +LocaleNames/el/SD=Σουδάν +LocaleNames/el/SE=Σουηδία +LocaleNames/el/SG=Σιγκαπούρη +LocaleNames/el/SH=Αγία Ελένη +LocaleNames/el/SI=Σλοβενία +LocaleNames/el/SJ=Σβάλμπαρντ και Γιαν Μαγιέν +LocaleNames/el/SK=Σλοβακία +LocaleNames/el/SL=Σιέρα Λεόνε +LocaleNames/el/SM=Άγιος Μαρίνος +LocaleNames/el/SN=Σενεγάλη +LocaleNames/el/SO=Σομαλία +LocaleNames/el/SR=Σουρινάμ +LocaleNames/el/ST=Σάο Τομέ και Πρίνσιπε +LocaleNames/el/SV=Ελ Σαλβαδόρ +LocaleNames/el/SY=Συρία +LocaleNames/el/TC=Νήσοι Τερκς και Κάικος +LocaleNames/el/TD=Τσαντ +LocaleNames/el/TF=Γαλλικά Νότια Εδάφη +LocaleNames/el/TG=Τόγκο +LocaleNames/el/TH=Ταϊλάνδη +LocaleNames/el/TJ=Τατζικιστάν +LocaleNames/el/TK=Τοκελάου +LocaleNames/el/TL=Τιμόρ-Λέστε +LocaleNames/el/TM=Τουρκμενιστάν +LocaleNames/el/TN=Τυνησία +LocaleNames/el/TO=Τόνγκα +LocaleNames/el/TR=Τουρκία +LocaleNames/el/TT=Τρινιντάντ και Τομπάγκο +LocaleNames/el/TV=Τουβαλού +LocaleNames/el/TW=Ταϊβάν +LocaleNames/el/TZ=Τανζανία +LocaleNames/el/UA=Ουκρανία +LocaleNames/el/UG=Ουγκάντα +LocaleNames/el/UM=Απομακρυσμένες Νησίδες ΗΠΑ +LocaleNames/el/US=Ηνωμένες Πολιτείες +LocaleNames/el/UY=Ουρουγουάη +LocaleNames/el/UZ=Ουζμπεκιστάν +LocaleNames/el/VA=Βατικανό +LocaleNames/el/VC=Άγιος Βικέντιος και Γρεναδίνες +LocaleNames/el/VE=Βενεζουέλα +LocaleNames/el/VG=Βρετανικές Παρθένες Νήσοι +LocaleNames/el/VI=Αμερικανικές Παρθένες Νήσοι +LocaleNames/el/VN=Βιετνάμ +LocaleNames/el/VU=Βανουάτου +LocaleNames/el/WF=Γουάλις και Φουτούνα +LocaleNames/el/WS=Σαμόα +LocaleNames/el/YE=Υεμένη +LocaleNames/el/YT=Μαγιότ +LocaleNames/el/ZA=Νότια Αφρική +LocaleNames/el/ZM=Ζάμπια +LocaleNames/el/ZW=Ζιμπάμπουε LocaleNames/en_MT/fy=Western Frisian LocaleNames/en_MT/gl=Galician LocaleNames/en_MT/ps=Pashto -LocaleNames/en_MT/AX=\u00c5land Islands +LocaleNames/en_MT/AX=Åland Islands LocaleNames/en_MT/CD=Congo - Kinshasa LocaleNames/en_MT/CG=Congo - Brazzaville LocaleNames/en_MT/CS=Serbia And Montenegro @@ -4986,7 +4986,7 @@ LocaleNames/en_PH/fy=Western Frisian LocaleNames/en_PH/gl=Galician LocaleNames/en_PH/ps=Pashto -LocaleNames/en_PH/AX=\u00c5land Islands +LocaleNames/en_PH/AX=Åland Islands LocaleNames/en_PH/CD=Congo - Kinshasa LocaleNames/en_PH/CG=Congo - Brazzaville LocaleNames/en_PH/CS=Serbia And Montenegro @@ -4996,7 +4996,7 @@ LocaleNames/en_SG/fy=Western Frisian LocaleNames/en_SG/gl=Galician LocaleNames/en_SG/ps=Pashto -LocaleNames/en_SG/AX=\u00c5land Islands +LocaleNames/en_SG/AX=Åland Islands LocaleNames/en_SG/CD=Congo - Kinshasa LocaleNames/en_SG/CG=Congo - Brazzaville LocaleNames/en_SG/CS=Serbia And Montenegro @@ -5005,54 +5005,54 @@ LocaleNames/es_US/ab=abjasio LocaleNames/es_US/dz=dzongkha LocaleNames/es_US/fj=fiyiano -LocaleNames/es_US/si=cingal\u00e9s -LocaleNames/es_US/ti=tigri\u00f1a -LocaleNames/es_US/vo=volap\u00fck -LocaleNames/es_US/AX=Islas \u00c5land -LocaleNames/es_US/BH=Bar\u00e9in -LocaleNames/es_US/KG=Kirguist\u00e1n -LocaleNames/mt/ab=Abka\u017cjan +LocaleNames/es_US/si=cingalés +LocaleNames/es_US/ti=tigriña +LocaleNames/es_US/vo=volapük +LocaleNames/es_US/AX=Islas Åland +LocaleNames/es_US/BH=Baréin +LocaleNames/es_US/KG=Kirguistán +LocaleNames/mt/ab=Abkażjan LocaleNames/mt/af=Afrikans LocaleNames/mt/am=Amhariku -LocaleNames/mt/ar=G\u0127arbi +LocaleNames/mt/ar=Għarbi LocaleNames/mt/av=Avarik LocaleNames/mt/ay=Aymara -LocaleNames/mt/az=A\u017cerbaj\u0121ani +LocaleNames/mt/az=Ażerbajġani LocaleNames/mt/ba=Bashkir LocaleNames/mt/be=Belarussu LocaleNames/mt/bg=Bulgaru -LocaleNames/mt/bh=Bi\u0127ari +LocaleNames/mt/bh=Biħari LocaleNames/mt/bo=Tibetjan LocaleNames/mt/br=Breton -LocaleNames/mt/bs=Bo\u017cnijaku +LocaleNames/mt/bs=Bożnijaku LocaleNames/mt/ca=Katalan LocaleNames/mt/ce=Chechen LocaleNames/mt/ch=Chamorro LocaleNames/mt/co=Korsiku LocaleNames/mt/cr=Cree -LocaleNames/mt/cs=\u010aek +LocaleNames/mt/cs=Ċek LocaleNames/mt/cu=Slaviku tal-Knisja LocaleNames/mt/cv=Chuvash LocaleNames/mt/cy=Welsh -LocaleNames/mt/da=Dani\u017c -LocaleNames/mt/de=\u0120ermani\u017c +LocaleNames/mt/da=Daniż +LocaleNames/mt/de=Ġermaniż LocaleNames/mt/dv=Divehi LocaleNames/mt/dz=Dzongkha LocaleNames/mt/el=Grieg -LocaleNames/mt/en=Ingli\u017c +LocaleNames/mt/en=Ingliż LocaleNames/mt/es=Spanjol LocaleNames/mt/et=Estonjan LocaleNames/mt/eu=Bask LocaleNames/mt/fa=Persjan LocaleNames/mt/ff=Fulah -LocaleNames/mt/fi=Finlandi\u017c -LocaleNames/mt/fj=Fi\u0121jan +LocaleNames/mt/fi=Finlandiż +LocaleNames/mt/fj=Fiġjan LocaleNames/mt/fo=Faroese -LocaleNames/mt/fr=Fran\u010bi\u017c +LocaleNames/mt/fr=Franċiż LocaleNames/mt/fy=Frisian tal-Punent -LocaleNames/mt/ga=Irlandi\u017c -LocaleNames/mt/gd=Galliku Sko\u010b\u010bi\u017c -LocaleNames/mt/gl=Gali\u010bjan +LocaleNames/mt/ga=Irlandiż +LocaleNames/mt/gd=Galliku Skoċċiż +LocaleNames/mt/gl=Galiċjan LocaleNames/mt/gn=Guarani LocaleNames/mt/gu=Gujarati LocaleNames/mt/gv=Manx @@ -5061,63 +5061,63 @@ LocaleNames/mt/hi=Hindi LocaleNames/mt/ho=Hiri Motu LocaleNames/mt/hr=Kroat -LocaleNames/mt/hu=Ungeri\u017c +LocaleNames/mt/hu=Ungeriż LocaleNames/mt/hy=Armen LocaleNames/mt/hz=Herero -LocaleNames/mt/id=Indone\u017cjan +LocaleNames/mt/id=Indoneżjan LocaleNames/mt/ik=Inupjak -LocaleNames/mt/in=Indone\u017cjan -LocaleNames/mt/is=I\u017clandi\u017c +LocaleNames/mt/in=Indoneżjan +LocaleNames/mt/is=Iżlandiż LocaleNames/mt/it=Taljan LocaleNames/mt/iu=Inuktitut LocaleNames/mt/iw=Ebrajk -LocaleNames/mt/ja=\u0120appuni\u017c +LocaleNames/mt/ja=Ġappuniż LocaleNames/mt/ji=Yiddish -LocaleNames/mt/jv=\u0120avani\u017c -LocaleNames/mt/ka=\u0120or\u0121jan +LocaleNames/mt/jv=Ġavaniż +LocaleNames/mt/ka=Ġorġjan LocaleNames/mt/ki=Kikuju LocaleNames/mt/kj=Kuanyama -LocaleNames/mt/kk=Ka\u017cak +LocaleNames/mt/kk=Każak LocaleNames/mt/kl=Kalallisut LocaleNames/mt/km=Khmer LocaleNames/mt/ko=Korean LocaleNames/mt/ks=Kashmiri LocaleNames/mt/ku=Kurd LocaleNames/mt/kw=Korniku -LocaleNames/mt/ky=Kirgi\u017c -LocaleNames/mt/lb=Lussemburgi\u017c +LocaleNames/mt/ky=Kirgiż +LocaleNames/mt/lb=Lussemburgiż LocaleNames/mt/ln=Lingaljan LocaleNames/mt/lt=Litwan LocaleNames/mt/lv=Latvjan LocaleNames/mt/mg=Malagasy -LocaleNames/mt/mh=Marshalljani\u017c -LocaleNames/mt/mk=Ma\u010bedonjan +LocaleNames/mt/mh=Marshalljaniż +LocaleNames/mt/mk=Maċedonjan LocaleNames/mt/ml=Malayalam LocaleNames/mt/mn=Mongoljan LocaleNames/mt/mo=Moldavjan LocaleNames/mt/mr=Marathi LocaleNames/mt/ms=Malay LocaleNames/mt/mt=Malti -LocaleNames/mt/my=Burmi\u017c +LocaleNames/mt/my=Burmiż LocaleNames/mt/na=Naurujan -LocaleNames/mt/nb=Bokmal Norve\u0121i\u017c +LocaleNames/mt/nb=Bokmal Norveġiż LocaleNames/mt/nd=Ndebeli tat-Tramuntana -LocaleNames/mt/ne=Nepali\u017c -LocaleNames/mt/nl=Olandi\u017c -LocaleNames/mt/nn=Ninorsk Norve\u0121i\u017c -LocaleNames/mt/no=Norve\u0121i\u017c +LocaleNames/mt/ne=Nepaliż +LocaleNames/mt/nl=Olandiż +LocaleNames/mt/nn=Ninorsk Norveġiż +LocaleNames/mt/no=Norveġiż LocaleNames/mt/nr=Ndebele tan-Nofsinhar LocaleNames/mt/nv=Navajo LocaleNames/mt/ny=Nyanja -LocaleNames/mt/oc=O\u010b\u010bitan -LocaleNames/mt/oj=O\u0121ibwa +LocaleNames/mt/oc=Oċċitan +LocaleNames/mt/oj=Oġibwa LocaleNames/mt/om=Oromo LocaleNames/mt/or=Odia LocaleNames/mt/os=Ossettiku LocaleNames/mt/pa=Punjabi LocaleNames/mt/pl=Pollakk LocaleNames/mt/ps=Pashto -LocaleNames/mt/pt=Portugi\u017c +LocaleNames/mt/pt=Portugiż LocaleNames/mt/qu=Quechua LocaleNames/mt/rm=Romanz LocaleNames/mt/ro=Rumen @@ -5131,129 +5131,129 @@ LocaleNames/mt/sl=Sloven LocaleNames/mt/sm=Samoan LocaleNames/mt/sn=Shona -LocaleNames/mt/sq=Albani\u017c +LocaleNames/mt/sq=Albaniż LocaleNames/mt/sr=Serb LocaleNames/mt/st=Soto tan-Nofsinhar -LocaleNames/mt/su=Sundani\u017c -LocaleNames/mt/sv=\u017bvedi\u017c +LocaleNames/mt/su=Sundaniż +LocaleNames/mt/sv=Żvediż LocaleNames/mt/sw=Swahili -LocaleNames/mt/tg=Ta\u0121ik -LocaleNames/mt/th=Tajlandi\u017c +LocaleNames/mt/tg=Taġik +LocaleNames/mt/th=Tajlandiż LocaleNames/mt/ti=Tigrinya LocaleNames/mt/tk=Turkmeni LocaleNames/mt/tn=Tswana LocaleNames/mt/to=Tongan LocaleNames/mt/tr=Tork -LocaleNames/mt/ty=Ta\u0127itjan +LocaleNames/mt/ty=Taħitjan LocaleNames/mt/ug=Uyghur LocaleNames/mt/uk=Ukren LocaleNames/mt/uz=Uzbek -LocaleNames/mt/vi=Vjetnami\u017c +LocaleNames/mt/vi=Vjetnamiż LocaleNames/mt/vo=Volapuk LocaleNames/mt/xh=Xhosa LocaleNames/mt/yi=Yiddish LocaleNames/mt/yo=Yoruba LocaleNames/mt/za=Zhuang -LocaleNames/mt/zh=\u010aini\u017c +LocaleNames/mt/zh=Ċiniż LocaleNames/mt/zu=Zulu -LocaleNames/mt/AE=l-Emirati G\u0127arab Mag\u0127quda +LocaleNames/mt/AE=l-Emirati Għarab Magħquda LocaleNames/mt/AF=l-Afganistan LocaleNames/mt/AI=Anguilla LocaleNames/mt/AL=l-Albanija LocaleNames/mt/AM=l-Armenja -LocaleNames/mt/AN=Antilles Olandi\u017ci +LocaleNames/mt/AN=Antilles Olandiżi LocaleNames/mt/AQ=l-Antartika -LocaleNames/mt/AR=l-Ar\u0121entina +LocaleNames/mt/AR=l-Arġentina LocaleNames/mt/AS=is-Samoa Amerikana LocaleNames/mt/AT=l-Awstrija LocaleNames/mt/AU=l-Awstralja -LocaleNames/mt/AZ=l-A\u017cerbaj\u0121an -LocaleNames/mt/BA=il-Bo\u017cnija-\u0126erzegovina +LocaleNames/mt/AZ=l-Ażerbajġan +LocaleNames/mt/BA=il-Bożnija-Ħerzegovina LocaleNames/mt/BD=il-Bangladesh -LocaleNames/mt/BE=il-Bel\u0121ju +LocaleNames/mt/BE=il-Belġju LocaleNames/mt/BG=il-Bulgarija LocaleNames/mt/BH=il-Bahrain LocaleNames/mt/BN=il-Brunei LocaleNames/mt/BO=il-Bolivja -LocaleNames/mt/BR=Il-Bra\u017cil +LocaleNames/mt/BR=Il-Brażil LocaleNames/mt/BS=il-Bahamas LocaleNames/mt/BT=il-Bhutan LocaleNames/mt/BY=il-Belarussja LocaleNames/mt/BZ=il-Belize LocaleNames/mt/CA=il-Kanada -LocaleNames/mt/CC=G\u017cejjer Cocos (Keeling) +LocaleNames/mt/CC=Gżejjer Cocos (Keeling) LocaleNames/mt/CD=ir-Repubblika Demokratika tal-Kongo -LocaleNames/mt/CF=ir-Repubblika \u010aentru-Afrikana +LocaleNames/mt/CF=ir-Repubblika Ċentru-Afrikana LocaleNames/mt/CG=il-Kongo - Brazzaville -LocaleNames/mt/CH=l-I\u017cvizzera +LocaleNames/mt/CH=l-Iżvizzera LocaleNames/mt/CI=il-Kosta tal-Avorju -LocaleNames/mt/CL=i\u010b-\u010aili +LocaleNames/mt/CL=iċ-Ċili LocaleNames/mt/CM=il-Kamerun -LocaleNames/mt/CN=i\u010b-\u010aina +LocaleNames/mt/CN=iċ-Ċina LocaleNames/mt/CO=il-Kolombja LocaleNames/mt/CR=il-Costa Rica LocaleNames/mt/CS=Serbja u Montenegro LocaleNames/mt/CU=Kuba LocaleNames/mt/CV=Cape Verde -LocaleNames/mt/CY=\u010aipru -LocaleNames/mt/CZ=ir-Repubblika \u010aeka -LocaleNames/mt/DE=il-\u0120ermanja +LocaleNames/mt/CY=Ċipru +LocaleNames/mt/CZ=ir-Repubblika Ċeka +LocaleNames/mt/DE=il-Ġermanja LocaleNames/mt/DJ=il-Djibouti LocaleNames/mt/DK=id-Danimarka LocaleNames/mt/DM=Dominica LocaleNames/mt/DO=ir-Repubblika Dominicana -LocaleNames/mt/DZ=l-Al\u0121erija +LocaleNames/mt/DZ=l-Alġerija LocaleNames/mt/EC=l-Ekwador LocaleNames/mt/EE=l-Estonja -LocaleNames/mt/EG=l-E\u0121ittu -LocaleNames/mt/EH=is-Sa\u0127ara tal-Punent +LocaleNames/mt/EG=l-Eġittu +LocaleNames/mt/EH=is-Saħara tal-Punent LocaleNames/mt/ER=l-Eritrea LocaleNames/mt/ES=Spanja LocaleNames/mt/ET=l-Etjopja LocaleNames/mt/FI=il-Finlandja -LocaleNames/mt/FJ=Fi\u0121i -LocaleNames/mt/FM=il-Mikrone\u017cja -LocaleNames/mt/FO=il-G\u017cejjer Faeroe +LocaleNames/mt/FJ=Fiġi +LocaleNames/mt/FM=il-Mikroneżja +LocaleNames/mt/FO=il-Gżejjer Faeroe LocaleNames/mt/FR=Franza LocaleNames/mt/GB=ir-Renju Unit LocaleNames/mt/GE=il-Georgia -LocaleNames/mt/GF=il-Guyana Fran\u010bi\u017ca +LocaleNames/mt/GF=il-Guyana Franċiża LocaleNames/mt/GH=il-Ghana LocaleNames/mt/GL=Greenland LocaleNames/mt/GM=il-Gambja LocaleNames/mt/GN=il-Guinea LocaleNames/mt/GP=Guadeloupe LocaleNames/mt/GQ=il-Guinea Ekwatorjali -LocaleNames/mt/GR=il-Gre\u010bja -LocaleNames/mt/GS=il-Georgia tan-Nofsinhar u l-G\u017cejjer Sandwich tan-Nofsinhar +LocaleNames/mt/GR=il-Greċja +LocaleNames/mt/GS=il-Georgia tan-Nofsinhar u l-Gżejjer Sandwich tan-Nofsinhar LocaleNames/mt/GT=il-Gwatemala LocaleNames/mt/GU=Guam LocaleNames/mt/GW=il-Guinea-Bissau LocaleNames/mt/GY=il-Guyana -LocaleNames/mt/HK=ir-Re\u0121jun Amministrattiv Spe\u010bjali ta\u2019 Hong Kong tar-Repubblika tal-Poplu ta\u010b-\u010aina -LocaleNames/mt/HM=il-G\u017cejjer Heard u l-G\u017cejjer McDonald +LocaleNames/mt/HK=ir-Reġjun Amministrattiv Speċjali ta’ Hong Kong tar-Repubblika tal-Poplu taċ-Ċina +LocaleNames/mt/HM=il-Gżejjer Heard u l-Gżejjer McDonald LocaleNames/mt/HN=il-Honduras LocaleNames/mt/HR=il-Kroazja LocaleNames/mt/HT=il-Haiti LocaleNames/mt/HU=l-Ungerija -LocaleNames/mt/ID=l-Indone\u017cja +LocaleNames/mt/ID=l-Indoneżja LocaleNames/mt/IE=l-Irlanda -LocaleNames/mt/IL=I\u017crael +LocaleNames/mt/IL=Iżrael LocaleNames/mt/IN=l-Indja -LocaleNames/mt/IS=l-I\u017clanda +LocaleNames/mt/IS=l-Iżlanda LocaleNames/mt/IT=l-Italja -LocaleNames/mt/JM=il-\u0120amajka -LocaleNames/mt/JO=il-\u0120ordan -LocaleNames/mt/JP=il-\u0120appun +LocaleNames/mt/JM=il-Ġamajka +LocaleNames/mt/JO=il-Ġordan +LocaleNames/mt/JP=il-Ġappun LocaleNames/mt/KE=il-Kenja -LocaleNames/mt/KG=il-Kirgi\u017cistan +LocaleNames/mt/KG=il-Kirgiżistan LocaleNames/mt/KH=il-Kambodja LocaleNames/mt/KM=Comoros LocaleNames/mt/KN=Saint Kitts u Nevis -LocaleNames/mt/KP=il-Korea ta\u2019 Fuq -LocaleNames/mt/KR=il-Korea t\u2019Isfel +LocaleNames/mt/KP=il-Korea ta’ Fuq +LocaleNames/mt/KR=il-Korea t’Isfel LocaleNames/mt/KW=il-Kuwajt -LocaleNames/mt/KZ=il-Ka\u017cakistan +LocaleNames/mt/KZ=il-Każakistan LocaleNames/mt/LB=il-Libanu LocaleNames/mt/LC=Saint Lucia LocaleNames/mt/LR=il-Liberja @@ -5266,12 +5266,12 @@ LocaleNames/mt/MC=Monaco LocaleNames/mt/MD=il-Moldova LocaleNames/mt/MG=Madagascar -LocaleNames/mt/MH=G\u017cejjer Marshall -LocaleNames/mt/MK=il-Ma\u010bedonja ta\u2019 Fuq +LocaleNames/mt/MH=Gżejjer Marshall +LocaleNames/mt/MK=il-Maċedonja ta’ Fuq LocaleNames/mt/MM=il-Myanmar/Burma LocaleNames/mt/MN=il-Mongolja -LocaleNames/mt/MO=ir-Re\u0121jun Amministrattiv Spe\u010bjali tal-Macao tar-Repubblika tal-Poplu ta\u010b-\u010aina -LocaleNames/mt/MP=\u0120\u017cejjer Mariana tat-Tramuntana +LocaleNames/mt/MO=ir-Reġjun Amministrattiv Speċjali tal-Macao tar-Repubblika tal-Poplu taċ-Ċina +LocaleNames/mt/MP=Ġżejjer Mariana tat-Tramuntana LocaleNames/mt/MQ=Martinique LocaleNames/mt/MR=il-Mauritania LocaleNames/mt/MU=Mauritius @@ -5279,12 +5279,12 @@ LocaleNames/mt/MY=il-Malasja LocaleNames/mt/MZ=il-Mozambique LocaleNames/mt/NA=in-Namibja -LocaleNames/mt/NE=in-Ni\u0121er -LocaleNames/mt/NG=in-Ni\u0121erja +LocaleNames/mt/NE=in-Niġer +LocaleNames/mt/NG=in-Niġerja LocaleNames/mt/NI=in-Nikaragwa LocaleNames/mt/NL=in-Netherlands -LocaleNames/mt/NO=in-Norve\u0121ja -LocaleNames/mt/PF=Poline\u017cja Fran\u010bi\u017ca +LocaleNames/mt/NO=in-Norveġja +LocaleNames/mt/PF=Polineżja Franċiża LocaleNames/mt/PG=Papua New Guinea LocaleNames/mt/PH=il-Filippini LocaleNames/mt/PL=il-Polonja @@ -5292,27 +5292,27 @@ LocaleNames/mt/PS=it-Territorji Palestinjani LocaleNames/mt/PT=il-Portugall LocaleNames/mt/PY=il-Paragwaj -LocaleNames/mt/RE=R\u00e9union +LocaleNames/mt/RE=Réunion LocaleNames/mt/RO=ir-Rumanija LocaleNames/mt/RU=ir-Russja LocaleNames/mt/SA=l-Arabja Sawdija -LocaleNames/mt/SE=l-I\u017cvezja +LocaleNames/mt/SE=l-Iżvezja LocaleNames/mt/SG=Singapore LocaleNames/mt/SI=is-Slovenja LocaleNames/mt/SJ=Svalbard u Jan Mayen LocaleNames/mt/SK=is-Slovakkja LocaleNames/mt/SO=is-Somalja LocaleNames/mt/SR=is-Suriname -LocaleNames/mt/ST=S\u00e3o Tom\u00e9 u Pr\u00edncipe +LocaleNames/mt/ST=São Tomé u Príncipe LocaleNames/mt/SY=is-Sirja -LocaleNames/mt/TC=il-G\u017cejjer Turks u Caicos -LocaleNames/mt/TD=i\u010b-Chad -LocaleNames/mt/TF=It-Territorji Fran\u010bi\u017ci tan-Nofsinhar +LocaleNames/mt/TC=il-Gżejjer Turks u Caicos +LocaleNames/mt/TD=iċ-Chad +LocaleNames/mt/TF=It-Territorji Franċiżi tan-Nofsinhar LocaleNames/mt/TH=it-Tajlandja -LocaleNames/mt/TJ=it-Ta\u0121ikistan +LocaleNames/mt/TJ=it-Taġikistan LocaleNames/mt/TK=it-Tokelau LocaleNames/mt/TL=Timor Leste -LocaleNames/mt/TN=it-Tune\u017cija +LocaleNames/mt/TN=it-Tuneżija LocaleNames/mt/TR=it-Turkija LocaleNames/mt/TT=Trinidad u Tobago LocaleNames/mt/TW=it-Tajwan @@ -5320,7 +5320,7 @@ LocaleNames/mt/UA=l-Ukrajna LocaleNames/mt/US=l-Istati Uniti LocaleNames/mt/UY=l-Urugwaj -LocaleNames/mt/UZ=l-U\u017cbekistan +LocaleNames/mt/UZ=l-Użbekistan LocaleNames/mt/VA=l-Istat tal-Belt tal-Vatikan LocaleNames/mt/VC=Saint Vincent u l-Grenadini LocaleNames/mt/VE=il-Venezwela @@ -5329,48 +5329,48 @@ LocaleNames/mt/WF=Wallis u Futuna LocaleNames/mt/YE=il-Jemen LocaleNames/mt/YT=Mayotte -LocaleNames/mt/ZA=l-Afrika t\u2019Isfel -LocaleNames/mt/ZM=i\u017c-\u017bambja -LocaleNames/mt/ZW=i\u017c-\u017bimbabwe -LocaleNames/sr/ZA=\u0408\u0443\u0436\u043d\u043e\u0430\u0444\u0440\u0438\u0447\u043a\u0430 \u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 -LocaleNames/zh_SG/bo=\u85cf\u8bed -LocaleNames/zh_SG/gd=\u82cf\u683c\u5170\u76d6\u5c14\u8bed -LocaleNames/zh_SG/ho=\u5e0c\u91cc\u83ab\u56fe\u8bed -LocaleNames/zh_SG/ia=\u56fd\u9645\u8bed -LocaleNames/zh_SG/ie=\u56fd\u9645\u6587\u5b57\uff08E\uff09 -LocaleNames/zh_SG/iu=\u56e0\u7ebd\u7279\u8bed -LocaleNames/zh_SG/kj=\u5bbd\u4e9a\u739b\u8bed -LocaleNames/zh_SG/kn=\u5361\u7eb3\u8fbe\u8bed -LocaleNames/zh_SG/lv=\u62c9\u8131\u7ef4\u4e9a\u8bed -LocaleNames/zh_SG/ny=\u9f50\u5207\u74e6\u8bed -LocaleNames/zh_SG/oc=\u5965\u514b\u8bed -LocaleNames/zh_SG/om=\u5965\u7f57\u83ab\u8bed -LocaleNames/zh_SG/rm=\u7f57\u66fc\u4ec0\u8bed -LocaleNames/zh_SG/sd=\u4fe1\u5fb7\u8bed -LocaleNames/zh_SG/se=\u5317\u65b9\u8428\u7c73\u8bed -LocaleNames/zh_SG/sn=\u7ecd\u7eb3\u8bed -LocaleNames/zh_SG/ss=\u65af\u74e6\u8482\u8bed -LocaleNames/zh_SG/su=\u5dfd\u4ed6\u8bed -LocaleNames/zh_SG/tl=\u4ed6\u52a0\u7984\u8bed -LocaleNames/zh_SG/tn=\u8328\u74e6\u7eb3\u8bed -LocaleNames/zh_SG/ts=\u806a\u52a0\u8bed -LocaleNames/zh_SG/tt=\u9791\u977c\u8bed -LocaleNames/zh_SG/tw=\u5951\u7ef4\u8bed -LocaleNames/zh_SG/wa=\u74e6\u9686\u8bed -LocaleNames/zh_SG/wo=\u6c83\u6d1b\u592b\u8bed -LocaleNames/zh_SG/xh=\u79d1\u8428\u8bed -LocaleNames/zh_SG/za=\u58ee\u8bed -LocaleNames/zh_SG/BA=\u6ce2\u65af\u5c3c\u4e9a\u548c\u9ed1\u585e\u54e5\u7ef4\u90a3 -LocaleNames/zh_SG/CC=\u79d1\u79d1\u65af\uff08\u57fa\u6797\uff09\u7fa4\u5c9b -LocaleNames/zh_SG/CD=\u521a\u679c\uff08\u91d1\uff09 -LocaleNames/zh_SG/CG=\u521a\u679c\uff08\u5e03\uff09 -LocaleNames/zh_SG/DM=\u591a\u7c73\u5c3c\u514b -LocaleNames/zh_SG/KG=\u5409\u5c14\u5409\u65af\u65af\u5766 -LocaleNames/zh_SG/KP=\u671d\u9c9c -LocaleNames/zh_SG/MQ=\u9a6c\u63d0\u5c3c\u514b -LocaleNames/zh_SG/MQ=\u9a6c\u63d0\u5c3c\u514b -LocaleNames/zh_SG/NC=\u65b0\u5580\u91cc\u591a\u5c3c\u4e9a -LocaleNames/zh_SG/TF=\u6cd5\u5c5e\u5357\u90e8\u9886\u5730 +LocaleNames/mt/ZA=l-Afrika t’Isfel +LocaleNames/mt/ZM=iż-Żambja +LocaleNames/mt/ZW=iż-Żimbabwe +LocaleNames/sr/ZA=Јужноафричка Република +LocaleNames/zh_SG/bo=藏语 +LocaleNames/zh_SG/gd=苏格兰盖尔语 +LocaleNames/zh_SG/ho=希里莫图语 +LocaleNames/zh_SG/ia=国际语 +LocaleNames/zh_SG/ie=国际文字(E) +LocaleNames/zh_SG/iu=因纽特语 +LocaleNames/zh_SG/kj=宽亚玛语 +LocaleNames/zh_SG/kn=卡纳达语 +LocaleNames/zh_SG/lv=拉脱维亚语 +LocaleNames/zh_SG/ny=齐切瓦语 +LocaleNames/zh_SG/oc=奥克语 +LocaleNames/zh_SG/om=奥罗莫语 +LocaleNames/zh_SG/rm=罗曼什语 +LocaleNames/zh_SG/sd=信德语 +LocaleNames/zh_SG/se=北方萨米语 +LocaleNames/zh_SG/sn=绍纳语 +LocaleNames/zh_SG/ss=斯瓦蒂语 +LocaleNames/zh_SG/su=巽他语 +LocaleNames/zh_SG/tl=他加禄语 +LocaleNames/zh_SG/tn=茨瓦纳语 +LocaleNames/zh_SG/ts=聪加语 +LocaleNames/zh_SG/tt=鞑靼语 +LocaleNames/zh_SG/tw=契维语 +LocaleNames/zh_SG/wa=瓦隆语 +LocaleNames/zh_SG/wo=沃洛夫语 +LocaleNames/zh_SG/xh=科萨语 +LocaleNames/zh_SG/za=壮语 +LocaleNames/zh_SG/BA=波斯尼亚和黑塞哥维那 +LocaleNames/zh_SG/CC=科科斯(基林)群岛 +LocaleNames/zh_SG/CD=刚果(金) +LocaleNames/zh_SG/CG=刚果(布) +LocaleNames/zh_SG/DM=多米尼克 +LocaleNames/zh_SG/KG=吉尔吉斯斯坦 +LocaleNames/zh_SG/KP=朝鲜 +LocaleNames/zh_SG/MQ=马提尼克 +LocaleNames/zh_SG/MQ=马提尼克 +LocaleNames/zh_SG/NC=新喀里多尼亚 +LocaleNames/zh_SG/TF=法属南部领地 FormatData/es_US/AmPmMarkers/0=a.m. FormatData/es_US/AmPmMarkers/1=p.m. FormatData/es_US/NumberElements/0=. @@ -5381,12 +5381,12 @@ FormatData/es_US/NumberElements/5=# FormatData/es_US/NumberElements/6=- FormatData/es_US/NumberElements/7=E -FormatData/es_US/NumberElements/8=\u2030 -FormatData/es_US/NumberElements/9=\u221e +FormatData/es_US/NumberElements/8=‰ +FormatData/es_US/NumberElements/9=∞ FormatData/es_US/NumberElements/10=NaN FormatData/mt/AmPmMarkers/0=QN FormatData/mt/AmPmMarkers/1=WN -FormatData/mt/DatePatterns/0=EEEE, d 'ta\u2019' MMMM yyyy +FormatData/mt/DatePatterns/0=EEEE, d 'ta’' MMMM yyyy # bug# 6483191 CalendarData/ga_IE/firstDayOfWeek=1 CalendarData/en_PH/firstDayOfWeek=1 @@ -5416,11 +5416,11 @@ # Use approved data FormatData/ms/Eras/0=BCE FormatData/ms/Eras/1=CE -FormatData/sr_BA/MonthNames/5=\u0458\u0443\u043d\u0438 -FormatData/sr_BA/MonthNames/6=\u0458\u0443\u043b\u0438 -FormatData/sr_BA/DayNames/3=\u0441\u0440\u0438\u0458\u0435\u0434\u0430 -FormatData/sr_BA/DayAbbreviations/3=\u0441\u0440\u0438 -FormatData/sr_BA/TimePatterns/0=HH '\u0447\u0430\u0441\u043e\u0432\u0430', mm '\u043c\u0438\u043d\u0443\u0442\u0430', ss' \u0441\u0435\u043a\u0443\u043d\u0434\u0438' +FormatData/sr_BA/MonthNames/5=јуни +FormatData/sr_BA/MonthNames/6=јули +FormatData/sr_BA/DayNames/3=сриједа +FormatData/sr_BA/DayAbbreviations/3=сри +FormatData/sr_BA/TimePatterns/0=HH 'часова', mm 'минута', ss' секунди' FormatData/sr_BA/TimePatterns/1=HH.mm.ss z FormatData/sr_BA/TimePatterns/2=HH:mm:ss FormatData/sr_BA/TimePatterns/3=HH:mm @@ -5431,33 +5431,33 @@ FormatData/sr_BA/DateTimePatterns/0={1} {0} LocaleNames/pt_BR/ce=checheno LocaleNames/pt_BR/ik=inupiaque -LocaleNames/pt_BR/jv=javan\u00eas +LocaleNames/pt_BR/jv=javanês LocaleNames/pt_BR/nd=ndebele do norte LocaleNames/pt_BR/nr=ndebele do sul LocaleNames/pt_BR/st=soto do sul LocaleNames/pt_BR/AX=Ilhas Aland -LocaleNames/pt_BR/BA=B\u00f3snia e Herzegovina +LocaleNames/pt_BR/BA=Bósnia e Herzegovina LocaleNames/pt_BR/BH=Barein LocaleNames/pt_BR/KP=Coreia do Norte -LocaleNames/pt_BR/MK=Maced\u00f4nia do Norte -LocaleNames/pt_BR/ZW=Zimb\u00e1bue +LocaleNames/pt_BR/MK=Macedônia do Norte +LocaleNames/pt_BR/ZW=Zimbábue LocaleNames/pt_PT/ee=ewe -LocaleNames/pt_PT/fo=fero\u00eas +LocaleNames/pt_PT/fo=feroês LocaleNames/pt_PT/gl=galego -LocaleNames/pt_PT/ha=hau\u00e7\u00e1 -LocaleNames/pt_PT/hy=arm\u00eanio +LocaleNames/pt_PT/ha=hauçá +LocaleNames/pt_PT/hy=armênio LocaleNames/pt_PT/ig=igbo LocaleNames/pt_PT/ki=quicuio -LocaleNames/pt_PT/kl=groenland\u00eas +LocaleNames/pt_PT/kl=groenlandês LocaleNames/pt_PT/km=khmer -LocaleNames/pt_PT/mh=marshal\u00eas -LocaleNames/pt_PT/mk=maced\u00f4nio +LocaleNames/pt_PT/mh=marshalês +LocaleNames/pt_PT/mk=macedônio LocaleNames/pt_PT/nr=ndebele do sul LocaleNames/pt_PT/os=osseto LocaleNames/pt_PT/st=soto do sul -LocaleNames/pt_PT/ta=t\u00e2mil +LocaleNames/pt_PT/ta=tâmil LocaleNames/pt_PT/AI=Anguilla -LocaleNames/pt_PT/AX=\u00c5land Islands +LocaleNames/pt_PT/AX=Åland Islands # JE, GG, IM (6544471) LocaleNames//JE=Jersey @@ -5482,7 +5482,7 @@ LocaleNames/da/da=dansk # bug 6485516 -LocaleNames/fr/GF=Guyane fran\u00e7aise +LocaleNames/fr/GF=Guyane française # bug 6486607 LocaleNames/fr/GY=Guyana @@ -5512,27 +5512,27 @@ LocaleNames/de/RS=Serbien LocaleNames/es/ME=Montenegro LocaleNames/es/RS=Serbia -LocaleNames/fr/ME=Mont\u00e9n\u00e9gro +LocaleNames/fr/ME=Monténégro LocaleNames/fr/RS=Serbie LocaleNames/it/ME=Montenegro LocaleNames/it/RS=Serbia -LocaleNames/ja/ME=\u30e2\u30f3\u30c6\u30cd\u30b0\u30ed -LocaleNames/ja/RS=\u30bb\u30eb\u30d3\u30a2 -LocaleNames/ko/ME=\ubaac\ud14c\ub124\uadf8\ub85c -LocaleNames/ko/RS=\uc138\ub974\ube44\uc544 +LocaleNames/ja/ME=モンテネグロ +LocaleNames/ja/RS=セルビア +LocaleNames/ko/ME=몬테네그로 +LocaleNames/ko/RS=세르비아 LocaleNames/sv/ME=Montenegro LocaleNames/sv/RS=Serbien -LocaleNames/zh/ME=\u9ed1\u5c71 -LocaleNames/zh/RS=\u585e\u5c14\u7ef4\u4e9a -LocaleNames/zh_TW/ME=\u8499\u7279\u5167\u54e5\u7f85 -LocaleNames/zh_TW/RS=\u585e\u723e\u7dad\u4e9e +LocaleNames/zh/ME=黑山 +LocaleNames/zh/RS=塞尔维亚 +LocaleNames/zh_TW/ME=蒙特內哥羅 +LocaleNames/zh_TW/RS=塞爾維亞 # bug 6531591 -CurrencyNames/ar_SD/SDD=\u062f.\u0633.\u200f -CurrencyNames/ar_SD/SDG=\u062c.\u0633.\u200f +CurrencyNames/ar_SD/SDD=د.س.‏ +CurrencyNames/ar_SD/SDG=ج.س.‏ # bug 6531593 -FormatData/is_IS/NumberPatterns/1=#,##0. \u00a4;-#,##0. \u00a4 +FormatData/is_IS/NumberPatterns/1=#,##0. ¤;-#,##0. ¤ # bug 6509039 FormatData/sv/AmPmMarkers/0=fm @@ -5544,14 +5544,14 @@ LocaleNames//IM=Isle of Man # BL, MF (6627549) -LocaleNames//BL=St. Barth\u00e9lemy +LocaleNames//BL=St. Barthélemy LocaleNames//MF=St. Martin # bug 6609737 FormatData/de/TimePatterns/0=HH:mm' Uhr 'z -TimeZoneNames/de/CET/1=Mitteleurop\u00e4ische Zeit +TimeZoneNames/de/CET/1=Mitteleuropäische Zeit TimeZoneNames/de/CET/2=MEZ -TimeZoneNames/de/CET/3=Mitteleurop\u00e4ische Sommerzeit +TimeZoneNames/de/CET/3=Mitteleuropäische Sommerzeit TimeZoneNames/de/CET/4=MESZ TimeZoneNames/de/EET/2=OEZ TimeZoneNames/de/EET/4=OESZ @@ -5563,7 +5563,7 @@ FormatData/fi/AmPmMarkers/1=ip. # bug 6507067 -TimeZoneNames/zh_TW/Asia\/Taipei/1=\u53f0\u7063\u6a19\u6e96\u6642\u9593 +TimeZoneNames/zh_TW/Asia\/Taipei/1=台灣標準時間 TimeZoneNames/zh_TW/Asia\/Taipei/2=TST # bug 6645271 @@ -5576,7 +5576,7 @@ #bug 6450945 CalendarData/ro/firstDayOfWeek=2 CalendarData/ro/minimalDaysInFirstWeek=1 -FormatData/ro/DayNames/6=s\u00e2mb\u0103t\u0103 +FormatData/ro/DayNames/6=sâmbătă #bug 6645268 LocaleNames/fi/fr=ranska @@ -5585,14 +5585,14 @@ LocaleNames/fi_FI/FR=Ranska # bug 6646611, 6914413 -FormatData/be_BY/MonthNames/10=\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430 -FormatData/be_BY/MonthAbbreviations/10=\u043b\u0456\u0441 +FormatData/be_BY/MonthNames/10=лістапада +FormatData/be_BY/MonthAbbreviations/10=ліс # bug 6645405 -FormatData/hu_HU/NumberPatterns/1=#,##0.## \u00a4;-#,##0.## \u00a4 +FormatData/hu_HU/NumberPatterns/1=#,##0.## ¤;-#,##0.## ¤ # bug 6650730 -FormatData/lt/NumberElements/1=\u00a0 +FormatData/lt/NumberElements/1=  FormatData/lt/DatePatterns/2=yyyy-MM-dd #bug 6910489 @@ -5604,7 +5604,7 @@ # bug 6870908 FormatData/et/MonthNames/0=jaanuar FormatData/et/MonthNames/1=veebruar -FormatData/et/MonthNames/2=m\u00e4rts +FormatData/et/MonthNames/2=märts FormatData/et/MonthNames/3=aprill FormatData/et/MonthNames/4=mai FormatData/et/MonthNames/5=juuni @@ -5616,7 +5616,7 @@ FormatData/et/MonthNames/11=detsember FormatData/et/MonthAbbreviations/0=jaan FormatData/et/MonthAbbreviations/1=veebr -FormatData/et/MonthAbbreviations/2=m\u00e4rts +FormatData/et/MonthAbbreviations/2=märts FormatData/et/MonthAbbreviations/3=apr FormatData/et/MonthAbbreviations/4=mai FormatData/et/MonthAbbreviations/5=juuni @@ -5633,39 +5633,39 @@ LocaleNames/es/az=azerbaiyano LocaleNames/es/ba=baskir LocaleNames/es/bh=bihari -LocaleNames/es/bn=bengal\u00ed -LocaleNames/es/cu=eslavo eclesi\u00e1stico +LocaleNames/es/bn=bengalí +LocaleNames/es/cu=eslavo eclesiástico LocaleNames/es/dz=dzongkha LocaleNames/es/eu=euskera LocaleNames/es/fa=persa LocaleNames/es/ff=fula LocaleNames/es/fj=fiyiano -LocaleNames/es/fo=fero\u00e9s -LocaleNames/es/fy=fris\u00f3n occidental -LocaleNames/es/gu=guyarat\u00ed -LocaleNames/es/gv=man\u00e9s +LocaleNames/es/fo=feroés +LocaleNames/es/fy=frisón occidental +LocaleNames/es/gu=guyaratí +LocaleNames/es/gv=manés LocaleNames/es/hi=hindi LocaleNames/es/ho=hiri motu LocaleNames/es/ie=interlingue LocaleNames/es/ig=igbo -LocaleNames/es/ii=yi de Sichu\u00e1n +LocaleNames/es/ii=yi de Sichuán LocaleNames/es/ik=inupiaq LocaleNames/es/kg=kongo LocaleNames/es/ki=kikuyu LocaleNames/es/kj=kuanyama LocaleNames/es/kk=kazajo LocaleNames/es/km=jemer -LocaleNames/es/kn=canar\u00e9s +LocaleNames/es/kn=canarés LocaleNames/es/ks=cachemir LocaleNames/es/ku=kurdo -LocaleNames/es/ky=kirgu\u00eds +LocaleNames/es/ky=kirguís LocaleNames/es/lu=luba-katanga -LocaleNames/es/mr=marat\u00ed +LocaleNames/es/mr=maratí LocaleNames/es/nb=noruego bokmal LocaleNames/es/nd=ndebele septentrional LocaleNames/es/nn=noruego nynorsk LocaleNames/es/nr=ndebele meridional -LocaleNames/es/os=os\u00e9tico +LocaleNames/es/os=osético LocaleNames/es/rm=romanche LocaleNames/es/rn=kirundi LocaleNames/es/rw=kinyarwanda @@ -5675,10 +5675,10 @@ LocaleNames/es/sn=shona LocaleNames/es/ss=suazi LocaleNames/es/st=sotho meridional -LocaleNames/es/su=sundan\u00e9s +LocaleNames/es/su=sundanés LocaleNames/es/sw=suajili LocaleNames/es/tg=tayiko -LocaleNames/es/ti=tigri\u00f1a +LocaleNames/es/ti=tigriña LocaleNames/es/tn=setsuana LocaleNames/es/to=tongano LocaleNames/es/tw=twi @@ -5686,7 +5686,7 @@ LocaleNames/es/ug=uigur LocaleNames/es/uk=ucraniano LocaleNames/es/uz=uzbeko -LocaleNames/es/vo=volap\u00fck +LocaleNames/es/vo=volapük LocaleNames/es/za=zhuang # bug 6716626 - language @@ -5736,13 +5736,13 @@ LocaleNames/nl/ff=Fulah LocaleNames/nl/fi=Fins LocaleNames/nl/fj=Fijisch -LocaleNames/nl/fo=Faer\u00f6ers +LocaleNames/nl/fo=Faeröers LocaleNames/nl/fr=Frans LocaleNames/nl/fy=Fries LocaleNames/nl/ga=Iers LocaleNames/nl/gd=Schots-Gaelisch LocaleNames/nl/gl=Galicisch -LocaleNames/nl/gn=Guaran\u00ed +LocaleNames/nl/gn=Guaraní LocaleNames/nl/gu=Gujarati LocaleNames/nl/gv=Manx LocaleNames/nl/ha=Hausa @@ -5750,7 +5750,7 @@ LocaleNames/nl/hi=Hindi LocaleNames/nl/ho=Hiri Motu LocaleNames/nl/hr=Kroatisch -LocaleNames/nl/ht=Ha\u00eftiaans Creools +LocaleNames/nl/ht=Haïtiaans Creools LocaleNames/nl/hu=Hongaars LocaleNames/nl/hy=Armeens LocaleNames/nl/hz=Herero @@ -5802,7 +5802,7 @@ LocaleNames/nl/mt=Maltees LocaleNames/nl/my=Birmaans LocaleNames/nl/na=Nauruaans -LocaleNames/nl/nb=Noors - Bokm\u00e5l +LocaleNames/nl/nb=Noors - Bokmål LocaleNames/nl/nd=Noord-Ndebele LocaleNames/nl/ne=Nepalees LocaleNames/nl/ng=Ndonga @@ -5861,12 +5861,12 @@ LocaleNames/nl/tw=Twi LocaleNames/nl/ty=Tahitiaans LocaleNames/nl/ug=Oeigoers -LocaleNames/nl/uk=Oekra\u00efens +LocaleNames/nl/uk=Oekraïens LocaleNames/nl/ur=Urdu LocaleNames/nl/uz=Oezbeeks LocaleNames/nl/ve=Venda LocaleNames/nl/vi=Vietnamees -LocaleNames/nl/vo=Volap\u00fck +LocaleNames/nl/vo=Volapük LocaleNames/nl/wa=Waals LocaleNames/nl/wo=Wolof LocaleNames/nl/xh=Xhosa @@ -5882,22 +5882,22 @@ LocaleNames/nl/AF=Afghanistan LocaleNames/nl/AG=Antigua en Barbuda LocaleNames/nl/AI=Anguilla -LocaleNames/nl/AL=Albani\u00eb -LocaleNames/nl/AM=Armeni\u00eb +LocaleNames/nl/AL=Albanië +LocaleNames/nl/AM=Armenië LocaleNames/nl/AN=Nederlandse Antillen LocaleNames/nl/AO=Angola LocaleNames/nl/AQ=Antarctica -LocaleNames/nl/AR=Argentini\u00eb +LocaleNames/nl/AR=Argentinië LocaleNames/nl/AS=Amerikaans-Samoa LocaleNames/nl/AT=Oostenrijk -LocaleNames/nl/AU=Australi\u00eb +LocaleNames/nl/AU=Australië LocaleNames/nl/AW=Aruba -LocaleNames/nl/AX=\u00c5land +LocaleNames/nl/AX=Åland LocaleNames/nl/AZ=Azerbeidzjan -LocaleNames/nl/BA=Bosni\u00eb en Herzegovina +LocaleNames/nl/BA=Bosnië en Herzegovina LocaleNames/nl/BB=Barbados LocaleNames/nl/BD=Bangladesh -LocaleNames/nl/BE=Belgi\u00eb +LocaleNames/nl/BE=België LocaleNames/nl/BF=Burkina Faso LocaleNames/nl/BG=Bulgarije LocaleNames/nl/BH=Bahrein @@ -5906,8 +5906,8 @@ LocaleNames/nl/BM=Bermuda LocaleNames/nl/BN=Brunei LocaleNames/nl/BO=Bolivia -LocaleNames/nl/BR=Brazili\u00eb -LocaleNames/nl/BS=Bahama\u2019s +LocaleNames/nl/BR=Brazilië +LocaleNames/nl/BS=Bahama’s LocaleNames/nl/BT=Bhutan LocaleNames/nl/BV=Bouveteiland LocaleNames/nl/BW=Botswana @@ -5926,12 +5926,12 @@ LocaleNames/nl/CN=China LocaleNames/nl/CO=Colombia LocaleNames/nl/CR=Costa Rica -LocaleNames/nl/CS=Servi\u00eb en Montenegro +LocaleNames/nl/CS=Servië en Montenegro LocaleNames/nl/CU=Cuba -LocaleNames/nl/CV=Kaapverdi\u00eb +LocaleNames/nl/CV=Kaapverdië LocaleNames/nl/CX=Christmaseiland LocaleNames/nl/CY=Cyprus -LocaleNames/nl/CZ=Tsjechi\u00eb +LocaleNames/nl/CZ=Tsjechië LocaleNames/nl/DE=Duitsland LocaleNames/nl/DJ=Djibouti LocaleNames/nl/DK=Denemarken @@ -5944,17 +5944,17 @@ LocaleNames/nl/EH=Westelijke Sahara LocaleNames/nl/ER=Eritrea LocaleNames/nl/ES=Spanje -LocaleNames/nl/ET=Ethiopi\u00eb +LocaleNames/nl/ET=Ethiopië LocaleNames/nl/FI=Finland LocaleNames/nl/FJ=Fiji LocaleNames/nl/FK=Falklandeilanden LocaleNames/nl/FM=Micronesia -LocaleNames/nl/FO=Faer\u00f6er +LocaleNames/nl/FO=Faeröer LocaleNames/nl/FR=Frankrijk LocaleNames/nl/GA=Gabon LocaleNames/nl/GB=Verenigd Koninkrijk LocaleNames/nl/GD=Grenada -LocaleNames/nl/GE=Georgi\u00eb +LocaleNames/nl/GE=Georgië LocaleNames/nl/GF=Frans-Guyana LocaleNames/nl/GH=Ghana LocaleNames/nl/GI=Gibraltar @@ -5972,23 +5972,23 @@ LocaleNames/nl/HK=Hongkong SAR van China LocaleNames/nl/HM=Heard en McDonaldeilanden LocaleNames/nl/HN=Honduras -LocaleNames/nl/HR=Kroati\u00eb -LocaleNames/nl/HT=Ha\u00efti +LocaleNames/nl/HR=Kroatië +LocaleNames/nl/HT=Haïti LocaleNames/nl/HU=Hongarije -LocaleNames/nl/ID=Indonesi\u00eb +LocaleNames/nl/ID=Indonesië LocaleNames/nl/IE=Ierland -LocaleNames/nl/IL=Isra\u00ebl +LocaleNames/nl/IL=Israël LocaleNames/nl/IN=India LocaleNames/nl/IO=Brits Indische Oceaanterritorium LocaleNames/nl/IQ=Irak LocaleNames/nl/IR=Iran LocaleNames/nl/IS=IJsland -LocaleNames/nl/IT=Itali\u00eb +LocaleNames/nl/IT=Italië LocaleNames/nl/JM=Jamaica -LocaleNames/nl/JO=Jordani\u00eb +LocaleNames/nl/JO=Jordanië LocaleNames/nl/JP=Japan LocaleNames/nl/KE=Kenia -LocaleNames/nl/KG=Kirgizi\u00eb +LocaleNames/nl/KG=Kirgizië LocaleNames/nl/KH=Cambodja LocaleNames/nl/KI=Kiribati LocaleNames/nl/KM=Comoren @@ -6008,31 +6008,31 @@ LocaleNames/nl/LT=Litouwen LocaleNames/nl/LU=Luxemburg LocaleNames/nl/LV=Letland -LocaleNames/nl/LY=Libi\u00eb +LocaleNames/nl/LY=Libië LocaleNames/nl/MA=Marokko LocaleNames/nl/MC=Monaco -LocaleNames/nl/MD=Moldavi\u00eb +LocaleNames/nl/MD=Moldavië LocaleNames/nl/ME=Montenegro LocaleNames/nl/MG=Madagaskar LocaleNames/nl/MH=Marshalleilanden -LocaleNames/nl/MK=Noord-Macedoni\u00eb +LocaleNames/nl/MK=Noord-Macedonië LocaleNames/nl/ML=Mali LocaleNames/nl/MM=Myanmar (Birma) -LocaleNames/nl/MN=Mongoli\u00eb +LocaleNames/nl/MN=Mongolië LocaleNames/nl/MO=Macau SAR van China LocaleNames/nl/MP=Noordelijke Marianen LocaleNames/nl/MQ=Martinique -LocaleNames/nl/MR=Mauritani\u00eb +LocaleNames/nl/MR=Mauritanië LocaleNames/nl/MS=Montserrat LocaleNames/nl/MT=Malta LocaleNames/nl/MU=Mauritius LocaleNames/nl/MV=Maldiven LocaleNames/nl/MW=Malawi LocaleNames/nl/MX=Mexico -LocaleNames/nl/MY=Maleisi\u00eb +LocaleNames/nl/MY=Maleisië LocaleNames/nl/MZ=Mozambique -LocaleNames/nl/NA=Namibi\u00eb -LocaleNames/nl/NC=Nieuw-Caledoni\u00eb +LocaleNames/nl/NA=Namibië +LocaleNames/nl/NC=Nieuw-Caledonië LocaleNames/nl/NE=Niger LocaleNames/nl/NF=Norfolk LocaleNames/nl/NG=Nigeria @@ -6046,7 +6046,7 @@ LocaleNames/nl/OM=Oman LocaleNames/nl/PA=Panama LocaleNames/nl/PE=Peru -LocaleNames/nl/PF=Frans-Polynesi\u00eb +LocaleNames/nl/PF=Frans-Polynesië LocaleNames/nl/PG=Papoea-Nieuw-Guinea LocaleNames/nl/PH=Filipijnen LocaleNames/nl/PK=Pakistan @@ -6059,29 +6059,29 @@ LocaleNames/nl/PW=Palau LocaleNames/nl/PY=Paraguay LocaleNames/nl/QA=Qatar -LocaleNames/nl/RE=R\u00e9union -LocaleNames/nl/RO=Roemeni\u00eb -LocaleNames/nl/RS=Servi\u00eb +LocaleNames/nl/RE=Réunion +LocaleNames/nl/RO=Roemenië +LocaleNames/nl/RS=Servië LocaleNames/nl/RU=Rusland LocaleNames/nl/RW=Rwanda -LocaleNames/nl/SA=Saoedi-Arabi\u00eb +LocaleNames/nl/SA=Saoedi-Arabië LocaleNames/nl/SB=Salomonseilanden LocaleNames/nl/SC=Seychellen LocaleNames/nl/SD=Soedan LocaleNames/nl/SE=Zweden LocaleNames/nl/SG=Singapore LocaleNames/nl/SH=Sint-Helena -LocaleNames/nl/SI=Sloveni\u00eb +LocaleNames/nl/SI=Slovenië LocaleNames/nl/SJ=Spitsbergen en Jan Mayen LocaleNames/nl/SK=Slowakije LocaleNames/nl/SL=Sierra Leone LocaleNames/nl/SM=San Marino LocaleNames/nl/SN=Senegal -LocaleNames/nl/SO=Somali\u00eb +LocaleNames/nl/SO=Somalië LocaleNames/nl/SR=Suriname -LocaleNames/nl/ST=Sao Tom\u00e9 en Principe +LocaleNames/nl/ST=Sao Tomé en Principe LocaleNames/nl/SV=El Salvador -LocaleNames/nl/SY=Syri\u00eb +LocaleNames/nl/SY=Syrië LocaleNames/nl/TC=Turks- en Caicoseilanden LocaleNames/nl/TD=Tsjaad LocaleNames/nl/TF=Franse Gebieden in de zuidelijke Indische Oceaan @@ -6091,14 +6091,14 @@ LocaleNames/nl/TK=Tokelau LocaleNames/nl/TL=Oost-Timor LocaleNames/nl/TM=Turkmenistan -LocaleNames/nl/TN=Tunesi\u00eb +LocaleNames/nl/TN=Tunesië LocaleNames/nl/TO=Tonga LocaleNames/nl/TR=Turkije LocaleNames/nl/TT=Trinidad en Tobago LocaleNames/nl/TV=Tuvalu LocaleNames/nl/TW=Taiwan LocaleNames/nl/TZ=Tanzania -LocaleNames/nl/UA=Oekra\u00efne +LocaleNames/nl/UA=Oekraïne LocaleNames/nl/UG=Oeganda LocaleNames/nl/UM=Kleine afgelegen eilanden van de Verenigde Staten LocaleNames/nl/US=Verenigde Staten @@ -6145,17 +6145,17 @@ FormatData/sr-Latn/DayNames/1=ponedeljak FormatData/sr-Latn-BA/DayNames/2=utorak FormatData/sr-Latn-ME/DayNames/3=sreda -FormatData/sr-Latn-RS/DayNames/4=\u010detvrtak +FormatData/sr-Latn-RS/DayNames/4=četvrtak # FormatData/sr-Latn/DayAbbreviations/1=pon FormatData/sr-Latn-BA/DayAbbreviations/2=uto FormatData/sr-Latn-ME/DayAbbreviations/3=sre -FormatData/sr-Latn-RS/DayAbbreviations/4=\u010det +FormatData/sr-Latn-RS/DayAbbreviations/4=čet # CurrencyNames/sr-Latn/EUR=EUR -CurrencyNames/sr-Latn-BA/EUR=\u20ac +CurrencyNames/sr-Latn-BA/EUR=€ CurrencyNames/sr-Latn-BA/BAM=KM -CurrencyNames/sr-Latn-ME/EUR=\u20ac +CurrencyNames/sr-Latn-ME/EUR=€ CurrencyNames/sr-Latn-RS/EUR=EUR # FormatData/sr-Latn/TimePatterns/1=HH.mm.ss z @@ -6165,81 +6165,81 @@ # bug 7019267 CurrencyNames/pt/adp=Peseta de Andorra -CurrencyNames/pt/aed=Dirham dos Emirados \u00c1rabes Unidos -CurrencyNames/pt/afa=Afegane (1927\u20132002) -CurrencyNames/pt/afn=Afegane afeg\u00e3o -CurrencyNames/pt/all=Lek alban\u00eas -CurrencyNames/pt/amd=Dram arm\u00eanio +CurrencyNames/pt/aed=Dirham dos Emirados Árabes Unidos +CurrencyNames/pt/afa=Afegane (1927–2002) +CurrencyNames/pt/afn=Afegane afegão +CurrencyNames/pt/all=Lek albanês +CurrencyNames/pt/amd=Dram armênio CurrencyNames/pt/ang=Florim das Antilhas Holandesas CurrencyNames/pt/aoa=Kwanza angolano CurrencyNames/pt/ars=Peso argentino -CurrencyNames/pt/ats=Xelim austr\u00edaco -CurrencyNames/pt/aud=D\u00f3lar australiano +CurrencyNames/pt/ats=Xelim austríaco +CurrencyNames/pt/aud=Dólar australiano CurrencyNames/pt/awg=Florim arubano -CurrencyNames/pt/azm=Manat azerbaijano (1993\u20132006) +CurrencyNames/pt/azm=Manat azerbaijano (1993–2006) CurrencyNames/pt/azn=Manat azeri -CurrencyNames/pt/bam=Marco convers\u00edvel da B\u00f3snia e Herzegovina -CurrencyNames/pt/bbd=D\u00f3lar barbadense +CurrencyNames/pt/bam=Marco conversível da Bósnia e Herzegovina +CurrencyNames/pt/bbd=Dólar barbadense CurrencyNames/pt/bdt=Taka bengali CurrencyNames/pt/bef=Franco belga -CurrencyNames/pt/bgl=Lev forte b\u00falgaro -CurrencyNames/pt/bgn=Lev b\u00falgaro +CurrencyNames/pt/bgl=Lev forte búlgaro +CurrencyNames/pt/bgn=Lev búlgaro CurrencyNames/pt/bhd=Dinar bareinita CurrencyNames/pt/bif=Franco burundiano -CurrencyNames/pt/bmd=D\u00f3lar bermudense -CurrencyNames/pt/bnd=D\u00f3lar bruneano +CurrencyNames/pt/bmd=Dólar bermudense +CurrencyNames/pt/bnd=Dólar bruneano CurrencyNames/pt/bov=Mvdol boliviano CurrencyNames/pt/brl=Real brasileiro -CurrencyNames/pt/bsd=D\u00f3lar bahamense -CurrencyNames/pt/btn=Ngultrum butan\u00eas +CurrencyNames/pt/bsd=Dólar bahamense +CurrencyNames/pt/btn=Ngultrum butanês CurrencyNames/pt/bwp=Pula botsuanesa -CurrencyNames/pt/byb=Rublo novo bielo-russo (1994\u20131999) -CurrencyNames/pt/byr=Rublo bielorrusso (2000\u20132016) -CurrencyNames/pt/bzd=D\u00f3lar belizenho -CurrencyNames/pt/cad=D\u00f3lar canadense -CurrencyNames/pt/cdf=Franco congol\u00eas -CurrencyNames/pt/chf=Franco su\u00ed\u00e7o +CurrencyNames/pt/byb=Rublo novo bielo-russo (1994–1999) +CurrencyNames/pt/byr=Rublo bielorrusso (2000–2016) +CurrencyNames/pt/bzd=Dólar belizenho +CurrencyNames/pt/cad=Dólar canadense +CurrencyNames/pt/cdf=Franco congolês +CurrencyNames/pt/chf=Franco suíço CurrencyNames/pt/clf=Unidades de Fomento chilenas CurrencyNames/pt/clp=Peso chileno -CurrencyNames/pt/cny=Yuan chin\u00eas +CurrencyNames/pt/cny=Yuan chinês CurrencyNames/pt/cop=Peso colombiano -CurrencyNames/pt/crc=Col\u00f3n costarriquenho -CurrencyNames/pt/csd=Dinar s\u00e9rvio (2002\u20132006) +CurrencyNames/pt/crc=Colón costarriquenho +CurrencyNames/pt/csd=Dinar sérvio (2002–2006) CurrencyNames/pt/cup=Peso cubano CurrencyNames/pt/cve=Escudo cabo-verdiano CurrencyNames/pt/cyp=Libra cipriota CurrencyNames/pt/czk=Coroa tcheca -CurrencyNames/pt/dem=Marco alem\u00e3o +CurrencyNames/pt/dem=Marco alemão CurrencyNames/pt/djf=Franco djiboutiano CurrencyNames/pt/dkk=Coroa dinamarquesa CurrencyNames/pt/dop=Peso dominicano CurrencyNames/pt/dzd=Dinar argelino CurrencyNames/pt/eek=Coroa estoniana -CurrencyNames/pt/egp=Libra eg\u00edpcia +CurrencyNames/pt/egp=Libra egípcia CurrencyNames/pt/ern=Nakfa da Eritreia CurrencyNames/pt/esp=Peseta espanhola -CurrencyNames/pt/etb=Birr et\u00edope +CurrencyNames/pt/etb=Birr etíope CurrencyNames/pt/fim=Marca finlandesa -CurrencyNames/pt/fjd=D\u00f3lar fijiano +CurrencyNames/pt/fjd=Dólar fijiano CurrencyNames/pt/fkp=Libra malvinense -CurrencyNames/pt/frf=Franco franc\u00eas +CurrencyNames/pt/frf=Franco francês CurrencyNames/pt/gbp=Libra esterlina CurrencyNames/pt/gel=Lari georgiano -CurrencyNames/pt/ghc=Cedi de Gana (1979\u20132007) -CurrencyNames/pt/ghs=Cedi gan\u00eas +CurrencyNames/pt/ghc=Cedi de Gana (1979–2007) +CurrencyNames/pt/ghs=Cedi ganês CurrencyNames/pt/gip=Libra de Gibraltar CurrencyNames/pt/gmd=Dalasi gambiano CurrencyNames/pt/gnf=Franco guineano CurrencyNames/pt/grd=Dracma grego CurrencyNames/pt/gtq=Quetzal guatemalteco -CurrencyNames/pt/gwp=Peso da Guin\u00e9-Bissau -CurrencyNames/pt/gyd=D\u00f3lar guianense -CurrencyNames/pt/hkd=D\u00f3lar de Hong Kong +CurrencyNames/pt/gwp=Peso da Guiné-Bissau +CurrencyNames/pt/gyd=Dólar guianense +CurrencyNames/pt/hkd=Dólar de Hong Kong CurrencyNames/pt/hnl=Lempira hondurenha CurrencyNames/pt/hrk=Kuna croata CurrencyNames/pt/htg=Gourde haitiano -CurrencyNames/pt/huf=Florim h\u00fangaro -CurrencyNames/pt/idr=Rupia indon\u00e9sia +CurrencyNames/pt/huf=Florim húngaro +CurrencyNames/pt/idr=Rupia indonésia CurrencyNames/pt/iep=Libra irlandesa CurrencyNames/pt/ils=Novo shekel israelense CurrencyNames/pt/inr=Rupia indiana @@ -6247,9 +6247,9 @@ CurrencyNames/pt/irr=Rial iraniano CurrencyNames/pt/isk=Coroa islandesa CurrencyNames/pt/itl=Lira italiana -CurrencyNames/pt/jmd=D\u00f3lar jamaicano +CurrencyNames/pt/jmd=Dólar jamaicano CurrencyNames/pt/jod=Dinar jordaniano -CurrencyNames/pt/jpy=Iene japon\u00eas +CurrencyNames/pt/jpy=Iene japonês CurrencyNames/pt/kes=Xelim queniano CurrencyNames/pt/kgs=Som quirguiz CurrencyNames/pt/khr=Riel cambojano @@ -6257,26 +6257,26 @@ CurrencyNames/pt/kpw=Won norte-coreano CurrencyNames/pt/krw=Won sul-coreano CurrencyNames/pt/kwd=Dinar kuwaitiano -CurrencyNames/pt/kyd=D\u00f3lar das Ilhas Cayman +CurrencyNames/pt/kyd=Dólar das Ilhas Cayman CurrencyNames/pt/kzt=Tenge cazaque CurrencyNames/pt/lak=Kip laosiano CurrencyNames/pt/lbp=Libra libanesa CurrencyNames/pt/lkr=Rupia cingalesa -CurrencyNames/pt/lrd=D\u00f3lar liberiano +CurrencyNames/pt/lrd=Dólar liberiano CurrencyNames/pt/lsl=Loti lesotiano CurrencyNames/pt/ltl=Litas lituano -CurrencyNames/pt/luf=Franco luxemburgu\u00eas -CurrencyNames/pt/lvl=Lats let\u00e3o -CurrencyNames/pt/lyd=Dinar l\u00edbio +CurrencyNames/pt/luf=Franco luxemburguês +CurrencyNames/pt/lvl=Lats letão +CurrencyNames/pt/lyd=Dinar líbio CurrencyNames/pt/mad=Dirham marroquino -CurrencyNames/pt/mdl=Leu mold\u00e1vio +CurrencyNames/pt/mdl=Leu moldávio CurrencyNames/pt/mga=Ariary malgaxe CurrencyNames/pt/mgf=Franco de Madagascar -CurrencyNames/pt/mkd=Dinar maced\u00f4nio +CurrencyNames/pt/mkd=Dinar macedônio CurrencyNames/pt/mmk=Quiate mianmarense CurrencyNames/pt/mnt=Tugrik mongol CurrencyNames/pt/mop=Pataca macaense -CurrencyNames/pt/mro=Ouguiya mauritana (1973\u20132017) +CurrencyNames/pt/mro=Ouguiya mauritana (1973–2017) CurrencyNames/pt/mtl=Lira maltesa CurrencyNames/pt/mur=Rupia mauriciana CurrencyNames/pt/mvr=Rupia maldivana @@ -6284,69 +6284,69 @@ CurrencyNames/pt/mxn=Peso mexicano CurrencyNames/pt/mxv=Unidade Mexicana de Investimento (UDI) CurrencyNames/pt/myr=Ringgit malaio -CurrencyNames/pt/mzm=Metical de Mo\u00e7ambique (1980\u20132006) -CurrencyNames/pt/mzn=Metical mo\u00e7ambicano -CurrencyNames/pt/nad=D\u00f3lar namibiano +CurrencyNames/pt/mzm=Metical de Moçambique (1980–2006) +CurrencyNames/pt/mzn=Metical moçambicano +CurrencyNames/pt/nad=Dólar namibiano CurrencyNames/pt/ngn=Naira nigeriana -CurrencyNames/pt/nio=C\u00f3rdoba nicaraguense -CurrencyNames/pt/nlg=Florim holand\u00eas +CurrencyNames/pt/nio=Córdoba nicaraguense +CurrencyNames/pt/nlg=Florim holandês CurrencyNames/pt/nok=Coroa norueguesa CurrencyNames/pt/npr=Rupia nepalesa -CurrencyNames/pt/nzd=D\u00f3lar neozeland\u00eas +CurrencyNames/pt/nzd=Dólar neozelandês CurrencyNames/pt/omr=Rial omanense CurrencyNames/pt/pab=Balboa panamenho CurrencyNames/pt/pen=Novo sol peruano -CurrencyNames/pt/pgk=Kina papu\u00e1sia +CurrencyNames/pt/pgk=Kina papuásia CurrencyNames/pt/php=Peso filipino CurrencyNames/pt/pkr=Rupia paquistanesa -CurrencyNames/pt/pln=Zloty polon\u00eas -CurrencyNames/pt/pte=Escudo portugu\u00eas +CurrencyNames/pt/pln=Zloty polonês +CurrencyNames/pt/pte=Escudo português CurrencyNames/pt/pyg=Guarani paraguaio CurrencyNames/pt/qar=Rial catariano -CurrencyNames/pt/rol=Leu romeno (1952\u20132006) +CurrencyNames/pt/rol=Leu romeno (1952–2006) CurrencyNames/pt/ron=Leu romeno -CurrencyNames/pt/rsd=Dinar s\u00e9rvio +CurrencyNames/pt/rsd=Dinar sérvio CurrencyNames/pt/rub=Rublo russo -CurrencyNames/pt/rur=Rublo russo (1991\u20131998) -CurrencyNames/pt/rwf=Franco ruand\u00eas +CurrencyNames/pt/rur=Rublo russo (1991–1998) +CurrencyNames/pt/rwf=Franco ruandês CurrencyNames/pt/sar=Riyal saudita -CurrencyNames/pt/sbd=D\u00f3lar das Ilhas Salom\u00e3o +CurrencyNames/pt/sbd=Dólar das Ilhas Salomão CurrencyNames/pt/scr=Rupia seichelense -CurrencyNames/pt/sdd=Dinar sudan\u00eas (1992\u20132007) +CurrencyNames/pt/sdd=Dinar sudanês (1992–2007) CurrencyNames/pt/sdg=Libra sudanesa CurrencyNames/pt/sek=Coroa sueca -CurrencyNames/pt/sgd=D\u00f3lar singapuriano +CurrencyNames/pt/sgd=Dólar singapuriano CurrencyNames/pt/shp=Libra de Santa Helena CurrencyNames/pt/sit=Tolar Bons esloveno CurrencyNames/pt/skk=Coroa eslovaca CurrencyNames/pt/sll=Leone de Serra Leoa CurrencyNames/pt/sos=Xelim somali -CurrencyNames/pt/srd=D\u00f3lar surinam\u00eas +CurrencyNames/pt/srd=Dólar surinamês CurrencyNames/pt/srg=Florim do Suriname -CurrencyNames/pt/std=Dobra de S\u00e3o Tom\u00e9 e Pr\u00edncipe (1977\u20132017) +CurrencyNames/pt/std=Dobra de São Tomé e Príncipe (1977–2017) CurrencyNames/pt/svc=Colom salvadorenho -CurrencyNames/pt/syp=Libra s\u00edria +CurrencyNames/pt/syp=Libra síria CurrencyNames/pt/szl=Lilangeni suazi -CurrencyNames/pt/thb=Baht tailand\u00eas +CurrencyNames/pt/thb=Baht tailandês CurrencyNames/pt/tjs=Somoni tadjique -CurrencyNames/pt/tmm=Manat do Turcomenist\u00e3o (1993\u20132009) +CurrencyNames/pt/tmm=Manat do Turcomenistão (1993–2009) CurrencyNames/pt/tnd=Dinar tunisiano -CurrencyNames/pt/top=Pa\u02bbanga tonganesa +CurrencyNames/pt/top=Paʻanga tonganesa CurrencyNames/pt/tpe=Escudo timorense -CurrencyNames/pt/trl=Lira turca (1922\u20132005) +CurrencyNames/pt/trl=Lira turca (1922–2005) CurrencyNames/pt/try=Lira turca -CurrencyNames/pt/ttd=D\u00f3lar de Trinidad e Tobago -CurrencyNames/pt/twd=Novo d\u00f3lar taiwan\u00eas +CurrencyNames/pt/ttd=Dólar de Trinidad e Tobago +CurrencyNames/pt/twd=Novo dólar taiwanês CurrencyNames/pt/tzs=Xelim tanzaniano CurrencyNames/pt/uah=Hryvnia ucraniano CurrencyNames/pt/ugx=Xelim ugandense -CurrencyNames/pt/usd=D\u00f3lar americano -CurrencyNames/pt/usn=D\u00f3lar norte-americano (Dia seguinte) -CurrencyNames/pt/uss=D\u00f3lar norte-americano (Mesmo dia) +CurrencyNames/pt/usd=Dólar americano +CurrencyNames/pt/usn=Dólar norte-americano (Dia seguinte) +CurrencyNames/pt/uss=Dólar norte-americano (Mesmo dia) CurrencyNames/pt/uyu=Peso uruguaio CurrencyNames/pt/uzs=Som uzbeque -CurrencyNames/pt/veb=Bol\u00edvar venezuelano (1871\u20132008) -CurrencyNames/pt/vef=Bol\u00edvar venezuelano (2008\u20132018) +CurrencyNames/pt/veb=Bolívar venezuelano (1871–2008) +CurrencyNames/pt/vef=Bolívar venezuelano (2008–2018) CurrencyNames/pt/vnd=Dong vietnamita CurrencyNames/pt/vuv=Vatu de Vanuatu CurrencyNames/pt/wst=Tala samoano @@ -6354,30 +6354,30 @@ CurrencyNames/pt/xag=Prata CurrencyNames/pt/xau=Ouro CurrencyNames/pt/xba=Unidade Composta Europeia -CurrencyNames/pt/xbb=Unidade Monet\u00e1ria Europeia +CurrencyNames/pt/xbb=Unidade Monetária Europeia CurrencyNames/pt/xbc=Unidade de Conta Europeia (XBC) CurrencyNames/pt/xbd=Unidade de Conta Europeia (XBD) -CurrencyNames/pt/xcd=D\u00f3lar do Caribe Oriental +CurrencyNames/pt/xcd=Dólar do Caribe Oriental CurrencyNames/pt/xdr=Direitos Especiais de Giro -CurrencyNames/pt/xfo=Franco-ouro franc\u00eas -CurrencyNames/pt/xfu=Franco UIC franc\u00eas +CurrencyNames/pt/xfo=Franco-ouro francês +CurrencyNames/pt/xfu=Franco UIC francês CurrencyNames/pt/xof=Franco CFA de BCEAO -CurrencyNames/pt/xpd=Pal\u00e1dio +CurrencyNames/pt/xpd=Paládio CurrencyNames/pt/xpf=Franco CFP CurrencyNames/pt/xpt=Platina -CurrencyNames/pt/xts=C\u00f3digo de Moeda de Teste +CurrencyNames/pt/xts=Código de Moeda de Teste CurrencyNames/pt/xxx=Moeda desconhecida CurrencyNames/pt/yer=Rial iemenita -CurrencyNames/pt/yum=Dinar noviy iugoslavo (1994\u20132002) +CurrencyNames/pt/yum=Dinar noviy iugoslavo (1994–2002) CurrencyNames/pt/zar=Rand sul-africano -CurrencyNames/pt/zmk=Cuacha zambiano (1968\u20132012) -CurrencyNames/pt/zwd=D\u00f3lar do Zimb\u00e1bue (1980\u20132008) +CurrencyNames/pt/zmk=Cuacha zambiano (1968–2012) +CurrencyNames/pt/zwd=Dólar do Zimbábue (1980–2008) # bug 7020960 -CurrencyNames/sr_RS/RSD=\u0434\u0438\u043d. +CurrencyNames/sr_RS/RSD=дин. # bug 7025837 -CurrencyNames/sr-Latn-BA/bam=Bosanskohercegova\u010dka konvertibilna marka +CurrencyNames/sr-Latn-BA/bam=Bosanskohercegovačka konvertibilna marka CurrencyNames/sr-Latn-BA/eur=Evro CurrencyNames/sr-Latn-ME/eur=Evro CurrencyNames/sr-Latn-RS/rsd=srpski dinar @@ -6398,7 +6398,7 @@ CurrencyNames//cdf=Congolese Franc CurrencyNames//clf=Chilean Unit of Account (UF) CurrencyNames//cny=Chinese Yuan -CurrencyNames//crc=Costa Rican Col\u00f3n +CurrencyNames//crc=Costa Rican Colón CurrencyNames//csd=Serbian Dinar (2002-2006) CurrencyNames//cve=Cape Verdean Escudo CurrencyNames//cyp=Cypriot Pound @@ -6412,7 +6412,7 @@ CurrencyNames//gtq=Guatemalan Quetzal CurrencyNames//gyd=Guyanaese Dollar CurrencyNames//hnl=Honduran Lempira -CurrencyNames//isk=Icelandic Kr\u00f3na +CurrencyNames//isk=Icelandic Króna CurrencyNames//kgs=Kyrgystani Som CurrencyNames//kmf=Comorian Franc CurrencyNames//kzt=Kazakhstani Tenge @@ -6430,7 +6430,7 @@ CurrencyNames//mzm=Mozambican Metical (1980-2006) CurrencyNames//mzn=Mozambican Metical CurrencyNames//nad=Namibian Dollar -CurrencyNames//nio=Nicaraguan C\u00f3rdoba +CurrencyNames//nio=Nicaraguan Córdoba CurrencyNames//nlg=Dutch Guilder CurrencyNames//omr=Omani Rial CurrencyNames//pgk=Papua New Guinean Kina @@ -6445,20 +6445,20 @@ CurrencyNames//sll=Sierra Leonean Leone CurrencyNames//srd=Surinamese Dollar CurrencyNames//srg=Surinamese Guilder -CurrencyNames//std=S\u00e3o Tom\u00e9 and Pr\u00edncipe Dobra -CurrencyNames//svc=Salvadoran Col\u00f3n +CurrencyNames//std=São Tomé and Príncipe Dobra +CurrencyNames//svc=Salvadoran Colón CurrencyNames//szl=Swazi Lilangeni CurrencyNames//tjs=Tajikistani Somoni CurrencyNames//tmm=Turkmenistani Manat (1993-2009) -CurrencyNames//top=Tongan Pa\u02bbanga +CurrencyNames//top=Tongan Paʻanga CurrencyNames//tpe=Timorese Escudo CurrencyNames//trl=Turkish Lira (1922-2005) CurrencyNames//try=Turkish Lira CurrencyNames//twd=New Taiwan Dollar CurrencyNames//uyu=Uruguayan Peso CurrencyNames//uzs=Uzbekistan Som -CurrencyNames//veb=Venezuelan Bol\u00edvar (1871-2008) -CurrencyNames//vef=Venezuelan Bol\u00edvar +CurrencyNames//veb=Venezuelan Bolívar (1871-2008) +CurrencyNames//vef=Venezuelan Bolívar CurrencyNames//wst=Samoan Tala CurrencyNames//xxx=Unknown Currency CurrencyNames//yum=Yugoslavian New Dinar (1994-2002) @@ -6485,8 +6485,8 @@ CurrencyNames/de/mzm=Mosambikanischer Metical (1980-2006) CurrencyNames/de/mzn=Mosambikanischer Metical CurrencyNames/de/nad=Namibischer Dollar -CurrencyNames/de/nzd=Neuseel\u00e4ndischer Dollar -CurrencyNames/de/ron=Rum\u00e4nischer Leu +CurrencyNames/de/nzd=Neuseeländischer Dollar +CurrencyNames/de/ron=Rumänischer Leu CurrencyNames/de/rsd=Serbischer Dinar CurrencyNames/de/rwf=Ruanda-Franc CurrencyNames/de/sbd=Salomonen-Dollar @@ -6496,226 +6496,226 @@ CurrencyNames/de/sos=Somalischer Schilling CurrencyNames/de/srd=Suriname-Dollar CurrencyNames/de/tpe=Escudo (Portugiesisch-Timor) -CurrencyNames/de/trl=T\u00fcrkische Lira (1922-2005) -CurrencyNames/de/try=T\u00fcrkische Lira +CurrencyNames/de/trl=Türkische Lira (1922-2005) +CurrencyNames/de/try=Türkische Lira CurrencyNames/de/ttd=Trinidad/Tobago-Dollar CurrencyNames/de/twd=Neu-Taiwan Dollar CurrencyNames/de/tzs=Tansania-Schilling CurrencyNames/de/ugx=Uganda-Schilling CurrencyNames/de/usd=US-Dollar -CurrencyNames/de/vef=Venezolanischer Bol\u00edvar Fuerte +CurrencyNames/de/vef=Venezolanischer Bolívar Fuerte CurrencyNames/de/xag=Silber CurrencyNames/de/xau=Gold CurrencyNames/de/xbb=European Monetary Unit CurrencyNames/de/xpd=Palladium CurrencyNames/de/xpt=Platin -CurrencyNames/de/xts=Testw\u00e4hrungscode -CurrencyNames/de/xxx=Unbekannte W\u00e4hrung +CurrencyNames/de/xts=Testwährungscode +CurrencyNames/de/xxx=Unbekannte Währung CurrencyNames/de/yer=Jemen-Rial -CurrencyNames/de/zar=S\u00fcdafrikanischer Rand +CurrencyNames/de/zar=Südafrikanischer Rand CurrencyNames/de/zwd=Simbabwe-Dollar (1980-2008) -CurrencyNames/es/aed=d\u00edrham de los Emiratos \u00c1rabes Unidos -CurrencyNames/es/azm=manat azer\u00ed (1993\u20132006) +CurrencyNames/es/aed=dírham de los Emiratos Árabes Unidos +CurrencyNames/es/azm=manat azerí (1993–2006) CurrencyNames/es/azn=manat azerbaiyano CurrencyNames/es/csd=antiguo dinar serbio -CurrencyNames/es/ghc=cedi ghan\u00e9s (1979\u20132007) +CurrencyNames/es/ghc=cedi ghanés (1979–2007) CurrencyNames/es/ghs=cedi -CurrencyNames/es/mzm=antiguo metical mozambique\u00f1o +CurrencyNames/es/mzm=antiguo metical mozambiqueño CurrencyNames/es/mzn=metical CurrencyNames/es/rsd=dinar serbio CurrencyNames/es/sdg=libra sudanesa -CurrencyNames/es/trl=lira turca (1922\u20132005) -CurrencyNames/es/vef=bol\u00edvar venezolano (2008\u20132018) +CurrencyNames/es/trl=lira turca (1922–2005) +CurrencyNames/es/vef=bolívar venezolano (2008–2018) -CurrencyNames/fr/afa=afghani (1927\u20132002) +CurrencyNames/fr/afa=afghani (1927–2002) CurrencyNames/fr/all=lek albanais CurrencyNames/fr/ang=florin antillais CurrencyNames/fr/awg=florin arubais -CurrencyNames/fr/azm=manat az\u00e9ri (1993\u20132006) -CurrencyNames/fr/azn=manat az\u00e9ri +CurrencyNames/fr/azm=manat azéri (1993–2006) +CurrencyNames/fr/azn=manat azéri CurrencyNames/fr/bam=mark convertible bosniaque CurrencyNames/fr/bbd=dollar barbadien CurrencyNames/fr/bdt=taka bangladeshi -CurrencyNames/fr/bgl=lev bulgare (1962\u20131999) +CurrencyNames/fr/bgl=lev bulgare (1962–1999) CurrencyNames/fr/bgn=lev bulgare -CurrencyNames/fr/bhd=dinar bahre\u00efni +CurrencyNames/fr/bhd=dinar bahreïni CurrencyNames/fr/bif=franc burundais CurrencyNames/fr/bmd=dollar bermudien -CurrencyNames/fr/bnd=dollar brun\u00e9ien +CurrencyNames/fr/bnd=dollar brunéien CurrencyNames/fr/bov=mvdol bolivien -CurrencyNames/fr/brl=r\u00e9al br\u00e9silien -CurrencyNames/fr/bsd=dollar baham\u00e9en +CurrencyNames/fr/brl=réal brésilien +CurrencyNames/fr/bsd=dollar bahaméen CurrencyNames/fr/btn=ngultrum bouthanais CurrencyNames/fr/bwp=pula botswanais -CurrencyNames/fr/bzd=dollar b\u00e9liz\u00e9en +CurrencyNames/fr/bzd=dollar bélizéen CurrencyNames/fr/cny=yuan renminbi chinois -CurrencyNames/fr/crc=col\u00f3n costaricain -CurrencyNames/fr/csd=dinar serbo-mont\u00e9n\u00e9grin +CurrencyNames/fr/crc=colón costaricain +CurrencyNames/fr/csd=dinar serbo-monténégrin CurrencyNames/fr/cve=escudo capverdien CurrencyNames/fr/cyp=livre chypriote CurrencyNames/fr/dem=mark allemand CurrencyNames/fr/djf=franc djiboutien -CurrencyNames/fr/ern=nafka \u00e9rythr\u00e9en -CurrencyNames/fr/etb=birr \u00e9thiopien +CurrencyNames/fr/ern=nafka érythréen +CurrencyNames/fr/etb=birr éthiopien CurrencyNames/fr/fjd=dollar fidjien -CurrencyNames/fr/fkp=livre des \u00eeles Malouines -CurrencyNames/fr/gel=lari g\u00e9orgien -CurrencyNames/fr/ghs=c\u00e9di ghan\u00e9en +CurrencyNames/fr/fkp=livre des îles Malouines +CurrencyNames/fr/gel=lari géorgien +CurrencyNames/fr/ghs=cédi ghanéen CurrencyNames/fr/gmd=dalasi gambien CurrencyNames/fr/grd=drachme grecque -CurrencyNames/fr/gtq=quetzal guat\u00e9malt\u00e8que -CurrencyNames/fr/gwp=peso bissau-guin\u00e9en +CurrencyNames/fr/gtq=quetzal guatémaltèque +CurrencyNames/fr/gwp=peso bissau-guinéen CurrencyNames/fr/hnl=lempira hondurien CurrencyNames/fr/hrk=kuna croate -CurrencyNames/fr/htg=gourde ha\u00eftienne +CurrencyNames/fr/htg=gourde haïtienne CurrencyNames/fr/huf=forint hongrois -CurrencyNames/fr/idr=roupie indon\u00e9sienne -CurrencyNames/fr/ils=nouveau shekel isra\u00e9lien +CurrencyNames/fr/idr=roupie indonésienne +CurrencyNames/fr/ils=nouveau shekel israélien CurrencyNames/fr/iqd=dinar irakien CurrencyNames/fr/jpy=yen japonais -CurrencyNames/fr/kes=shilling k\u00e9nyan +CurrencyNames/fr/kes=shilling kényan CurrencyNames/fr/kgs=som kirghize CurrencyNames/fr/khr=riel cambodgien CurrencyNames/fr/kmf=franc comorien -CurrencyNames/fr/kwd=dinar kowe\u00eftien +CurrencyNames/fr/kwd=dinar koweïtien CurrencyNames/fr/kzt=tenge kazakh CurrencyNames/fr/lak=kip loatien CurrencyNames/fr/lkr=roupie srilankaise CurrencyNames/fr/lsl=loti lesothan CurrencyNames/fr/mga=ariary malgache -CurrencyNames/fr/mkd=denar mac\u00e9donien +CurrencyNames/fr/mkd=denar macédonien CurrencyNames/fr/mmk=kyat myanmarais CurrencyNames/fr/mnt=tugrik mongol CurrencyNames/fr/mop=pataca macanaise -CurrencyNames/fr/mro=ouguiya mauritanien (1973\u20132017) +CurrencyNames/fr/mro=ouguiya mauritanien (1973–2017) CurrencyNames/fr/mvr=rufiyaa maldivien CurrencyNames/fr/mwk=kwacha malawite CurrencyNames/fr/myr=ringgit malais CurrencyNames/fr/mzn=metical mozambicain -CurrencyNames/fr/ngn=naira nig\u00e9rian -CurrencyNames/fr/nio=c\u00f3rdoba oro nicaraguayen -CurrencyNames/fr/npr=roupie n\u00e9palaise -CurrencyNames/fr/pab=balboa panam\u00e9en -CurrencyNames/fr/pgk=kina papouan-n\u00e9o-guin\u00e9en +CurrencyNames/fr/ngn=naira nigérian +CurrencyNames/fr/nio=córdoba oro nicaraguayen +CurrencyNames/fr/npr=roupie népalaise +CurrencyNames/fr/pab=balboa panaméen +CurrencyNames/fr/pgk=kina papouan-néo-guinéen CurrencyNames/fr/pkr=roupie pakistanaise CurrencyNames/fr/pln=zloty polonais -CurrencyNames/fr/pyg=guaran\u00ed paraguayen +CurrencyNames/fr/pyg=guaraní paraguayen CurrencyNames/fr/qar=riyal qatari CurrencyNames/fr/ron=leu roumain CurrencyNames/fr/rsd=dinar serbe CurrencyNames/fr/rub=rouble russe -CurrencyNames/fr/rur=rouble russe (1991\u20131998) -CurrencyNames/fr/sbd=dollar des \u00eeles Salomon +CurrencyNames/fr/rur=rouble russe (1991–1998) +CurrencyNames/fr/sbd=dollar des îles Salomon CurrencyNames/fr/sdg=livre soudanaise -CurrencyNames/fr/sit=tolar slov\u00e8ne -CurrencyNames/fr/sll=leone sierra-l\u00e9onais +CurrencyNames/fr/sit=tolar slovène +CurrencyNames/fr/sll=leone sierra-léonais CurrencyNames/fr/sos=shilling somalien CurrencyNames/fr/srg=florin surinamais -CurrencyNames/fr/std=dobra santom\u00e9en (1977\u20132017) -CurrencyNames/fr/svc=col\u00f3n salvadorien +CurrencyNames/fr/std=dobra santoméen (1977–2017) +CurrencyNames/fr/svc=colón salvadorien CurrencyNames/fr/szl=lilangeni swazi -CurrencyNames/fr/thb=baht tha\u00eflandais +CurrencyNames/fr/thb=baht thaïlandais CurrencyNames/fr/tjs=somoni tadjik -CurrencyNames/fr/tmm=manat turkm\u00e8ne -CurrencyNames/fr/top=pa\u2019anga tongan +CurrencyNames/fr/tmm=manat turkmène +CurrencyNames/fr/top=pa’anga tongan CurrencyNames/fr/tpe=escudo timorais -CurrencyNames/fr/ttd=dollar de Trinit\u00e9-et-Tobago -CurrencyNames/fr/twd=nouveau dollar ta\u00efwanais +CurrencyNames/fr/ttd=dollar de Trinité-et-Tobago +CurrencyNames/fr/twd=nouveau dollar taïwanais CurrencyNames/fr/tzs=shilling tanzanien CurrencyNames/fr/uah=hryvnia ukrainienne CurrencyNames/fr/uzs=sum ouzbek -CurrencyNames/fr/vef=bolivar v\u00e9n\u00e9zu\u00e9lien (2008\u20132018) -CurrencyNames/fr/vnd=d\u00f4ng vietnamien +CurrencyNames/fr/vef=bolivar vénézuélien (2008–2018) +CurrencyNames/fr/vnd=dông vietnamien CurrencyNames/fr/vuv=vatu vanuatuan CurrencyNames/fr/wst=tala samoan CurrencyNames/fr/xts=(devise de test) CurrencyNames/fr/xxx=devise inconnue ou non valide -CurrencyNames/fr/yer=riyal y\u00e9m\u00e9nite +CurrencyNames/fr/yer=riyal yéménite CurrencyNames/fr/zar=rand sud-africain -CurrencyNames/fr/zmk=kwacha zambien (1968\u20132012) -CurrencyNames/fr/zwd=dollar zimbabw\u00e9en +CurrencyNames/fr/zmk=kwacha zambien (1968–2012) +CurrencyNames/fr/zwd=dollar zimbabwéen -CurrencyNames/it/azm=manat azero (1993\u20132006) +CurrencyNames/it/azm=manat azero (1993–2006) CurrencyNames/it/ghs=cedi ghanese CurrencyNames/it/iep=sterlina irlandese CurrencyNames/it/mzn=metical mozambicano CurrencyNames/it/rsd=dinaro serbo CurrencyNames/it/sdg=sterlina sudanese CurrencyNames/it/srd=dollaro del Suriname -CurrencyNames/it/vef=bol\u00edvar venezuelano (2008\u20132018) +CurrencyNames/it/vef=bolívar venezuelano (2008–2018) CurrencyNames/it/xag=argento CurrencyNames/it/xpd=palladio -CurrencyNames/ja/azm=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u30fb\u30de\u30ca\u30c8(1993-2006) -CurrencyNames/ja/azn=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u30fb\u30de\u30ca\u30c8 -CurrencyNames/ja/ghc=\u30ac\u30fc\u30ca\u30fb\u30bb\u30c7\u30a3(1979-2007) -CurrencyNames/ja/ghs=\u30ac\u30fc\u30ca\u30fb\u30bb\u30c7\u30a3 -CurrencyNames/ja/mzn=\u30e2\u30b6\u30f3\u30d3\u30fc\u30af\u30fb\u30e1\u30c6\u30a3\u30ab\u30eb -CurrencyNames/ja/rol=\u30eb\u30fc\u30de\u30cb\u30a2\u30fb\u30ec\u30a4(1952-2006) -CurrencyNames/ja/ron=\u30eb\u30fc\u30de\u30cb\u30a2\u30fb\u30ec\u30a4 -CurrencyNames/ja/rsd=\u30bb\u30eb\u30d3\u30a2\u30fb\u30c7\u30a3\u30ca\u30fc\u30eb -CurrencyNames/ja/sdg=\u30b9\u30fc\u30c0\u30f3\u30fb\u30dd\u30f3\u30c9 -CurrencyNames/ja/srd=\u30b9\u30ea\u30ca\u30e0\u30fb\u30c9\u30eb -CurrencyNames/ja/vef=\u30d9\u30cd\u30ba\u30a8\u30e9\u30fb\u30dc\u30ea\u30d0\u30eb -CurrencyNames/ja/xag=\u9280 -CurrencyNames/ja/xpd=\u30d1\u30e9\u30b8\u30a6\u30e0 -CurrencyNames/ja/xpt=\u30d7\u30e9\u30c1\u30ca -CurrencyNames/ja/xts=\u30c6\u30b9\u30c8\u901a\u8ca8\u30b3\u30fc\u30c9 -CurrencyNames/ja/xxx=\u4e0d\u660e\u306a\u901a\u8ca8 -CurrencyNames/ja/zmk=\u30b6\u30f3\u30d3\u30a2\u30fb\u30af\u30ef\u30c1\u30e3 - -CurrencyNames/ko/aed=\uc544\ub78d\uc5d0\ubbf8\ub9ac\ud2b8 \ub514\ub974\ud568 -CurrencyNames/ko/ang=\ub124\ub35c\ub780\ub4dc\ub839 \uc548\ud2f8\ub808\uc2a4 \uae38\ub354 -CurrencyNames/ko/azm=\uc544\uc81c\ub974\ubc14\uc774\uc820 \ub9c8\ub098\ud2b8(1993\u20132006) -CurrencyNames/ko/azn=\uc544\uc81c\ub974\ubc14\uc774\uc794 \ub9c8\ub098\ud2b8 -CurrencyNames/ko/bov=\ubcfc\ub9ac\ube44\uc544\ub178 Mvdol(\uae30\uae08) -CurrencyNames/ko/chf=\uc2a4\uc704\uc2a4 \ud504\ub791 -CurrencyNames/ko/clf=\uce60\ub808 (UF) -CurrencyNames/ko/csd=\uace0 \uc138\ub974\ube44\uc544 \ub514\ub098\ub974 -CurrencyNames/ko/ghc=\uac00\ub098 \uc2dc\ub514 (1979\u20132007) -CurrencyNames/ko/ghs=\uac00\ub098 \uc2dc\ub514 -CurrencyNames/ko/mxv=\uba55\uc2dc\ucf54 (UDI) -CurrencyNames/ko/myr=\ub9d0\ub808\uc774\uc2dc\uc544 \ub9c1\uae43 -CurrencyNames/ko/mzm=\uace0 \ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c -CurrencyNames/ko/mzn=\ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c -CurrencyNames/ko/ron=\ub8e8\ub9c8\ub2c8\uc544 \ub808\uc6b0 -CurrencyNames/ko/rsd=\uc138\ub974\ube44\uc544 \ub514\ub098\ub974 -CurrencyNames/ko/sdg=\uc218\ub2e8 \ud30c\uc6b4\ub4dc -CurrencyNames/ko/srd=\uc218\ub9ac\ub0a8 \ub2ec\ub7ec -CurrencyNames/ko/top=\ud1b5\uac00 \ud30c\uc559\uac00 -CurrencyNames/ko/trl=\ud130\ud0a4 \ub9ac\ub77c -CurrencyNames/ko/try=\uc2e0 \ud130\ud0a4 \ub9ac\ub77c -CurrencyNames/ko/usn=\ubbf8\uad6d \ub2ec\ub7ec(\ub2e4\uc74c\ub0a0) -CurrencyNames/ko/uss=\ubbf8\uad6d \ub2ec\ub7ec(\ub2f9\uc77c) -CurrencyNames/ko/vef=\ubca0\ub124\uc218\uc5d8\ub77c \ubcfc\ub9ac\ubc14\ub974 (2008\u20132018) -CurrencyNames/ko/xaf=\uc911\uc559\uc544\ud504\ub9ac\uce74 CFA \ud504\ub791 -CurrencyNames/ko/xag=\uc740\ud654 -CurrencyNames/ko/xba=\uc720\ub974\ucf54 (\uc720\ub7fd \ud68c\uacc4 \ub2e8\uc704) -CurrencyNames/ko/xbb=\uc720\ub7fd \ud1b5\ud654 \ub3d9\ub9f9 -CurrencyNames/ko/xbc=\uc720\ub7fd \uacc4\uc0b0 \ub2e8\uc704 (XBC) -CurrencyNames/ko/xbd=\uc720\ub7fd \uacc4\uc0b0 \ub2e8\uc704 (XBD) -CurrencyNames/ko/xof=\uc11c\uc544\ud504\ub9ac\uce74 CFA \ud504\ub791 -CurrencyNames/ko/xpd=\ud314\ub77c\ub4d0 -CurrencyNames/ko/xpf=CFP \ud504\ub791 -CurrencyNames/ko/xpt=\ubc31\uae08 -CurrencyNames/ko/xts=\ud14c\uc2a4\ud2b8 \ud1b5\ud654 \ucf54\ub4dc -CurrencyNames/ko/xxx=\uc54c \uc218 \uc5c6\ub294 \ud1b5\ud654 \ub2e8\uc704 -CurrencyNames/ko/zwd=\uc9d0\ubc14\ube0c\uc6e8 \ub2ec\ub7ec +CurrencyNames/ja/azm=アゼルバイジャン・マナト(1993-2006) +CurrencyNames/ja/azn=アゼルバイジャン・マナト +CurrencyNames/ja/ghc=ガーナ・セディ(1979-2007) +CurrencyNames/ja/ghs=ガーナ・セディ +CurrencyNames/ja/mzn=モザンビーク・メティカル +CurrencyNames/ja/rol=ルーマニア・レイ(1952-2006) +CurrencyNames/ja/ron=ルーマニア・レイ +CurrencyNames/ja/rsd=セルビア・ディナール +CurrencyNames/ja/sdg=スーダン・ポンド +CurrencyNames/ja/srd=スリナム・ドル +CurrencyNames/ja/vef=ベネズエラ・ボリバル +CurrencyNames/ja/xag=銀 +CurrencyNames/ja/xpd=パラジウム +CurrencyNames/ja/xpt=プラチナ +CurrencyNames/ja/xts=テスト通貨コード +CurrencyNames/ja/xxx=不明な通貨 +CurrencyNames/ja/zmk=ザンビア・クワチャ + +CurrencyNames/ko/aed=아랍에미리트 디르함 +CurrencyNames/ko/ang=네덜란드령 안틸레스 길더 +CurrencyNames/ko/azm=아제르바이젠 마나트(1993–2006) +CurrencyNames/ko/azn=아제르바이잔 마나트 +CurrencyNames/ko/bov=볼리비아노 Mvdol(기금) +CurrencyNames/ko/chf=스위스 프랑 +CurrencyNames/ko/clf=칠레 (UF) +CurrencyNames/ko/csd=고 세르비아 디나르 +CurrencyNames/ko/ghc=가나 시디 (1979–2007) +CurrencyNames/ko/ghs=가나 시디 +CurrencyNames/ko/mxv=멕시코 (UDI) +CurrencyNames/ko/myr=말레이시아 링깃 +CurrencyNames/ko/mzm=고 모잠비크 메티칼 +CurrencyNames/ko/mzn=모잠비크 메티칼 +CurrencyNames/ko/ron=루마니아 레우 +CurrencyNames/ko/rsd=세르비아 디나르 +CurrencyNames/ko/sdg=수단 파운드 +CurrencyNames/ko/srd=수리남 달러 +CurrencyNames/ko/top=통가 파앙가 +CurrencyNames/ko/trl=터키 리라 +CurrencyNames/ko/try=신 터키 리라 +CurrencyNames/ko/usn=미국 달러(다음날) +CurrencyNames/ko/uss=미국 달러(당일) +CurrencyNames/ko/vef=베네수엘라 볼리바르 (2008–2018) +CurrencyNames/ko/xaf=중앙아프리카 CFA 프랑 +CurrencyNames/ko/xag=은화 +CurrencyNames/ko/xba=유르코 (유럽 회계 단위) +CurrencyNames/ko/xbb=유럽 통화 동맹 +CurrencyNames/ko/xbc=유럽 계산 단위 (XBC) +CurrencyNames/ko/xbd=유럽 계산 단위 (XBD) +CurrencyNames/ko/xof=서아프리카 CFA 프랑 +CurrencyNames/ko/xpd=팔라듐 +CurrencyNames/ko/xpf=CFP 프랑 +CurrencyNames/ko/xpt=백금 +CurrencyNames/ko/xts=테스트 통화 코드 +CurrencyNames/ko/xxx=알 수 없는 통화 단위 +CurrencyNames/ko/zwd=짐바브웨 달러 CurrencyNames/sv/adp=andorransk peseta CurrencyNames/sv/aed=emiratisk dirham -CurrencyNames/sv/afa=afghani (1927\u20132002) +CurrencyNames/sv/afa=afghani (1927–2002) CurrencyNames/sv/afn=afghansk afghani CurrencyNames/sv/all=albansk lek CurrencyNames/sv/amd=armenisk dram CurrencyNames/sv/ang=antillergulden CurrencyNames/sv/aoa=angolansk kwanza CurrencyNames/sv/ars=argentinsk peso -CurrencyNames/sv/ats=\u00f6sterrikisk schilling +CurrencyNames/sv/ats=österrikisk schilling CurrencyNames/sv/aud=australisk dollar CurrencyNames/sv/awg=arubansk florin -CurrencyNames/sv/azm=azerbajdzjansk manat (1993\u20132006) +CurrencyNames/sv/azm=azerbajdzjansk manat (1993–2006) CurrencyNames/sv/azn=azerbajdzjansk manat CurrencyNames/sv/bam=bosnisk-hercegovinsk mark (konvertibel) CurrencyNames/sv/bbd=barbadisk dollar @@ -6731,8 +6731,8 @@ CurrencyNames/sv/bsd=bahamansk dollar CurrencyNames/sv/btn=bhutanesisk ngultrum CurrencyNames/sv/bwp=botswansk pula -CurrencyNames/sv/byb=vitrysk ny rubel (1994\u20131999) -CurrencyNames/sv/byr=vitrysk rubel (2000\u20132016) +CurrencyNames/sv/byb=vitrysk ny rubel (1994–1999) +CurrencyNames/sv/byr=vitrysk rubel (2000–2016) CurrencyNames/sv/bzd=belizisk dollar CurrencyNames/sv/cad=kanadensisk dollar CurrencyNames/sv/cdf=kongolesisk franc @@ -6741,8 +6741,8 @@ CurrencyNames/sv/clp=chilensk peso CurrencyNames/sv/cny=kinesisk yuan CurrencyNames/sv/cop=colombiansk peso -CurrencyNames/sv/crc=costarikansk col\u00f3n -CurrencyNames/sv/csd=serbisk dinar (2002\u20132006) +CurrencyNames/sv/crc=costarikansk colón +CurrencyNames/sv/csd=serbisk dinar (2002–2006) CurrencyNames/sv/cup=kubansk peso CurrencyNames/sv/cve=kapverdisk escudo CurrencyNames/sv/cyp=cypriotiskt pund @@ -6763,7 +6763,7 @@ CurrencyNames/sv/frf=fransk franc CurrencyNames/sv/gbp=brittiskt pund CurrencyNames/sv/gel=georgisk lari -CurrencyNames/sv/ghc=ghanansk cedi (1979\u20132007) +CurrencyNames/sv/ghc=ghanansk cedi (1979–2007) CurrencyNames/sv/ghs=ghanansk cedi CurrencyNames/sv/gip=gibraltiskt pund CurrencyNames/sv/gmd=gambisk dalasi @@ -6776,12 +6776,12 @@ CurrencyNames/sv/htg=haitisk gourde CurrencyNames/sv/huf=ungersk forint CurrencyNames/sv/idr=indonesisk rupie -CurrencyNames/sv/iep=irl\u00e4ndskt pund +CurrencyNames/sv/iep=irländskt pund CurrencyNames/sv/ils=israelisk ny shekel CurrencyNames/sv/inr=indisk rupie CurrencyNames/sv/iqd=irakisk dinar CurrencyNames/sv/irr=iransk rial -CurrencyNames/sv/isk=isl\u00e4ndsk krona +CurrencyNames/sv/isk=isländsk krona CurrencyNames/sv/itl=italiensk lire CurrencyNames/sv/jmd=jamaicansk dollar CurrencyNames/sv/jod=jordansk dinar @@ -6809,9 +6809,9 @@ CurrencyNames/sv/mgf=madagaskisk franc CurrencyNames/sv/mkd=makedonisk denar CurrencyNames/sv/mmk=myanmarisk kyat -CurrencyNames/sv/mnt=mongolisk t\u00f6gr\u00f6g +CurrencyNames/sv/mnt=mongolisk tögrög CurrencyNames/sv/mop=makanesisk pataca -CurrencyNames/sv/mro=mauretansk ouguiya (1973\u20132017) +CurrencyNames/sv/mro=mauretansk ouguiya (1973–2017) CurrencyNames/sv/mtl=maltesisk lire CurrencyNames/sv/mur=mauritisk rupie CurrencyNames/sv/mvr=maldivisk rufiyaa @@ -6819,15 +6819,15 @@ CurrencyNames/sv/mxn=mexikansk peso CurrencyNames/sv/mxv=mexikansk unidad de inversion CurrencyNames/sv/myr=malaysisk ringgit -CurrencyNames/sv/mzm=gammal mo\u00e7ambikisk metical -CurrencyNames/sv/mzn=mo\u00e7ambikisk metical +CurrencyNames/sv/mzm=gammal moçambikisk metical +CurrencyNames/sv/mzn=moçambikisk metical CurrencyNames/sv/nad=namibisk dollar CurrencyNames/sv/ngn=nigeriansk naira -CurrencyNames/sv/nio=nicaraguansk c\u00f3rdoba -CurrencyNames/sv/nlg=nederl\u00e4ndsk gulden +CurrencyNames/sv/nio=nicaraguansk córdoba +CurrencyNames/sv/nlg=nederländsk gulden CurrencyNames/sv/nok=norsk krona CurrencyNames/sv/npr=nepalesisk rupie -CurrencyNames/sv/nzd=nyzeel\u00e4ndsk dollar +CurrencyNames/sv/nzd=nyzeeländsk dollar CurrencyNames/sv/omr=omansk rial CurrencyNames/sv/pab=panamansk balboa CurrencyNames/sv/pen=peruansk sol @@ -6838,15 +6838,15 @@ CurrencyNames/sv/pte=portugisisk escudo CurrencyNames/sv/pyg=paraguayansk guarani CurrencyNames/sv/qar=qatarisk rial -CurrencyNames/sv/rol=rum\u00e4nsk leu (1952\u20132005) -CurrencyNames/sv/ron=rum\u00e4nsk leu +CurrencyNames/sv/rol=rumänsk leu (1952–2005) +CurrencyNames/sv/ron=rumänsk leu CurrencyNames/sv/rsd=serbisk dinar CurrencyNames/sv/rub=rysk rubel -CurrencyNames/sv/rur=rysk rubel (1991\u20131998) +CurrencyNames/sv/rur=rysk rubel (1991–1998) CurrencyNames/sv/rwf=rwandisk franc CurrencyNames/sv/sar=saudisk riyal CurrencyNames/sv/scr=seychellisk rupie -CurrencyNames/sv/sdd=sudansk dinar (1992\u20132007) +CurrencyNames/sv/sdd=sudansk dinar (1992–2007) CurrencyNames/sv/sdg=sudanesiskt pund CurrencyNames/sv/sek=svensk krona CurrencyNames/sv/sgd=singaporiansk dollar @@ -6856,16 +6856,16 @@ CurrencyNames/sv/sos=somalisk shilling CurrencyNames/sv/srd=surinamesisk dollar CurrencyNames/sv/srg=surinamesisk gulden -CurrencyNames/sv/svc=salvadoransk col\u00f3n +CurrencyNames/sv/svc=salvadoransk colón CurrencyNames/sv/syp=syriskt pund -CurrencyNames/sv/szl=swazil\u00e4ndsk lilangeni -CurrencyNames/sv/thb=thail\u00e4ndsk baht +CurrencyNames/sv/szl=swaziländsk lilangeni +CurrencyNames/sv/thb=thailändsk baht CurrencyNames/sv/tjs=tadzjikisk somoni -CurrencyNames/sv/tmm=turkmenistansk manat (1993\u20132009) +CurrencyNames/sv/tmm=turkmenistansk manat (1993–2009) CurrencyNames/sv/tnd=tunisisk dinar -CurrencyNames/sv/top=tongansk pa\u02bbanga -CurrencyNames/sv/tpe=\u00f6sttimoresisk escudo -CurrencyNames/sv/trl=turkisk lire (1922\u20132005) +CurrencyNames/sv/top=tongansk paʻanga +CurrencyNames/sv/tpe=östtimoresisk escudo +CurrencyNames/sv/trl=turkisk lire (1922–2005) CurrencyNames/sv/try=turkisk lira CurrencyNames/sv/ttd=Trinidaddollar CurrencyNames/sv/twd=taiwanesisk dollar @@ -6874,91 +6874,91 @@ CurrencyNames/sv/ugx=ugandisk shilling CurrencyNames/sv/uyu=uruguayansk peso CurrencyNames/sv/uzs=uzbekisk sum -CurrencyNames/sv/veb=venezuelansk bolivar (1871\u20132008) -CurrencyNames/sv/vef=venezuelansk bol\u00edvar (2008\u20132018) +CurrencyNames/sv/veb=venezuelansk bolivar (1871–2008) +CurrencyNames/sv/vef=venezuelansk bolívar (2008–2018) CurrencyNames/sv/vnd=vietnamesisk dong CurrencyNames/sv/vuv=vanuatisk vatu -CurrencyNames/sv/wst=v\u00e4stsamoansk tala +CurrencyNames/sv/wst=västsamoansk tala CurrencyNames/sv/xag=silver CurrencyNames/sv/xau=guld CurrencyNames/sv/xba=europeisk kompositenhet -CurrencyNames/sv/xbb=europeisk monet\u00e4r enhet +CurrencyNames/sv/xbb=europeisk monetär enhet CurrencyNames/sv/xbc=europeisk kontoenhet (XBC) CurrencyNames/sv/xbd=europeisk kontoenhet (XBD) -CurrencyNames/sv/xcd=\u00f6stkaribisk dollar -CurrencyNames/sv/xdr=IMF s\u00e4rskild dragningsr\u00e4tt +CurrencyNames/sv/xcd=östkaribisk dollar +CurrencyNames/sv/xdr=IMF särskild dragningsrätt CurrencyNames/sv/xfo=fransk guldfranc CurrencyNames/sv/xpd=palladium CurrencyNames/sv/xpt=platina CurrencyNames/sv/xts=testvalutaenhet -CurrencyNames/sv/xxx=ok\u00e4nd valuta +CurrencyNames/sv/xxx=okänd valuta CurrencyNames/sv/yer=jemenitisk rial -CurrencyNames/sv/yum=jugoslavisk dinar (1994\u20132002) +CurrencyNames/sv/yum=jugoslavisk dinar (1994–2002) CurrencyNames/sv/zar=sydafrikansk rand -CurrencyNames/sv/zmk=zambisk kwacha (1968\u20132012) +CurrencyNames/sv/zmk=zambisk kwacha (1968–2012) CurrencyNames/sv/zwd=Zimbabwe-dollar -CurrencyNames/zh_CN/ang=\u8377\u5c5e\u5b89\u7684\u5217\u65af\u76fe -CurrencyNames/zh_CN/azm=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279 (1993-2006) -CurrencyNames/zh_CN/azn=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279 -CurrencyNames/zh_CN/csd=\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14 (2002-2006) -CurrencyNames/zh_CN/ghs=\u52a0\u7eb3\u585e\u5730 -CurrencyNames/zh_CN/mzm=\u83ab\u6851\u6bd4\u514b\u7f8e\u63d0\u5361 (1980-2006) -CurrencyNames/zh_CN/mzn=\u83ab\u6851\u6bd4\u514b\u7f8e\u63d0\u5361 -CurrencyNames/zh_CN/ron=\u7f57\u9a6c\u5c3c\u4e9a\u5217\u4f0a -CurrencyNames/zh_CN/rsd=\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14 -CurrencyNames/zh_CN/shp=\u5723\u8d6b\u52d2\u62ff\u9551 -CurrencyNames/zh_CN/twd=\u65b0\u53f0\u5e01 -CurrencyNames/zh_CN/vef=\u59d4\u5185\u745e\u62c9\u73bb\u5229\u74e6\u5c14 -CurrencyNames/zh_CN/xxx=\u672a\u77e5\u8d27\u5e01 - -CurrencyNames/zh_TW/afa=\u963f\u5bcc\u6c57\u5c3c (1927\u20132002) -CurrencyNames/zh_TW/ang=\u8377\u5c6c\u5b89\u5730\u5217\u65af\u76fe -CurrencyNames/zh_TW/azm=\u4e9e\u585e\u62dc\u7136\u99ac\u7d0d\u7279 (1993\u20132006) -CurrencyNames/zh_TW/azn=\u4e9e\u585e\u62dc\u7136\u99ac\u7d0d\u7279 -CurrencyNames/zh_TW/bwp=\u6ce2\u672d\u90a3\u666e\u62c9 -CurrencyNames/zh_TW/bzd=\u8c9d\u91cc\u65af\u5143 -CurrencyNames/zh_TW/csd=\u820a\u585e\u723e\u7dad\u4e9e\u7b2c\u7d0d\u723e -CurrencyNames/zh_TW/cyp=\u8cfd\u666e\u52d2\u65af\u938a -CurrencyNames/zh_TW/ghc=\u8fe6\u7d0d\u8cfd\u5730 (1979\u20132007) -CurrencyNames/zh_TW/ghs=\u8fe6\u7d0d\u585e\u5730 -CurrencyNames/zh_TW/gwp=\u5e7e\u5167\u4e9e\u6bd4\u7d22\u62ab\u7d22 -CurrencyNames/zh_TW/huf=\u5308\u7259\u5229\u798f\u6797 -CurrencyNames/zh_TW/idr=\u5370\u5c3c\u76fe -CurrencyNames/zh_TW/inr=\u5370\u5ea6\u76e7\u6bd4 -CurrencyNames/zh_TW/kpw=\u5317\u97d3\u5143 -CurrencyNames/zh_TW/krw=\u97d3\u5143 -CurrencyNames/zh_TW/lak=\u5bee\u570b\u57fa\u666e -CurrencyNames/zh_TW/mad=\u6469\u6d1b\u54e5\u8fea\u62c9\u59c6 -CurrencyNames/zh_TW/mxn=\u58a8\u897f\u54e5\u62ab\u7d22 -CurrencyNames/zh_TW/mxv=\u58a8\u897f\u54e5\u8f49\u63db\u55ae\u4f4d (UDI) -CurrencyNames/zh_TW/myr=\u99ac\u4f86\u897f\u4e9e\u4ee4\u5409 -CurrencyNames/zh_TW/mzn=\u83ab\u4e09\u6bd4\u514b\u6885\u8482\u5361\u723e -CurrencyNames/zh_TW/nio=\u5c3c\u52a0\u62c9\u74dc\u91d1\u79d1\u591a\u5df4 -CurrencyNames/zh_TW/rol=\u820a\u7f85\u99ac\u5c3c\u4e9e\u5217\u4f0a -CurrencyNames/zh_TW/ron=\u7f85\u99ac\u5c3c\u4e9e\u5217\u4f0a -CurrencyNames/zh_TW/rsd=\u585e\u723e\u7dad\u4e9e\u6234\u7d0d -CurrencyNames/zh_TW/scr=\u585e\u5e2d\u723e\u76e7\u6bd4 -CurrencyNames/zh_TW/sdg=\u8607\u4e39\u938a -CurrencyNames/zh_TW/shp=\u8056\u8d6b\u52d2\u62ff\u938a -CurrencyNames/zh_TW/srd=\u8607\u5229\u5357\u5143 -CurrencyNames/zh_TW/srg=\u8607\u5229\u5357\u57fa\u723e -CurrencyNames/zh_TW/svc=\u85a9\u723e\u74e6\u591a\u79d1\u90ce -CurrencyNames/zh_TW/szl=\u53f2\u74e6\u6fdf\u862d\u91cc\u6717\u5409\u5c3c -CurrencyNames/zh_TW/tpe=\u5e1d\u6c76\u57c3\u65af\u5eab\u591a -CurrencyNames/zh_TW/ttd=\u5343\u91cc\u9054\u53ca\u6258\u5df4\u54e5\u5143 -CurrencyNames/zh_TW/tzs=\u5766\u5c1a\u5c3c\u4e9e\u5148\u4ee4 -CurrencyNames/zh_TW/uzs=\u70cf\u8332\u5225\u514b\u7d22\u59c6 -CurrencyNames/zh_TW/veb=\u59d4\u5167\u745e\u62c9\u73bb\u5229\u74e6 (1871\u20132008) -CurrencyNames/zh_TW/vef=\u59d4\u5167\u745e\u62c9\u73bb\u5229\u74e6 (2008\u20132018) -CurrencyNames/zh_TW/xaf=\u6cd5\u90ce (CFA\u2013BEAC) -CurrencyNames/zh_TW/xag=\u767d\u9280 -CurrencyNames/zh_TW/xof=\u6cd5\u90ce (CFA\u2013BCEAO) -CurrencyNames/zh_TW/xpd=\u5e15\u62c9\u72c4\u6602 -CurrencyNames/zh_TW/xpt=\u767d\u91d1 -CurrencyNames/zh_TW/xts=\u6e2c\u8a66\u7528\u8ca8\u5e63\u4ee3\u78bc -CurrencyNames/zh_TW/xxx=\u672a\u77e5\u8ca8\u5e63 -CurrencyNames/zh_TW/yer=\u8449\u9580\u91cc\u4e9e\u723e +CurrencyNames/zh_CN/ang=荷属安的列斯盾 +CurrencyNames/zh_CN/azm=阿塞拜疆马纳特 (1993-2006) +CurrencyNames/zh_CN/azn=阿塞拜疆马纳特 +CurrencyNames/zh_CN/csd=塞尔维亚第纳尔 (2002-2006) +CurrencyNames/zh_CN/ghs=加纳塞地 +CurrencyNames/zh_CN/mzm=莫桑比克美提卡 (1980-2006) +CurrencyNames/zh_CN/mzn=莫桑比克美提卡 +CurrencyNames/zh_CN/ron=罗马尼亚列伊 +CurrencyNames/zh_CN/rsd=塞尔维亚第纳尔 +CurrencyNames/zh_CN/shp=圣赫勒拿镑 +CurrencyNames/zh_CN/twd=新台币 +CurrencyNames/zh_CN/vef=委内瑞拉玻利瓦尔 +CurrencyNames/zh_CN/xxx=未知货币 + +CurrencyNames/zh_TW/afa=阿富汗尼 (1927–2002) +CurrencyNames/zh_TW/ang=荷屬安地列斯盾 +CurrencyNames/zh_TW/azm=亞塞拜然馬納特 (1993–2006) +CurrencyNames/zh_TW/azn=亞塞拜然馬納特 +CurrencyNames/zh_TW/bwp=波札那普拉 +CurrencyNames/zh_TW/bzd=貝里斯元 +CurrencyNames/zh_TW/csd=舊塞爾維亞第納爾 +CurrencyNames/zh_TW/cyp=賽普勒斯鎊 +CurrencyNames/zh_TW/ghc=迦納賽地 (1979–2007) +CurrencyNames/zh_TW/ghs=迦納塞地 +CurrencyNames/zh_TW/gwp=幾內亞比索披索 +CurrencyNames/zh_TW/huf=匈牙利福林 +CurrencyNames/zh_TW/idr=印尼盾 +CurrencyNames/zh_TW/inr=印度盧比 +CurrencyNames/zh_TW/kpw=北韓元 +CurrencyNames/zh_TW/krw=韓元 +CurrencyNames/zh_TW/lak=寮國基普 +CurrencyNames/zh_TW/mad=摩洛哥迪拉姆 +CurrencyNames/zh_TW/mxn=墨西哥披索 +CurrencyNames/zh_TW/mxv=墨西哥轉換單位 (UDI) +CurrencyNames/zh_TW/myr=馬來西亞令吉 +CurrencyNames/zh_TW/mzn=莫三比克梅蒂卡爾 +CurrencyNames/zh_TW/nio=尼加拉瓜金科多巴 +CurrencyNames/zh_TW/rol=舊羅馬尼亞列伊 +CurrencyNames/zh_TW/ron=羅馬尼亞列伊 +CurrencyNames/zh_TW/rsd=塞爾維亞戴納 +CurrencyNames/zh_TW/scr=塞席爾盧比 +CurrencyNames/zh_TW/sdg=蘇丹鎊 +CurrencyNames/zh_TW/shp=聖赫勒拿鎊 +CurrencyNames/zh_TW/srd=蘇利南元 +CurrencyNames/zh_TW/srg=蘇利南基爾 +CurrencyNames/zh_TW/svc=薩爾瓦多科郎 +CurrencyNames/zh_TW/szl=史瓦濟蘭里朗吉尼 +CurrencyNames/zh_TW/tpe=帝汶埃斯庫多 +CurrencyNames/zh_TW/ttd=千里達及托巴哥元 +CurrencyNames/zh_TW/tzs=坦尚尼亞先令 +CurrencyNames/zh_TW/uzs=烏茲別克索姆 +CurrencyNames/zh_TW/veb=委內瑞拉玻利瓦 (1871–2008) +CurrencyNames/zh_TW/vef=委內瑞拉玻利瓦 (2008–2018) +CurrencyNames/zh_TW/xaf=法郎 (CFA–BEAC) +CurrencyNames/zh_TW/xag=白銀 +CurrencyNames/zh_TW/xof=法郎 (CFA–BCEAO) +CurrencyNames/zh_TW/xpd=帕拉狄昂 +CurrencyNames/zh_TW/xpt=白金 +CurrencyNames/zh_TW/xts=測試用貨幣代碼 +CurrencyNames/zh_TW/xxx=未知貨幣 +CurrencyNames/zh_TW/yer=葉門里亞爾 # bug 7036905 CurrencyNames/de/afa=Afghani (1927-2002) @@ -6967,7 +6967,7 @@ CurrencyNames/de/dem=Deutsche Mark CurrencyNames/de/mwk=Malawi-Kwacha CurrencyNames/de/mxv=Unidad De Inversion (Mexiko) -CurrencyNames/de/svc=El-Salvador-Col\u00f3n +CurrencyNames/de/svc=El-Salvador-Colón CurrencyNames/it/bob=boliviano @@ -6989,40 +6989,40 @@ CurrencyNames/es/cuc=peso cubano convertible CurrencyNames/es/tmt=manat turcomano -CurrencyNames/es/zwl=d\u00f3lar zimbabuense +CurrencyNames/es/zwl=dólar zimbabuense CurrencyNames/es_CU/CUP=CU$ CurrencyNames/es_CU/CUC=CUC$ CurrencyNames/et_EE/eek=Eesti kroon -CurrencyNames/et_EE/EUR=\u20ac +CurrencyNames/et_EE/EUR=€ CurrencyNames/et_EE/eur=euro CurrencyNames/fr/cuc=peso cubain convertible -CurrencyNames/fr/tmt=nouveau manat turkm\u00e8ne +CurrencyNames/fr/tmt=nouveau manat turkmène -CurrencyNames/ja/cuc=\u30ad\u30e5\u30fc\u30d0\u514c\u63db\u30da\u30bd -CurrencyNames/ja/tmt=\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3\u30fb\u30de\u30ca\u30c8 -CurrencyNames/ja/zwl=\u30b8\u30f3\u30d0\u30d6\u30a8\u30fb\u30c9\u30eb(2009) +CurrencyNames/ja/cuc=キューバ兌換ペソ +CurrencyNames/ja/tmt=トルクメニスタン・マナト +CurrencyNames/ja/zwl=ジンバブエ・ドル(2009) -CurrencyNames/ko/cuc=\ucfe0\ubc14 \ud0dc\ud658 \ud398\uc18c +CurrencyNames/ko/cuc=쿠바 태환 페소 -CurrencyNames/pt/bob=Boliviano da Bol\u00edvia -CurrencyNames/pt/cuc=Peso cubano convers\u00edvel +CurrencyNames/pt/bob=Boliviano da Bolívia +CurrencyNames/pt/cuc=Peso cubano conversível CurrencyNames/pt/tmt=Manat turcomeno -CurrencyNames/pt/zwl=D\u00f3lar do Zimb\u00e1bue (2009) -CurrencyNames/pt/zwr=D\u00f3lar do Zimb\u00e1bue (2008) +CurrencyNames/pt/zwl=Dólar do Zimbábue (2009) +CurrencyNames/pt/zwr=Dólar do Zimbábue (2008) -CurrencyNames/sk_SK/skk=slovensk\u00e1 koruna -CurrencyNames/sk_SK/EUR=\u20ac +CurrencyNames/sk_SK/skk=slovenská koruna +CurrencyNames/sk_SK/EUR=€ -CurrencyNames/zh_CN/cuc=\u53e4\u5df4\u53ef\u5151\u6362\u6bd4\u7d22 -CurrencyNames/zh_CN/tmt=\u571f\u5e93\u66fc\u65af\u5766\u9a6c\u7eb3\u7279 -CurrencyNames/zh_CN/zwl=\u6d25\u5df4\u5e03\u97e6\u5143 (2009) - -CurrencyNames/zh_TW/cuc=\u53e4\u5df4\u53ef\u8f49\u63db\u62ab\u7d22 -CurrencyNames/zh_TW/tmt=\u571f\u5eab\u66fc\u99ac\u7d0d\u7279 -CurrencyNames/zh_TW/zwl=\u8f9b\u5df4\u5a01\u5143 (2009) +CurrencyNames/zh_CN/cuc=古巴可兑换比索 +CurrencyNames/zh_CN/tmt=土库曼斯坦马纳特 +CurrencyNames/zh_CN/zwl=津巴布韦元 (2009) + +CurrencyNames/zh_TW/cuc=古巴可轉換披索 +CurrencyNames/zh_TW/tmt=土庫曼馬納特 +CurrencyNames/zh_TW/zwl=辛巴威元 (2009) # bug 7101495 CalendarData/lv/firstDayOfWeek=2 @@ -7075,42 +7075,42 @@ FormatData//japanese.narrow.Eras/3=S FormatData//japanese.narrow.Eras/4=H -FormatData/ar/DayNarrows/0=\u062d -FormatData/ar/DayNarrows/1=\u0646 -FormatData/ar/DayNarrows/2=\u062b -FormatData/ar/DayNarrows/3=\u0631 -FormatData/ar/DayNarrows/4=\u062e -FormatData/ar/DayNarrows/5=\u062c -FormatData/ar/DayNarrows/6=\u0633 - -FormatData/be/standalone.MonthNarrows/0=\u0441 -FormatData/be/standalone.MonthNarrows/1=\u043b -FormatData/be/standalone.MonthNarrows/2=\u0441 -FormatData/be/standalone.MonthNarrows/3=\u043a -FormatData/be/standalone.MonthNarrows/4=\u043c -FormatData/be/standalone.MonthNarrows/5=\u0447 -FormatData/be/standalone.MonthNarrows/6=\u043b -FormatData/be/standalone.MonthNarrows/7=\u0436 -FormatData/be/standalone.MonthNarrows/8=\u0432 -FormatData/be/standalone.MonthNarrows/9=\u043a -FormatData/be/standalone.MonthNarrows/10=\u043b -FormatData/be/standalone.MonthNarrows/11=\u0441 +FormatData/ar/DayNarrows/0=ح +FormatData/ar/DayNarrows/1=ن +FormatData/ar/DayNarrows/2=ث +FormatData/ar/DayNarrows/3=ر +FormatData/ar/DayNarrows/4=خ +FormatData/ar/DayNarrows/5=ج +FormatData/ar/DayNarrows/6=س + +FormatData/be/standalone.MonthNarrows/0=с +FormatData/be/standalone.MonthNarrows/1=л +FormatData/be/standalone.MonthNarrows/2=с +FormatData/be/standalone.MonthNarrows/3=к +FormatData/be/standalone.MonthNarrows/4=м +FormatData/be/standalone.MonthNarrows/5=ч +FormatData/be/standalone.MonthNarrows/6=л +FormatData/be/standalone.MonthNarrows/7=ж +FormatData/be/standalone.MonthNarrows/8=в +FormatData/be/standalone.MonthNarrows/9=к +FormatData/be/standalone.MonthNarrows/10=л +FormatData/be/standalone.MonthNarrows/11=с FormatData/be/standalone.MonthNarrows/12= -FormatData/be/DayNarrows/0=\u043d -FormatData/be/DayNarrows/1=\u043f -FormatData/be/DayNarrows/2=\u0430 -FormatData/be/DayNarrows/3=\u0441 -FormatData/be/DayNarrows/4=\u0447 -FormatData/be/DayNarrows/5=\u043f -FormatData/be/DayNarrows/6=\u0441 - -FormatData/bg/DayNarrows/0=\u043d -FormatData/bg/DayNarrows/1=\u043f -FormatData/bg/DayNarrows/2=\u0432 -FormatData/bg/DayNarrows/3=\u0441 -FormatData/bg/DayNarrows/4=\u0447 -FormatData/bg/DayNarrows/5=\u043f -FormatData/bg/DayNarrows/6=\u0441 +FormatData/be/DayNarrows/0=н +FormatData/be/DayNarrows/1=п +FormatData/be/DayNarrows/2=а +FormatData/be/DayNarrows/3=с +FormatData/be/DayNarrows/4=ч +FormatData/be/DayNarrows/5=п +FormatData/be/DayNarrows/6=с + +FormatData/bg/DayNarrows/0=н +FormatData/bg/DayNarrows/1=п +FormatData/bg/DayNarrows/2=в +FormatData/bg/DayNarrows/3=с +FormatData/bg/DayNarrows/4=ч +FormatData/bg/DayNarrows/5=п +FormatData/bg/DayNarrows/6=с FormatData/ca/standalone.MonthNarrows/0=g FormatData/ca/standalone.MonthNarrows/1=f @@ -7143,9 +7143,9 @@ FormatData/cs/DayNarrows/0=N FormatData/cs/DayNarrows/1=P -FormatData/cs/DayNarrows/2=\u00da +FormatData/cs/DayNarrows/2=Ú FormatData/cs/DayNarrows/3=S -FormatData/cs/DayNarrows/4=\u010c +FormatData/cs/DayNarrows/4=Č FormatData/cs/DayNarrows/5=P FormatData/cs/DayNarrows/6=S @@ -7165,13 +7165,13 @@ FormatData/de/DayNarrows/5=F FormatData/de/DayNarrows/6=S -FormatData/el/DayNarrows/0=\u039a -FormatData/el/DayNarrows/1=\u0394 -FormatData/el/DayNarrows/2=\u03a4 -FormatData/el/DayNarrows/3=\u03a4 -FormatData/el/DayNarrows/4=\u03a0 -FormatData/el/DayNarrows/5=\u03a0 -FormatData/el/DayNarrows/6=\u03a3 +FormatData/el/DayNarrows/0=Κ +FormatData/el/DayNarrows/1=Δ +FormatData/el/DayNarrows/2=Τ +FormatData/el/DayNarrows/3=Τ +FormatData/el/DayNarrows/4=Π +FormatData/el/DayNarrows/5=Π +FormatData/el/DayNarrows/6=Σ FormatData/es/DayNarrows/0=D FormatData/es/DayNarrows/1=L @@ -7227,13 +7227,13 @@ FormatData/fr/DayNarrows/5=V FormatData/fr/DayNarrows/6=S -FormatData/hi_IN/DayNarrows/0=\u0930 -FormatData/hi_IN/DayNarrows/1=\u0938\u094b -FormatData/hi_IN/DayNarrows/2=\u092e\u0902 -FormatData/hi_IN/DayNarrows/3=\u092c\u0941 -FormatData/hi_IN/DayNarrows/4=\u0917\u0941 -FormatData/hi_IN/DayNarrows/5=\u0936\u0941 -FormatData/hi_IN/DayNarrows/6=\u0936 +FormatData/hi_IN/DayNarrows/0=र +FormatData/hi_IN/DayNarrows/1=सो +FormatData/hi_IN/DayNarrows/2=मं +FormatData/hi_IN/DayNarrows/3=बु +FormatData/hi_IN/DayNarrows/4=गु +FormatData/hi_IN/DayNarrows/5=शु +FormatData/hi_IN/DayNarrows/6=श FormatData/hr/standalone.MonthNarrows/0=1. FormatData/hr/standalone.MonthNarrows/1=2. @@ -7252,14 +7252,14 @@ FormatData/hr/DayNarrows/1=P FormatData/hr/DayNarrows/2=U FormatData/hr/DayNarrows/3=S -FormatData/hr/DayNarrows/4=\u010c +FormatData/hr/DayNarrows/4=Č FormatData/hr/DayNarrows/5=P FormatData/hr/DayNarrows/6=S FormatData/hr/standalone.DayNarrows/0=n FormatData/hr/standalone.DayNarrows/1=p FormatData/hr/standalone.DayNarrows/2=u FormatData/hr/standalone.DayNarrows/3=s -FormatData/hr/standalone.DayNarrows/4=\u010d +FormatData/hr/standalone.DayNarrows/4=č FormatData/hr/standalone.DayNarrows/5=p FormatData/hr/standalone.DayNarrows/6=s @@ -7278,7 +7278,7 @@ FormatData/is/standalone.MonthNarrows/4=m FormatData/is/standalone.MonthNarrows/5=j FormatData/is/standalone.MonthNarrows/6=j -FormatData/is/standalone.MonthNarrows/7=\u00e1 +FormatData/is/standalone.MonthNarrows/7=á FormatData/is/standalone.MonthNarrows/8=s FormatData/is/standalone.MonthNarrows/9=o FormatData/is/standalone.MonthNarrows/10=n @@ -7286,14 +7286,14 @@ FormatData/is/standalone.MonthNarrows/12= FormatData/is/DayNarrows/0=S FormatData/is/DayNarrows/1=M -FormatData/is/DayNarrows/2=\u00de +FormatData/is/DayNarrows/2=Þ FormatData/is/DayNarrows/3=M FormatData/is/DayNarrows/4=F FormatData/is/DayNarrows/5=F FormatData/is/DayNarrows/6=L FormatData/is/standalone.DayNarrows/0=s FormatData/is/standalone.DayNarrows/1=m -FormatData/is/standalone.DayNarrows/2=\u00fe +FormatData/is/standalone.DayNarrows/2=þ FormatData/is/standalone.DayNarrows/3=m FormatData/is/standalone.DayNarrows/4=f FormatData/is/standalone.DayNarrows/5=f @@ -7307,36 +7307,36 @@ FormatData/it/DayNarrows/5=V FormatData/it/DayNarrows/6=S -FormatData/iw/DayNarrows/0=\u05d0 -FormatData/iw/DayNarrows/1=\u05d1 -FormatData/iw/DayNarrows/2=\u05d2 -FormatData/iw/DayNarrows/3=\u05d3 -FormatData/iw/DayNarrows/4=\u05d4 -FormatData/iw/DayNarrows/5=\u05d5 -FormatData/iw/DayNarrows/6=\u05e9 -FormatData/iw/standalone.DayNarrows/0=\u05d0 -FormatData/iw/standalone.DayNarrows/1=\u05d1 -FormatData/iw/standalone.DayNarrows/2=\u05d2 -FormatData/iw/standalone.DayNarrows/3=\u05d3 -FormatData/iw/standalone.DayNarrows/4=\u05d4 -FormatData/iw/standalone.DayNarrows/5=\u05d5 -FormatData/iw/standalone.DayNarrows/6=\u05e9 - -FormatData/ja/DayNarrows/0=\u65e5 -FormatData/ja/DayNarrows/1=\u6708 -FormatData/ja/DayNarrows/2=\u706b -FormatData/ja/DayNarrows/3=\u6c34 -FormatData/ja/DayNarrows/4=\u6728 -FormatData/ja/DayNarrows/5=\u91d1 -FormatData/ja/DayNarrows/6=\u571f - -FormatData/ko/DayNarrows/0=\uc77c -FormatData/ko/DayNarrows/1=\uc6d4 -FormatData/ko/DayNarrows/2=\ud654 -FormatData/ko/DayNarrows/3=\uc218 -FormatData/ko/DayNarrows/4=\ubaa9 -FormatData/ko/DayNarrows/5=\uae08 -FormatData/ko/DayNarrows/6=\ud1a0 +FormatData/iw/DayNarrows/0=א +FormatData/iw/DayNarrows/1=ב +FormatData/iw/DayNarrows/2=ג +FormatData/iw/DayNarrows/3=ד +FormatData/iw/DayNarrows/4=ה +FormatData/iw/DayNarrows/5=ו +FormatData/iw/DayNarrows/6=ש +FormatData/iw/standalone.DayNarrows/0=א +FormatData/iw/standalone.DayNarrows/1=ב +FormatData/iw/standalone.DayNarrows/2=ג +FormatData/iw/standalone.DayNarrows/3=ד +FormatData/iw/standalone.DayNarrows/4=ה +FormatData/iw/standalone.DayNarrows/5=ו +FormatData/iw/standalone.DayNarrows/6=ש + +FormatData/ja/DayNarrows/0=日 +FormatData/ja/DayNarrows/1=月 +FormatData/ja/DayNarrows/2=火 +FormatData/ja/DayNarrows/3=水 +FormatData/ja/DayNarrows/4=木 +FormatData/ja/DayNarrows/5=金 +FormatData/ja/DayNarrows/6=土 + +FormatData/ko/DayNarrows/0=일 +FormatData/ko/DayNarrows/1=월 +FormatData/ko/DayNarrows/2=화 +FormatData/ko/DayNarrows/3=수 +FormatData/ko/DayNarrows/4=목 +FormatData/ko/DayNarrows/5=금 +FormatData/ko/DayNarrows/6=토 FormatData/lt/standalone.MonthNarrows/0=S FormatData/lt/standalone.MonthNarrows/1=V @@ -7358,14 +7358,14 @@ FormatData/lt/DayNarrows/3=T FormatData/lt/DayNarrows/4=K FormatData/lt/DayNarrows/5=P -FormatData/lt/DayNarrows/6=\u0160 +FormatData/lt/DayNarrows/6=Š FormatData/lt/standalone.DayNarrows/0=S FormatData/lt/standalone.DayNarrows/1=P FormatData/lt/standalone.DayNarrows/2=A FormatData/lt/standalone.DayNarrows/3=T FormatData/lt/standalone.DayNarrows/4=K FormatData/lt/standalone.DayNarrows/5=P -FormatData/lt/standalone.DayNarrows/6=\u0160 +FormatData/lt/standalone.DayNarrows/6=Š FormatData/lv/DayNarrows/0=S FormatData/lv/DayNarrows/1=P @@ -7375,13 +7375,13 @@ FormatData/lv/DayNarrows/5=P FormatData/lv/DayNarrows/6=S -FormatData/mk/DayNarrows/0=\u043d -FormatData/mk/DayNarrows/1=\u043f -FormatData/mk/DayNarrows/2=\u0432 -FormatData/mk/DayNarrows/3=\u0441 -FormatData/mk/DayNarrows/4=\u0447 -FormatData/mk/DayNarrows/5=\u043f -FormatData/mk/DayNarrows/6=\u0441 +FormatData/mk/DayNarrows/0=н +FormatData/mk/DayNarrows/1=п +FormatData/mk/DayNarrows/2=в +FormatData/mk/DayNarrows/3=с +FormatData/mk/DayNarrows/4=ч +FormatData/mk/DayNarrows/5=п +FormatData/mk/DayNarrows/6=с FormatData/ms/standalone.MonthNarrows/0=J FormatData/ms/standalone.MonthNarrows/1=F @@ -7411,12 +7411,12 @@ FormatData/ms/standalone.DayNarrows/5=J FormatData/ms/standalone.DayNarrows/6=S -FormatData/mt/DayNarrows/0=\u0126 +FormatData/mt/DayNarrows/0=Ħ FormatData/mt/DayNarrows/1=T FormatData/mt/DayNarrows/2=T FormatData/mt/DayNarrows/3=E -FormatData/mt/DayNarrows/4=\u0126 -FormatData/mt/DayNarrows/5=\u0120 +FormatData/mt/DayNarrows/4=Ħ +FormatData/mt/DayNarrows/5=Ġ FormatData/mt/DayNarrows/6=S FormatData/nl/DayNarrows/0=Z @@ -7430,7 +7430,7 @@ FormatData/pl/DayNarrows/0=N FormatData/pl/DayNarrows/1=P FormatData/pl/DayNarrows/2=W -FormatData/pl/DayNarrows/3=\u015a +FormatData/pl/DayNarrows/3=Ś FormatData/pl/DayNarrows/4=C FormatData/pl/DayNarrows/5=P FormatData/pl/DayNarrows/6=S @@ -7472,28 +7472,28 @@ FormatData/ro/standalone.DayNarrows/5=V FormatData/ro/standalone.DayNarrows/6=S -FormatData/ru/DayNarrows/0=\u0412 -FormatData/ru/DayNarrows/1=\u041f\u043d -FormatData/ru/DayNarrows/2=\u0412\u0442 -FormatData/ru/DayNarrows/3=\u0421 -FormatData/ru/DayNarrows/4=\u0427 -FormatData/ru/DayNarrows/5=\u041f +FormatData/ru/DayNarrows/0=В +FormatData/ru/DayNarrows/1=Пн +FormatData/ru/DayNarrows/2=Вт +FormatData/ru/DayNarrows/3=С +FormatData/ru/DayNarrows/4=Ч +FormatData/ru/DayNarrows/5=П # Note: "sat" is an contributed item in CLDR. -FormatData/ru/DayNarrows/6=\u0421 +FormatData/ru/DayNarrows/6=С -FormatData/ru/standalone.DayNarrows/0=\u0412 -FormatData/ru/standalone.DayNarrows/1=\u041f -FormatData/ru/standalone.DayNarrows/2=\u0412 -FormatData/ru/standalone.DayNarrows/3=\u0421 -FormatData/ru/standalone.DayNarrows/4=\u0427 -FormatData/ru/standalone.DayNarrows/5=\u041f -FormatData/ru/standalone.DayNarrows/6=\u0421 +FormatData/ru/standalone.DayNarrows/0=В +FormatData/ru/standalone.DayNarrows/1=П +FormatData/ru/standalone.DayNarrows/2=В +FormatData/ru/standalone.DayNarrows/3=С +FormatData/ru/standalone.DayNarrows/4=Ч +FormatData/ru/standalone.DayNarrows/5=П +FormatData/ru/standalone.DayNarrows/6=С FormatData/sk/DayNarrows/0=N FormatData/sk/DayNarrows/1=P FormatData/sk/DayNarrows/2=U FormatData/sk/DayNarrows/3=S -FormatData/sk/DayNarrows/4=\u0160 +FormatData/sk/DayNarrows/4=Š FormatData/sk/DayNarrows/5=P FormatData/sk/DayNarrows/6=S @@ -7501,7 +7501,7 @@ FormatData/sl/DayNarrows/1=p FormatData/sl/DayNarrows/2=t FormatData/sl/DayNarrows/3=s -FormatData/sl/DayNarrows/4=\u010d +FormatData/sl/DayNarrows/4=č FormatData/sl/DayNarrows/5=p FormatData/sl/DayNarrows/6=s @@ -7513,17 +7513,17 @@ FormatData/sq/DayNarrows/5=P FormatData/sq/DayNarrows/6=S -FormatData/sr/DayNarrows/0=\u043d -FormatData/sr/DayNarrows/1=\u043f -FormatData/sr/DayNarrows/2=\u0443 -FormatData/sr/DayNarrows/3=\u0441 -FormatData/sr/DayNarrows/4=\u0447 -FormatData/sr/DayNarrows/5=\u043f -FormatData/sr/DayNarrows/6=\u0441 -FormatData/sr/short.Eras/0=\u043f. \u043d. \u0435. -FormatData/sr/short.Eras/1=\u043d. \u0435. -FormatData/sr/narrow.Eras/0=\u043f.\u043d.\u0435. -FormatData/sr/narrow.Eras/1=\u043d.\u0435. +FormatData/sr/DayNarrows/0=н +FormatData/sr/DayNarrows/1=п +FormatData/sr/DayNarrows/2=у +FormatData/sr/DayNarrows/3=с +FormatData/sr/DayNarrows/4=ч +FormatData/sr/DayNarrows/5=п +FormatData/sr/DayNarrows/6=с +FormatData/sr/short.Eras/0=п. н. е. +FormatData/sr/short.Eras/1=н. е. +FormatData/sr/narrow.Eras/0=п.н.е. +FormatData/sr/narrow.Eras/1=н.е. FormatData/sv/standalone.MonthNarrows/0=J FormatData/sv/standalone.MonthNarrows/1=F @@ -7557,31 +7557,31 @@ FormatData/sv/narrow.AmPmMarkers/0=f FormatData/sv/narrow.AmPmMarkers/1=e -FormatData/th/standalone.MonthNarrows/0=\u0e21.\u0e04. -FormatData/th/standalone.MonthNarrows/1=\u0e01.\u0e1e. -FormatData/th/standalone.MonthNarrows/2=\u0e21\u0e35.\u0e04. -FormatData/th/standalone.MonthNarrows/3=\u0e40\u0e21.\u0e22. -FormatData/th/standalone.MonthNarrows/4=\u0e1e.\u0e04. -FormatData/th/standalone.MonthNarrows/5=\u0e21\u0e34.\u0e22. -FormatData/th/standalone.MonthNarrows/6=\u0e01.\u0e04. -FormatData/th/standalone.MonthNarrows/7=\u0e2a.\u0e04. -FormatData/th/standalone.MonthNarrows/8=\u0e01.\u0e22. -FormatData/th/standalone.MonthNarrows/9=\u0e15.\u0e04. -FormatData/th/standalone.MonthNarrows/10=\u0e1e.\u0e22. -FormatData/th/standalone.MonthNarrows/11=\u0e18.\u0e04. +FormatData/th/standalone.MonthNarrows/0=ม.ค. +FormatData/th/standalone.MonthNarrows/1=ก.พ. +FormatData/th/standalone.MonthNarrows/2=มี.ค. +FormatData/th/standalone.MonthNarrows/3=เม.ย. +FormatData/th/standalone.MonthNarrows/4=พ.ค. +FormatData/th/standalone.MonthNarrows/5=มิ.ย. +FormatData/th/standalone.MonthNarrows/6=ก.ค. +FormatData/th/standalone.MonthNarrows/7=ส.ค. +FormatData/th/standalone.MonthNarrows/8=ก.ย. +FormatData/th/standalone.MonthNarrows/9=ต.ค. +FormatData/th/standalone.MonthNarrows/10=พ.ย. +FormatData/th/standalone.MonthNarrows/11=ธ.ค. FormatData/th/standalone.MonthNarrows/12= -FormatData/th/DayNarrows/0=\u0e2d -FormatData/th/DayNarrows/1=\u0e08 -FormatData/th/DayNarrows/2=\u0e2d -FormatData/th/DayNarrows/3=\u0e1e -FormatData/th/DayNarrows/4=\u0e1e -FormatData/th/DayNarrows/5=\u0e28 -FormatData/th/DayNarrows/6=\u0e2a -FormatData/th/narrow.Eras/0=\u0e01\u0e48\u0e2d\u0e19 \u0e04.\u0e28. -FormatData/th/narrow.Eras/1=\u0e04.\u0e28. +FormatData/th/DayNarrows/0=อ +FormatData/th/DayNarrows/1=จ +FormatData/th/DayNarrows/2=อ +FormatData/th/DayNarrows/3=พ +FormatData/th/DayNarrows/4=พ +FormatData/th/DayNarrows/5=ศ +FormatData/th/DayNarrows/6=ส +FormatData/th/narrow.Eras/0=ก่อน ค.ศ. +FormatData/th/narrow.Eras/1=ค.ศ. FormatData/tr/standalone.MonthNarrows/0=O -FormatData/tr/standalone.MonthNarrows/1=\u015e +FormatData/tr/standalone.MonthNarrows/1=Ş FormatData/tr/standalone.MonthNarrows/2=M FormatData/tr/standalone.MonthNarrows/3=N FormatData/tr/standalone.MonthNarrows/4=M @@ -7596,18 +7596,18 @@ FormatData/tr/DayNarrows/0=P FormatData/tr/DayNarrows/1=P FormatData/tr/DayNarrows/2=S -FormatData/tr/DayNarrows/3=\u00c7 +FormatData/tr/DayNarrows/3=Ç FormatData/tr/DayNarrows/4=P FormatData/tr/DayNarrows/5=C FormatData/tr/DayNarrows/6=C -FormatData/uk/DayNarrows/0=\u041d -FormatData/uk/DayNarrows/1=\u041f -FormatData/uk/DayNarrows/2=\u0412 -FormatData/uk/DayNarrows/3=\u0421 -FormatData/uk/DayNarrows/4=\u0427 -FormatData/uk/DayNarrows/5=\u041f -FormatData/uk/DayNarrows/6=\u0421 +FormatData/uk/DayNarrows/0=Н +FormatData/uk/DayNarrows/1=П +FormatData/uk/DayNarrows/2=В +FormatData/uk/DayNarrows/3=С +FormatData/uk/DayNarrows/4=Ч +FormatData/uk/DayNarrows/5=П +FormatData/uk/DayNarrows/6=С FormatData/vi/DayNarrows/0=CN FormatData/vi/DayNarrows/1=T2 @@ -7617,26 +7617,26 @@ FormatData/vi/DayNarrows/5=T6 FormatData/vi/DayNarrows/6=T7 -FormatData/zh/standalone.MonthNarrows/0=1\u6708 -FormatData/zh/standalone.MonthNarrows/1=2\u6708 -FormatData/zh/standalone.MonthNarrows/2=3\u6708 -FormatData/zh/standalone.MonthNarrows/3=4\u6708 -FormatData/zh/standalone.MonthNarrows/4=5\u6708 -FormatData/zh/standalone.MonthNarrows/5=6\u6708 -FormatData/zh/standalone.MonthNarrows/6=7\u6708 -FormatData/zh/standalone.MonthNarrows/7=8\u6708 -FormatData/zh/standalone.MonthNarrows/8=9\u6708 -FormatData/zh/standalone.MonthNarrows/9=10\u6708 -FormatData/zh/standalone.MonthNarrows/10=11\u6708 -FormatData/zh/standalone.MonthNarrows/11=12\u6708 +FormatData/zh/standalone.MonthNarrows/0=1月 +FormatData/zh/standalone.MonthNarrows/1=2月 +FormatData/zh/standalone.MonthNarrows/2=3月 +FormatData/zh/standalone.MonthNarrows/3=4月 +FormatData/zh/standalone.MonthNarrows/4=5月 +FormatData/zh/standalone.MonthNarrows/5=6月 +FormatData/zh/standalone.MonthNarrows/6=7月 +FormatData/zh/standalone.MonthNarrows/7=8月 +FormatData/zh/standalone.MonthNarrows/8=9月 +FormatData/zh/standalone.MonthNarrows/9=10月 +FormatData/zh/standalone.MonthNarrows/10=11月 +FormatData/zh/standalone.MonthNarrows/11=12月 FormatData/zh/standalone.MonthNarrows/12= -FormatData/zh/DayNarrows/0=\u65e5 -FormatData/zh/DayNarrows/1=\u4e00 -FormatData/zh/DayNarrows/2=\u4e8c -FormatData/zh/DayNarrows/3=\u4e09 -FormatData/zh/DayNarrows/4=\u56db -FormatData/zh/DayNarrows/5=\u4e94 -FormatData/zh/DayNarrows/6=\u516d +FormatData/zh/DayNarrows/0=日 +FormatData/zh/DayNarrows/1=一 +FormatData/zh/DayNarrows/2=二 +FormatData/zh/DayNarrows/3=三 +FormatData/zh/DayNarrows/4=四 +FormatData/zh/DayNarrows/5=五 +FormatData/zh/DayNarrows/6=六 # bug 7195759 CurrencyNames//ZMW=ZMW @@ -7663,10 +7663,10 @@ FormatData/pt/MonthAbbreviations/11=dez # bug 8021121 -CurrencyNames/lv_LV/EUR=\u20ac +CurrencyNames/lv_LV/EUR=€ # bug # 6192407 -LocaleNames/ko/PT=\ud3ec\ub974\ud22c\uac08 +LocaleNames/ko/PT=포르투갈 # bug 6931564 LocaleNames/sv/ZA=Sydafrika @@ -7689,7 +7689,7 @@ FormatData/es_DO/DatePatterns/3=dd/MM/yy # bug 8055222 -CurrencyNames/lt_LT/EUR=\u20ac +CurrencyNames/lt_LT/EUR=€ # bug 8042126 + missing MonthNarrows data FormatData//MonthNarrows/0=1 @@ -7705,18 +7705,18 @@ FormatData//MonthNarrows/10=11 FormatData//MonthNarrows/11=12 FormatData//MonthNarrows/12= -FormatData/bg/MonthNarrows/0=\u044f -FormatData/bg/MonthNarrows/1=\u0444 -FormatData/bg/MonthNarrows/2=\u043c -FormatData/bg/MonthNarrows/3=\u0430 -FormatData/bg/MonthNarrows/4=\u043c -FormatData/bg/MonthNarrows/5=\u044e -FormatData/bg/MonthNarrows/6=\u044e -FormatData/bg/MonthNarrows/7=\u0430 -FormatData/bg/MonthNarrows/8=\u0441 -FormatData/bg/MonthNarrows/9=\u043e -FormatData/bg/MonthNarrows/10=\u043d -FormatData/bg/MonthNarrows/11=\u0434 +FormatData/bg/MonthNarrows/0=я +FormatData/bg/MonthNarrows/1=ф +FormatData/bg/MonthNarrows/2=м +FormatData/bg/MonthNarrows/3=а +FormatData/bg/MonthNarrows/4=м +FormatData/bg/MonthNarrows/5=ю +FormatData/bg/MonthNarrows/6=ю +FormatData/bg/MonthNarrows/7=а +FormatData/bg/MonthNarrows/8=с +FormatData/bg/MonthNarrows/9=о +FormatData/bg/MonthNarrows/10=н +FormatData/bg/MonthNarrows/11=д FormatData/bg/MonthNarrows/12= FormatData/zh_TW/MonthNarrows/0=1 FormatData/zh_TW/MonthNarrows/1=2 @@ -7744,31 +7744,31 @@ FormatData/it/MonthNarrows/10=N FormatData/it/MonthNarrows/11=D FormatData/it/MonthNarrows/12= -FormatData/ko/MonthNarrows/0=1\uc6d4 -FormatData/ko/MonthNarrows/1=2\uc6d4 -FormatData/ko/MonthNarrows/2=3\uc6d4 -FormatData/ko/MonthNarrows/3=4\uc6d4 -FormatData/ko/MonthNarrows/4=5\uc6d4 -FormatData/ko/MonthNarrows/5=6\uc6d4 -FormatData/ko/MonthNarrows/6=7\uc6d4 -FormatData/ko/MonthNarrows/7=8\uc6d4 -FormatData/ko/MonthNarrows/8=9\uc6d4 -FormatData/ko/MonthNarrows/9=10\uc6d4 -FormatData/ko/MonthNarrows/10=11\uc6d4 -FormatData/ko/MonthNarrows/11=12\uc6d4 +FormatData/ko/MonthNarrows/0=1월 +FormatData/ko/MonthNarrows/1=2월 +FormatData/ko/MonthNarrows/2=3월 +FormatData/ko/MonthNarrows/3=4월 +FormatData/ko/MonthNarrows/4=5월 +FormatData/ko/MonthNarrows/5=6월 +FormatData/ko/MonthNarrows/6=7월 +FormatData/ko/MonthNarrows/7=8월 +FormatData/ko/MonthNarrows/8=9월 +FormatData/ko/MonthNarrows/9=10월 +FormatData/ko/MonthNarrows/10=11월 +FormatData/ko/MonthNarrows/11=12월 FormatData/ko/MonthNarrows/12= -FormatData/uk/MonthNarrows/0=\u0421 -FormatData/uk/MonthNarrows/1=\u041b -FormatData/uk/MonthNarrows/2=\u0411 -FormatData/uk/MonthNarrows/3=\u041a -FormatData/uk/MonthNarrows/4=\u0422 -FormatData/uk/MonthNarrows/5=\u0427 -FormatData/uk/MonthNarrows/6=\u041b -FormatData/uk/MonthNarrows/7=\u0421 -FormatData/uk/MonthNarrows/8=\u0412 -FormatData/uk/MonthNarrows/9=\u0416 -FormatData/uk/MonthNarrows/10=\u041b -FormatData/uk/MonthNarrows/11=\u0413 +FormatData/uk/MonthNarrows/0=С +FormatData/uk/MonthNarrows/1=Л +FormatData/uk/MonthNarrows/2=Б +FormatData/uk/MonthNarrows/3=К +FormatData/uk/MonthNarrows/4=Т +FormatData/uk/MonthNarrows/5=Ч +FormatData/uk/MonthNarrows/6=Л +FormatData/uk/MonthNarrows/7=С +FormatData/uk/MonthNarrows/8=В +FormatData/uk/MonthNarrows/9=Ж +FormatData/uk/MonthNarrows/10=Л +FormatData/uk/MonthNarrows/11=Г FormatData/uk/MonthNarrows/12= FormatData/lv/MonthNarrows/0=J FormatData/lv/MonthNarrows/1=F @@ -7809,18 +7809,18 @@ FormatData/sk/MonthNarrows/10=n FormatData/sk/MonthNarrows/11=d FormatData/sk/MonthNarrows/12= -FormatData/hi_IN/MonthNarrows/0=\u091c -FormatData/hi_IN/MonthNarrows/1=\u092b\u093c -FormatData/hi_IN/MonthNarrows/2=\u092e\u093e -FormatData/hi_IN/MonthNarrows/3=\u0905 -FormatData/hi_IN/MonthNarrows/4=\u092e -FormatData/hi_IN/MonthNarrows/5=\u091c\u0942 -FormatData/hi_IN/MonthNarrows/6=\u091c\u0941 -FormatData/hi_IN/MonthNarrows/7=\u0905 -FormatData/hi_IN/MonthNarrows/8=\u0938\u093f -FormatData/hi_IN/MonthNarrows/9=\u0905 -FormatData/hi_IN/MonthNarrows/10=\u0928 -FormatData/hi_IN/MonthNarrows/11=\u0926\u093f +FormatData/hi_IN/MonthNarrows/0=ज +FormatData/hi_IN/MonthNarrows/1=फ़ +FormatData/hi_IN/MonthNarrows/2=मा +FormatData/hi_IN/MonthNarrows/3=अ +FormatData/hi_IN/MonthNarrows/4=म +FormatData/hi_IN/MonthNarrows/5=जू +FormatData/hi_IN/MonthNarrows/6=जु +FormatData/hi_IN/MonthNarrows/7=अ +FormatData/hi_IN/MonthNarrows/8=सि +FormatData/hi_IN/MonthNarrows/9=अ +FormatData/hi_IN/MonthNarrows/10=न +FormatData/hi_IN/MonthNarrows/11=दि FormatData/hi_IN/MonthNarrows/12= FormatData/ga/MonthNarrows/0=E FormatData/ga/MonthNarrows/1=F @@ -7862,35 +7862,35 @@ FormatData/sv/MonthNarrows/11=D FormatData/sv/MonthNarrows/12= FormatData/cs/MonthNarrows/0=l -FormatData/cs/MonthNarrows/1=\u00fa +FormatData/cs/MonthNarrows/1=ú FormatData/cs/MonthNarrows/2=b FormatData/cs/MonthNarrows/3=d FormatData/cs/MonthNarrows/4=k -FormatData/cs/MonthNarrows/5=\u010d -FormatData/cs/MonthNarrows/6=\u010d +FormatData/cs/MonthNarrows/5=č +FormatData/cs/MonthNarrows/6=č FormatData/cs/MonthNarrows/7=s FormatData/cs/MonthNarrows/8=z -FormatData/cs/MonthNarrows/9=\u0159 +FormatData/cs/MonthNarrows/9=ř FormatData/cs/MonthNarrows/10=l FormatData/cs/MonthNarrows/11=p FormatData/cs/MonthNarrows/12= -FormatData/el/MonthNarrows/0=\u0399 -FormatData/el/MonthNarrows/1=\u03a6 -FormatData/el/MonthNarrows/2=\u039c -FormatData/el/MonthNarrows/3=\u0391 -FormatData/el/MonthNarrows/4=\u039c -FormatData/el/MonthNarrows/5=\u0399 -FormatData/el/MonthNarrows/6=\u0399 -FormatData/el/MonthNarrows/7=\u0391 -FormatData/el/MonthNarrows/8=\u03a3 -FormatData/el/MonthNarrows/9=\u039f -FormatData/el/MonthNarrows/10=\u039d -FormatData/el/MonthNarrows/11=\u0394 +FormatData/el/MonthNarrows/0=Ι +FormatData/el/MonthNarrows/1=Φ +FormatData/el/MonthNarrows/2=Μ +FormatData/el/MonthNarrows/3=Α +FormatData/el/MonthNarrows/4=Μ +FormatData/el/MonthNarrows/5=Ι +FormatData/el/MonthNarrows/6=Ι +FormatData/el/MonthNarrows/7=Α +FormatData/el/MonthNarrows/8=Σ +FormatData/el/MonthNarrows/9=Ο +FormatData/el/MonthNarrows/10=Ν +FormatData/el/MonthNarrows/11=Δ FormatData/el/MonthNarrows/12= FormatData/hu/MonthNarrows/0=J FormatData/hu/MonthNarrows/1=F FormatData/hu/MonthNarrows/2=M -FormatData/hu/MonthNarrows/3=\u00c1 +FormatData/hu/MonthNarrows/3=Á FormatData/hu/MonthNarrows/4=M FormatData/hu/MonthNarrows/5=J FormatData/hu/MonthNarrows/6=J @@ -7914,7 +7914,7 @@ FormatData/es/MonthNarrows/11=D FormatData/es/MonthNarrows/12= FormatData/tr/MonthNarrows/0=O -FormatData/tr/MonthNarrows/1=\u015e +FormatData/tr/MonthNarrows/1=Ş FormatData/tr/MonthNarrows/2=M FormatData/tr/MonthNarrows/3=N FormatData/tr/MonthNarrows/4=M @@ -7985,7 +7985,7 @@ FormatData/is/MonthNarrows/4=M FormatData/is/MonthNarrows/5=J FormatData/is/MonthNarrows/6=J -FormatData/is/MonthNarrows/7=\u00c1 +FormatData/is/MonthNarrows/7=Á FormatData/is/MonthNarrows/8=L FormatData/is/MonthNarrows/9=O FormatData/is/MonthNarrows/10=N @@ -8056,18 +8056,18 @@ FormatData/fi/MonthNarrows/10=M FormatData/fi/MonthNarrows/11=J FormatData/fi/MonthNarrows/12= -FormatData/mk/MonthNarrows/0=\u0458 -FormatData/mk/MonthNarrows/1=\u0444 -FormatData/mk/MonthNarrows/2=\u043c -FormatData/mk/MonthNarrows/3=\u0430 -FormatData/mk/MonthNarrows/4=\u043c -FormatData/mk/MonthNarrows/5=\u0458 -FormatData/mk/MonthNarrows/6=\u0458 -FormatData/mk/MonthNarrows/7=\u0430 -FormatData/mk/MonthNarrows/8=\u0441 -FormatData/mk/MonthNarrows/9=\u043e -FormatData/mk/MonthNarrows/10=\u043d -FormatData/mk/MonthNarrows/11=\u0434 +FormatData/mk/MonthNarrows/0=ј +FormatData/mk/MonthNarrows/1=ф +FormatData/mk/MonthNarrows/2=м +FormatData/mk/MonthNarrows/3=а +FormatData/mk/MonthNarrows/4=м +FormatData/mk/MonthNarrows/5=ј +FormatData/mk/MonthNarrows/6=ј +FormatData/mk/MonthNarrows/7=а +FormatData/mk/MonthNarrows/8=с +FormatData/mk/MonthNarrows/9=о +FormatData/mk/MonthNarrows/10=н +FormatData/mk/MonthNarrows/11=д FormatData/mk/MonthNarrows/12= FormatData/sr-Latn/MonthNarrows/0=j FormatData/sr-Latn/MonthNarrows/1=f @@ -8082,44 +8082,44 @@ FormatData/sr-Latn/MonthNarrows/10=n FormatData/sr-Latn/MonthNarrows/11=d FormatData/sr-Latn/MonthNarrows/12= -FormatData/th/MonthNarrows/0=\u0e21.\u0e04. -FormatData/th/MonthNarrows/1=\u0e01.\u0e1e. -FormatData/th/MonthNarrows/2=\u0e21\u0e35.\u0e04. -FormatData/th/MonthNarrows/3=\u0e40\u0e21.\u0e22. -FormatData/th/MonthNarrows/4=\u0e1e.\u0e04. -FormatData/th/MonthNarrows/5=\u0e21\u0e34.\u0e22 -FormatData/th/MonthNarrows/6=\u0e01.\u0e04. -FormatData/th/MonthNarrows/7=\u0e2a.\u0e04. -FormatData/th/MonthNarrows/8=\u0e01.\u0e22. -FormatData/th/MonthNarrows/9=\u0e15.\u0e04. -FormatData/th/MonthNarrows/10=\u0e1e.\u0e22. -FormatData/th/MonthNarrows/11=\u0e18.\u0e04. +FormatData/th/MonthNarrows/0=ม.ค. +FormatData/th/MonthNarrows/1=ก.พ. +FormatData/th/MonthNarrows/2=มี.ค. +FormatData/th/MonthNarrows/3=เม.ย. +FormatData/th/MonthNarrows/4=พ.ค. +FormatData/th/MonthNarrows/5=มิ.ย +FormatData/th/MonthNarrows/6=ก.ค. +FormatData/th/MonthNarrows/7=ส.ค. +FormatData/th/MonthNarrows/8=ก.ย. +FormatData/th/MonthNarrows/9=ต.ค. +FormatData/th/MonthNarrows/10=พ.ย. +FormatData/th/MonthNarrows/11=ธ.ค. FormatData/th/MonthNarrows/12= -FormatData/ar/MonthNarrows/0=\u064a -FormatData/ar/MonthNarrows/1=\u0641 -FormatData/ar/MonthNarrows/2=\u0645 -FormatData/ar/MonthNarrows/3=\u0623 -FormatData/ar/MonthNarrows/4=\u0648 -FormatData/ar/MonthNarrows/5=\u0646 -FormatData/ar/MonthNarrows/6=\u0644 -FormatData/ar/MonthNarrows/7=\u063a -FormatData/ar/MonthNarrows/8=\u0633 -FormatData/ar/MonthNarrows/9=\u0643 -FormatData/ar/MonthNarrows/10=\u0628 -FormatData/ar/MonthNarrows/11=\u062f +FormatData/ar/MonthNarrows/0=ي +FormatData/ar/MonthNarrows/1=ف +FormatData/ar/MonthNarrows/2=م +FormatData/ar/MonthNarrows/3=أ +FormatData/ar/MonthNarrows/4=و +FormatData/ar/MonthNarrows/5=ن +FormatData/ar/MonthNarrows/6=ل +FormatData/ar/MonthNarrows/7=غ +FormatData/ar/MonthNarrows/8=س +FormatData/ar/MonthNarrows/9=ك +FormatData/ar/MonthNarrows/10=ب +FormatData/ar/MonthNarrows/11=د FormatData/ar/MonthNarrows/12= -FormatData/ru/MonthNarrows/0=\u042f -FormatData/ru/MonthNarrows/1=\u0424 -FormatData/ru/MonthNarrows/2=\u041c -FormatData/ru/MonthNarrows/3=\u0410 -FormatData/ru/MonthNarrows/4=\u041c -FormatData/ru/MonthNarrows/5=\u0418 -FormatData/ru/MonthNarrows/6=\u0418 -FormatData/ru/MonthNarrows/7=\u0410 -FormatData/ru/MonthNarrows/8=\u0421 -FormatData/ru/MonthNarrows/9=\u041e -FormatData/ru/MonthNarrows/10=\u041d -FormatData/ru/MonthNarrows/11=\u0414 +FormatData/ru/MonthNarrows/0=Я +FormatData/ru/MonthNarrows/1=Ф +FormatData/ru/MonthNarrows/2=М +FormatData/ru/MonthNarrows/3=А +FormatData/ru/MonthNarrows/4=М +FormatData/ru/MonthNarrows/5=И +FormatData/ru/MonthNarrows/6=И +FormatData/ru/MonthNarrows/7=А +FormatData/ru/MonthNarrows/8=С +FormatData/ru/MonthNarrows/9=О +FormatData/ru/MonthNarrows/10=Н +FormatData/ru/MonthNarrows/11=Д FormatData/ru/MonthNarrows/12= FormatData/ms/MonthNarrows/0=J FormatData/ms/MonthNarrows/1=F @@ -8160,25 +8160,25 @@ FormatData/vi/MonthNarrows/10=11 FormatData/vi/MonthNarrows/11=12 FormatData/vi/MonthNarrows/12= -FormatData/sr/MonthNarrows/0=\u0458 -FormatData/sr/MonthNarrows/1=\u0444 -FormatData/sr/MonthNarrows/2=\u043c -FormatData/sr/MonthNarrows/3=\u0430 -FormatData/sr/MonthNarrows/4=\u043c -FormatData/sr/MonthNarrows/5=\u0458 -FormatData/sr/MonthNarrows/6=\u0458 -FormatData/sr/MonthNarrows/7=\u0430 -FormatData/sr/MonthNarrows/8=\u0441 -FormatData/sr/MonthNarrows/9=\u043e -FormatData/sr/MonthNarrows/10=\u043d -FormatData/sr/MonthNarrows/11=\u0434 +FormatData/sr/MonthNarrows/0=ј +FormatData/sr/MonthNarrows/1=ф +FormatData/sr/MonthNarrows/2=м +FormatData/sr/MonthNarrows/3=а +FormatData/sr/MonthNarrows/4=м +FormatData/sr/MonthNarrows/5=ј +FormatData/sr/MonthNarrows/6=ј +FormatData/sr/MonthNarrows/7=а +FormatData/sr/MonthNarrows/8=с +FormatData/sr/MonthNarrows/9=о +FormatData/sr/MonthNarrows/10=н +FormatData/sr/MonthNarrows/11=д FormatData/sr/MonthNarrows/12= FormatData/mt/MonthNarrows/0=J FormatData/mt/MonthNarrows/1=F FormatData/mt/MonthNarrows/2=M FormatData/mt/MonthNarrows/3=A FormatData/mt/MonthNarrows/4=M -FormatData/mt/MonthNarrows/5=\u0120 +FormatData/mt/MonthNarrows/5=Ġ FormatData/mt/MonthNarrows/6=L FormatData/mt/MonthNarrows/7=A FormatData/mt/MonthNarrows/8=S @@ -8272,7 +8272,7 @@ FormatData/fi/DatePatterns/3=d.M.yyyy # bug #8075173 -FormatData/de/standalone.MonthAbbreviations/2=M\u00e4r +FormatData/de/standalone.MonthAbbreviations/2=Mär # bug #8129361 CurrencyNames//hrk=Kuna @@ -8282,13 +8282,13 @@ CurrencyNames/de/xpf=CFP-Franc CurrencyNames/it/azn=manat azero CurrencyNames/it/ron=leu rumeno -CurrencyNames/it/trl=lira turca (1922\u20132005) +CurrencyNames/it/trl=lira turca (1922–2005) CurrencyNames/it/try=lira turca -CurrencyNames/sv/bgl=bulgarisk h\u00e5rd lev (1962\u20131999) +CurrencyNames/sv/bgl=bulgarisk hård lev (1962–1999) CurrencyNames/sv/xaf=centralafrikansk franc -CurrencyNames/sv/xfu=internationella j\u00e4rnv\u00e4gsunionens franc -CurrencyNames/sv/xof=v\u00e4stafrikansk franc -CurrencyNames/zh_CN/sdg=\u82cf\u4e39\u9551 +CurrencyNames/sv/xfu=internationella järnvägsunionens franc +CurrencyNames/sv/xof=västafrikansk franc +CurrencyNames/zh_CN/sdg=苏丹镑 # bug #8164784 CurrencyNames//mwk=Malawian Malawi Kwacha @@ -8296,7 +8296,7 @@ # bug #8145952 CurrencyNames//byn=Belarusian Ruble -CurrencyNames/be_BY/BYN=\u0420\u0443\u0431 +CurrencyNames/be_BY/BYN=Руб # bug #8037111 FormatData/sv/NumberPatterns/2=#,##0 % @@ -8305,7 +8305,7 @@ FormatData/sr-Latin/NumberElements/1=. # bug #8187946 -CurrencyNames//stn=S\u00e3o Tom\u00e9 and Pr\u00edncipe Dobra +CurrencyNames//stn=São Tomé and Príncipe Dobra CurrencyNames//lak=Lao Kip CurrencyNames//php=Philippine Peso CurrencyNames//azn=Azerbaijan Manat @@ -8314,8 +8314,8 @@ CurrencyNames//mru=Mauritanian Ouguiya # bug #8208746, #8274658 -CurrencyNames//ved=Venezuelan Bol\u00edvar Soberano -CurrencyNames//ves=Venezuelan Bol\u00edvar Soberano +CurrencyNames//ved=Venezuelan Bolívar Soberano +CurrencyNames//ves=Venezuelan Bolívar Soberano # bug #8206879 # For Peru decimal separator is changed to dot(.) and grouping separator is changed to comma(,) @@ -8323,12 +8323,12 @@ FormatData/es_PE/NumberElements/1=, # bug #8227127 -FormatData/ja/short.Eras/0=\u7d00\u5143\u524d -FormatData/ja/short.Eras/1=\u897f\u66a6 -FormatData/zh/short.Eras/0=\u516c\u5143\u524d -FormatData/zh/short.Eras/1=\u516c\u5143 -FormatData/zh_TW/short.Eras/0=\u897f\u5143\u524d -FormatData/zh_TW/short.Eras/1=\u897f\u5143 +FormatData/ja/short.Eras/0=紀元前 +FormatData/ja/short.Eras/1=西暦 +FormatData/zh/short.Eras/0=公元前 +FormatData/zh/short.Eras/1=公元 +FormatData/zh_TW/short.Eras/0=西元前 +FormatData/zh_TW/short.Eras/1=西元 # bug 8234288 TimeZoneNames/en/Asia\/Istanbul/1=Turkey Time @@ -8352,7 +8352,7 @@ LocaleNames//kj=Kuanyama LocaleNames//kl=Kalaallisut LocaleNames//ky=Kyrgyz -LocaleNames//nb=Norwegian Bokm\u00e5l +LocaleNames//nb=Norwegian Bokmål LocaleNames//or=Odia LocaleNames//os=Ossetic LocaleNames//pa=Punjabi @@ -8361,7 +8361,7 @@ LocaleNames//si=Sinhala LocaleNames//to=Tongan LocaleNames//ug=Uyghur -LocaleNames//vo=Volap\u00fck +LocaleNames//vo=Volapük LocaleNames//ang=Old English LocaleNames//arc=Aramaic LocaleNames//arn=Mapuche @@ -8378,26 +8378,26 @@ LocaleNames//gmh=Middle High German LocaleNames//goh=Old High German LocaleNames//grc=Ancient Greek -LocaleNames//gwi=Gwich\u02bcin +LocaleNames//gwi=Gwichʼin LocaleNames//luo=Luo LocaleNames//lus=Mizo LocaleNames//mga=Middle Irish LocaleNames//mul=Multiple languages LocaleNames//mus=Muscogee LocaleNames//new=Newari -LocaleNames//nob=Bokm\u00e5l, Norwegian +LocaleNames//nob=Bokmål, Norwegian LocaleNames//non=Old Norse -LocaleNames//nqo=N\u2019Ko +LocaleNames//nqo=N’Ko LocaleNames//nso=Northern Sotho LocaleNames//ota=Ottoman Turkish LocaleNames//peo=Old Persian -LocaleNames//pro=Old Proven\u00e7al +LocaleNames//pro=Old Provençal LocaleNames//sah=Sakha LocaleNames//sga=Old Irish LocaleNames//sog=Sogdien LocaleNames//tog=Nyasa Tonga LocaleNames//und=Unknown language -LocaleNames//vol=Volap\u00fck +LocaleNames//vol=Volapük LocaleNames//wal=Wolaytta LocaleNames//Beng=Bangla LocaleNames//Geok=Georgian Khutsuri @@ -8416,15 +8416,15 @@ LocaleNames//Zyyy=Common LocaleNames//Zzzz=Unknown Script LocaleNames//AG=Antigua & Barbuda -LocaleNames//AX=\u00c5land Islands +LocaleNames//AX=Åland Islands LocaleNames//BA=Bosnia & Herzegovina -LocaleNames//BL=St. Barth\u00e9lemy +LocaleNames//BL=St. Barthélemy LocaleNames//BQ=Caribbean Netherlands LocaleNames//CC=Cocos (Keeling) Islands LocaleNames//CD=Congo - Kinshasa LocaleNames//CG=Congo - Brazzaville -LocaleNames//CI=C\u00f4te d\u2019Ivoire -LocaleNames//CW=Cura\u00e7ao +LocaleNames//CI=Côte d’Ivoire +LocaleNames//CW=Curaçao LocaleNames//CZ=Czechia LocaleNames//GS=South Georgia & South Sandwich Islands LocaleNames//HK=Hong Kong SAR China @@ -8439,10 +8439,10 @@ LocaleNames//PM=St. Pierre & Miquelon LocaleNames//PN=Pitcairn Islands LocaleNames//PS=Palestinian Territories -LocaleNames//RE=R\u00e9union +LocaleNames//RE=Réunion LocaleNames//SH=St. Helena LocaleNames//SJ=Svalbard & Jan Mayen -LocaleNames//ST=S\u00e3o Tom\u00e9 & Pr\u00edncipe +LocaleNames//ST=São Tomé & Príncipe LocaleNames//SX=Sint Maarten LocaleNames//SZ=Eswatini LocaleNames//TC=Turks & Caicos Islands @@ -8457,20 +8457,20 @@ #bug 8287868 LocaleNames/ca/SZ=eSwatini -LocaleNames/el/SZ=\u0395\u03c3\u03bf\u03c5\u03b1\u03c4\u03af\u03bd\u03b9 -LocaleNames/el_CY/SZ=\u0395\u03c3\u03bf\u03c5\u03b1\u03c4\u03af\u03bd\u03b9 +LocaleNames/el/SZ=Εσουατίνι +LocaleNames/el_CY/SZ=Εσουατίνι LocaleNames/es/SZ=Esuatini -LocaleNames/ga/SZ=eSuait\u00edn\u00ed +LocaleNames/ga/SZ=eSuaitíní LocaleNames/it/SZ=Swaziland -LocaleNames/ja/SZ=\u30a8\u30b9\u30ef\u30c6\u30a3\u30cb -LocaleNames/ko/SZ=\uc5d0\uc2a4\uc640\ud2f0\ub2c8 +LocaleNames/ja/SZ=エスワティニ +LocaleNames/ko/SZ=에스와티니 LocaleNames/mt/SZ=l-Eswatini -LocaleNames/pt/SZ=Essuat\u00edni -LocaleNames/ru/SZ=\u042d\u0441\u0432\u0430\u0442\u0438\u043d\u0438 -LocaleNames/sr/SZ=\u0421\u0432\u0430\u0437\u0438\u043b\u0435\u043d\u0434 -LocaleNames/th/SZ=\u0e40\u0e2d\u0e2a\u0e27\u0e32\u0e15\u0e35\u0e19\u0e35 -LocaleNames/zh/SZ=\u65af\u5a01\u58eb\u5170 -LocaleNames/zh_TW/SZ=\u53f2\u74e6\u5e1d\u5c3c +LocaleNames/pt/SZ=Essuatíni +LocaleNames/ru/SZ=Эсватини +LocaleNames/sr/SZ=Свазиленд +LocaleNames/th/SZ=เอสวาตีนี +LocaleNames/zh/SZ=斯威士兰 +LocaleNames/zh_TW/SZ=史瓦帝尼 #bug 8303472 -LocaleNames//TR=T\u00fcrkiye +LocaleNames//TR=Türkiye diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/text/resources/LocaleData.cldr openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleData.cldr --- openjdk-21-21.0.9+10/test/jdk/sun/text/resources/LocaleData.cldr 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleData.cldr 2026-01-15 15:34:19.000000000 +0000 @@ -8,7 +8,7 @@ LocaleNames/en/es=Spanish # bug #4052679 -LocaleNames/fr/fr=fran\u00e7ais +LocaleNames/fr/fr=français # bug #4055602, 4290801, 8013836 CurrencyNames/pt_BR/BRL=R$ @@ -32,26 +32,26 @@ FormatData/pt_BR/DayAbbreviations/2=ter. FormatData/pt_BR/DayNames/0=domingo FormatData/pt_BR/DayNames/1=segunda-feira -FormatData/pt_BR/DayNames/2=ter\u00e7a-feira +FormatData/pt_BR/DayNames/2=terça-feira FormatData/pt_BR/MonthNames/0=janeiro FormatData/pt_BR/MonthNames/1=fevereiro -FormatData/pt_BR/MonthNames/2=mar\u00e7o -LocaleNames/pt_BR/pt=portugu\u00eas +FormatData/pt_BR/MonthNames/2=março +LocaleNames/pt_BR/pt=português LocaleNames/pt_BR/PT=Portugal LocaleNames/pt_BR/BR=Brasil # bug #4066550 -FormatData/ja/Eras/0=\u7d00\u5143\u524d -FormatData/ja/Eras/1=\u897f\u66a6 +FormatData/ja/Eras/0=紀元前 +FormatData/ja/Eras/1=西暦 # bug #4067619 LocaleNames/en/LT=Lithuania # bug #4068012, 4290801, 4942982 -CurrencyNames/ru_RU/RUB=\u20bd +CurrencyNames/ru_RU/RUB=₽ FormatData/ru_RU/latn.NumberPatterns/0=#,##0.### -# FormatData/ru_RU/NumberPatterns/1=#,##0.##'\u0440.';-#,##0.##'\u0440.' # Changed; see bug 4122840 -FormatData/ru_RU/latn.NumberPatterns/2=#,##0\u00a0% +# FormatData/ru_RU/NumberPatterns/1=#,##0.##'р.';-#,##0.##'р.' # Changed; see bug 4122840 +FormatData/ru_RU/latn.NumberPatterns/2=#,##0 % # bug #4070174 FormatData/en_CA/latn.NumberElements/1=, @@ -82,60 +82,60 @@ # FormatData/it_IT/NumberPatterns/1='L.' #,##0;-'L.' #,##0 # Changed; see bug 4122840 # bug #4071782 -FormatData/ru/DayAbbreviations/0=\u0432\u0441 -FormatData/ru/DayAbbreviations/1=\u043f\u043d -FormatData/ru/DayAbbreviations/2=\u0432\u0442 -FormatData/ru/DayAbbreviations/3=\u0441\u0440 -FormatData/ru/DayAbbreviations/4=\u0447\u0442 -FormatData/ru/DayAbbreviations/5=\u043f\u0442 -FormatData/ru/DayAbbreviations/6=\u0441\u0431 +FormatData/ru/DayAbbreviations/0=вс +FormatData/ru/DayAbbreviations/1=пн +FormatData/ru/DayAbbreviations/2=вт +FormatData/ru/DayAbbreviations/3=ср +FormatData/ru/DayAbbreviations/4=чт +FormatData/ru/DayAbbreviations/5=пт +FormatData/ru/DayAbbreviations/6=сб # bug #4072013 - obsoleted by 6386647: Full date format in DateFormat does not include day of the week for UK locale #FormatData/en_GB/DatePatterns/0=dd MMMM yyyy # bug #4072388 -LocaleNames/cs/cs=\u010de\u0161tina +LocaleNames/cs/cs=čeština # bug #4072773 FormatData/ja/DatePatterns/2=y/MM/dd FormatData/ja/DatePatterns/3=y/MM/dd # bug #4075404, 4290801, 4942982 -CurrencyNames/ru_RU/RUB=\u20bd +CurrencyNames/ru_RU/RUB=₽ FormatData/ru_RU/TimePatterns/0=HH:mm:ss zzzz FormatData/ru_RU/TimePatterns/1=HH:mm:ss z FormatData/ru_RU/TimePatterns/2=HH:mm:ss FormatData/ru_RU/TimePatterns/3=HH:mm -FormatData/ru_RU/DatePatterns/0=EEEE, d MMMM y\u202f'\u0433'. -FormatData/ru_RU/DatePatterns/1=d MMMM y\u202f'\u0433'. -FormatData/ru_RU/DatePatterns/2=d MMM y\u202f'\u0433'. +FormatData/ru_RU/DatePatterns/0=EEEE, d MMMM y 'г'. +FormatData/ru_RU/DatePatterns/1=d MMMM y 'г'. +FormatData/ru_RU/DatePatterns/2=d MMM y 'г'. FormatData/ru_RU/DatePatterns/3=dd.MM.y FormatData/ru_RU/DateTimePatterns/0={1}, {0} # bug #4084356, 4290801 -CurrencyNames/pl_PL/PLN=z\u0142 +CurrencyNames/pl_PL/PLN=zł FormatData/pl_PL/latn.NumberPatterns/0=#,##0.### -# FormatData/pl_PL/NumberPatterns/1=#,##0.## z\u0142;-#,##0.## z\u0142 # Changed; see bug 4122840 +# FormatData/pl_PL/NumberPatterns/1=#,##0.## zł;-#,##0.## zł # Changed; see bug 4122840 FormatData/pl_PL/latn.NumberPatterns/2=#,##0% FormatData/pl_PL/DayNames/0=niedziela -FormatData/pl_PL/DayNames/1=poniedzia\u0142ek +FormatData/pl_PL/DayNames/1=poniedziałek FormatData/pl_PL/DayNames/2=wtorek -FormatData/pl_PL/DayNames/3=\u015broda +FormatData/pl_PL/DayNames/3=środa FormatData/pl_PL/DayNames/4=czwartek -FormatData/pl_PL/DayNames/5=pi\u0105tek +FormatData/pl_PL/DayNames/5=piątek FormatData/pl_PL/DayNames/6=sobota -FormatData/pl_PL/standalone.MonthNames/0=stycze\u0144 +FormatData/pl_PL/standalone.MonthNames/0=styczeń FormatData/pl_PL/standalone.MonthNames/1=luty FormatData/pl_PL/standalone.MonthNames/2=marzec -FormatData/pl_PL/standalone.MonthNames/3=kwiecie\u0144 +FormatData/pl_PL/standalone.MonthNames/3=kwiecień FormatData/pl_PL/standalone.MonthNames/4=maj FormatData/pl_PL/standalone.MonthNames/5=czerwiec FormatData/pl_PL/standalone.MonthNames/6=lipiec -FormatData/pl_PL/standalone.MonthNames/7=sierpie\u0144 -FormatData/pl_PL/standalone.MonthNames/8=wrzesie\u0144 -FormatData/pl_PL/standalone.MonthNames/9=pa\u017adziernik +FormatData/pl_PL/standalone.MonthNames/7=sierpień +FormatData/pl_PL/standalone.MonthNames/8=wrzesień +FormatData/pl_PL/standalone.MonthNames/9=październik FormatData/pl_PL/standalone.MonthNames/10=listopad -FormatData/pl_PL/standalone.MonthNames/11=grudzie\u0144 +FormatData/pl_PL/standalone.MonthNames/11=grudzień FormatData/pl_PL/standalone.MonthNames/12= LocaleNames/pl_PL/pl=polski FormatData/pl_PL/TimePatterns/0=HH:mm:ss zzzz @@ -149,15 +149,15 @@ FormatData/pl_PL/DatePatterns/3=d.MM.y FormatData/pl_PL/DateTimePatterns/0={1} {0} FormatData/pl_PL/latn.NumberElements/0=, -FormatData/pl_PL/latn.NumberElements/1=\u00a0 +FormatData/pl_PL/latn.NumberElements/1=  FormatData/pl_PL/latn.NumberElements/2=; FormatData/pl_PL/latn.NumberElements/3=% FormatData/pl_PL/latn.NumberElements/4=0 FormatData/pl_PL/latn.NumberElements/5=# FormatData/pl_PL/latn.NumberElements/6=- FormatData/pl_PL/latn.NumberElements/7=E -FormatData/pl_PL/latn.NumberElements/8=\u2030 -FormatData/pl_PL/latn.NumberElements/9=\u221e +FormatData/pl_PL/latn.NumberElements/8=‰ +FormatData/pl_PL/latn.NumberElements/9=∞ FormatData/pl_PL/latn.NumberElements/10=NaN FormatData/pl_PL/Eras/0=p.n.e. FormatData/pl_PL/Eras/1=n.e. @@ -165,7 +165,7 @@ FormatData/pl_PL/DayAbbreviations/0=niedz. FormatData/pl_PL/DayAbbreviations/1=pon. FormatData/pl_PL/DayAbbreviations/2=wt. -FormatData/pl_PL/DayAbbreviations/3=\u015br. +FormatData/pl_PL/DayAbbreviations/3=śr. FormatData/pl_PL/DayAbbreviations/4=czw. FormatData/pl_PL/DayAbbreviations/5=pt. FormatData/pl_PL/DayAbbreviations/6=sob. @@ -178,7 +178,7 @@ FormatData/pl_PL/MonthAbbreviations/6=lip FormatData/pl_PL/MonthAbbreviations/7=sie FormatData/pl_PL/MonthAbbreviations/8=wrz -FormatData/pl_PL/MonthAbbreviations/9=pa\u017a +FormatData/pl_PL/MonthAbbreviations/9=paź FormatData/pl_PL/MonthAbbreviations/10=lis FormatData/pl_PL/MonthAbbreviations/11=gru FormatData/pl_PL/MonthAbbreviations/12= @@ -187,14 +187,14 @@ # bug #4087238, 4290801 # bug 4156708 - changed currency symbol from 00a5 to ffe5 -CurrencyNames/ja_JP/JPY=\uffe5 -# FormatData/ja_JP/NumberPatterns/1=\u00a5#,##0.00 # Changed; see bug 4122840 +CurrencyNames/ja_JP/JPY=¥ +# FormatData/ja_JP/NumberPatterns/1=¥#,##0.00 # Changed; see bug 4122840 # bug #4092361 -FormatData/en_US/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/en_US/TimePatterns/1=h:mm:ss\u202fa z -FormatData/en_US/TimePatterns/2=h:mm:ss\u202fa -FormatData/en_US/TimePatterns/3=h:mm\u202fa +FormatData/en_US/TimePatterns/0=h:mm:ss a zzzz +FormatData/en_US/TimePatterns/1=h:mm:ss a z +FormatData/en_US/TimePatterns/2=h:mm:ss a +FormatData/en_US/TimePatterns/3=h:mm a FormatData/en_US/DatePatterns/0=EEEE, MMMM d, y FormatData/en_US/DatePatterns/1=MMMM d, y FormatData/en_US/DatePatterns/2=MMM d, y @@ -202,121 +202,121 @@ FormatData/en_US/DateTimePatterns/0={1}, {0} # bug #4094033, 4290801, 4942982 -CurrencyNames/ru_RU/RUB=\u20bd +CurrencyNames/ru_RU/RUB=₽ FormatData/ru_RU/latn.NumberPatterns/0=#,##0.### -# FormatData/ru_RU/NumberPatterns/1=#,##0.##'\u0440.';-#,##0.##'\u0440.' # Changed; see bug 4122840 -FormatData/ru_RU/latn.NumberPatterns/2=#,##0\u00a0% -FormatData/ru_RU/MonthNames/0=\u044f\u043d\u0432\u0430\u0440\u044f -FormatData/ru_RU/MonthNames/1=\u0444\u0435\u0432\u0440\u0430\u043b\u044f -FormatData/ru_RU/MonthNames/2=\u043c\u0430\u0440\u0442\u0430 -FormatData/ru_RU/MonthNames/3=\u0430\u043f\u0440\u0435\u043b\u044f -FormatData/ru_RU/MonthNames/4=\u043c\u0430\u044f -FormatData/ru_RU/MonthNames/5=\u0438\u044e\u043d\u044f -FormatData/ru_RU/MonthNames/6=\u0438\u044e\u043b\u044f -FormatData/ru_RU/MonthNames/7=\u0430\u0432\u0433\u0443\u0441\u0442\u0430 -FormatData/ru_RU/MonthNames/8=\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f -FormatData/ru_RU/MonthNames/9=\u043e\u043a\u0442\u044f\u0431\u0440\u044f -FormatData/ru_RU/MonthNames/10=\u043d\u043e\u044f\u0431\u0440\u044f -FormatData/ru_RU/MonthNames/11=\u0434\u0435\u043a\u0430\u0431\u0440\u044f +# FormatData/ru_RU/NumberPatterns/1=#,##0.##'р.';-#,##0.##'р.' # Changed; see bug 4122840 +FormatData/ru_RU/latn.NumberPatterns/2=#,##0 % +FormatData/ru_RU/MonthNames/0=января +FormatData/ru_RU/MonthNames/1=февраля +FormatData/ru_RU/MonthNames/2=марта +FormatData/ru_RU/MonthNames/3=апреля +FormatData/ru_RU/MonthNames/4=мая +FormatData/ru_RU/MonthNames/5=июня +FormatData/ru_RU/MonthNames/6=июля +FormatData/ru_RU/MonthNames/7=августа +FormatData/ru_RU/MonthNames/8=сентября +FormatData/ru_RU/MonthNames/9=октября +FormatData/ru_RU/MonthNames/10=ноября +FormatData/ru_RU/MonthNames/11=декабря FormatData/ru_RU/MonthNames/12= -FormatData/ru_RU/standalone.MonthNames/0=\u044f\u043d\u0432\u0430\u0440\u044c -FormatData/ru_RU/standalone.MonthNames/1=\u0444\u0435\u0432\u0440\u0430\u043b\u044c -FormatData/ru_RU/standalone.MonthNames/2=\u043c\u0430\u0440\u0442 -FormatData/ru_RU/standalone.MonthNames/3=\u0430\u043f\u0440\u0435\u043b\u044c -FormatData/ru_RU/standalone.MonthNames/4=\u043c\u0430\u0439 -FormatData/ru_RU/standalone.MonthNames/5=\u0438\u044e\u043d\u044c -FormatData/ru_RU/standalone.MonthNames/6=\u0438\u044e\u043b\u044c -FormatData/ru_RU/standalone.MonthNames/7=\u0430\u0432\u0433\u0443\u0441\u0442 -FormatData/ru_RU/standalone.MonthNames/8=\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c -FormatData/ru_RU/standalone.MonthNames/9=\u043e\u043a\u0442\u044f\u0431\u0440\u044c -FormatData/ru_RU/standalone.MonthNames/10=\u043d\u043e\u044f\u0431\u0440\u044c -FormatData/ru_RU/standalone.MonthNames/11=\u0434\u0435\u043a\u0430\u0431\u0440\u044c +FormatData/ru_RU/standalone.MonthNames/0=январь +FormatData/ru_RU/standalone.MonthNames/1=февраль +FormatData/ru_RU/standalone.MonthNames/2=март +FormatData/ru_RU/standalone.MonthNames/3=апрель +FormatData/ru_RU/standalone.MonthNames/4=май +FormatData/ru_RU/standalone.MonthNames/5=июнь +FormatData/ru_RU/standalone.MonthNames/6=июль +FormatData/ru_RU/standalone.MonthNames/7=август +FormatData/ru_RU/standalone.MonthNames/8=сентябрь +FormatData/ru_RU/standalone.MonthNames/9=октябрь +FormatData/ru_RU/standalone.MonthNames/10=ноябрь +FormatData/ru_RU/standalone.MonthNames/11=декабрь FormatData/ru_RU/standalone.MonthNames/12= -FormatData/ru_RU/Eras/0=\u0434\u043e \u043d. \u044d. -FormatData/ru_RU/Eras/1=\u043d. \u044d. -LocaleNames/ru_RU/ru=\u0440\u0443\u0441\u0441\u043a\u0438\u0439 -FormatData/ru_RU/MonthAbbreviations/0=\u044f\u043d\u0432. -FormatData/ru_RU/MonthAbbreviations/1=\u0444\u0435\u0432\u0440. -FormatData/ru_RU/MonthAbbreviations/2=\u043c\u0430\u0440. -FormatData/ru_RU/MonthAbbreviations/3=\u0430\u043f\u0440. -FormatData/ru_RU/MonthAbbreviations/4=\u043c\u0430\u044f -FormatData/ru_RU/MonthAbbreviations/5=\u0438\u044e\u043d. -FormatData/ru_RU/MonthAbbreviations/6=\u0438\u044e\u043b. -FormatData/ru_RU/MonthAbbreviations/7=\u0430\u0432\u0433. -FormatData/ru_RU/MonthAbbreviations/8=\u0441\u0435\u043d\u0442. -FormatData/ru_RU/MonthAbbreviations/9=\u043e\u043a\u0442. -FormatData/ru_RU/MonthAbbreviations/10=\u043d\u043e\u044f\u0431. -FormatData/ru_RU/MonthAbbreviations/11=\u0434\u0435\u043a. +FormatData/ru_RU/Eras/0=до н. э. +FormatData/ru_RU/Eras/1=н. э. +LocaleNames/ru_RU/ru=русский +FormatData/ru_RU/MonthAbbreviations/0=янв. +FormatData/ru_RU/MonthAbbreviations/1=февр. +FormatData/ru_RU/MonthAbbreviations/2=мар. +FormatData/ru_RU/MonthAbbreviations/3=апр. +FormatData/ru_RU/MonthAbbreviations/4=мая +FormatData/ru_RU/MonthAbbreviations/5=июн. +FormatData/ru_RU/MonthAbbreviations/6=июл. +FormatData/ru_RU/MonthAbbreviations/7=авг. +FormatData/ru_RU/MonthAbbreviations/8=сент. +FormatData/ru_RU/MonthAbbreviations/9=окт. +FormatData/ru_RU/MonthAbbreviations/10=нояб. +FormatData/ru_RU/MonthAbbreviations/11=дек. FormatData/ru_RU/MonthAbbreviations/12= -# FormatData/ru_RU/standalone.MonthAbbreviations/0=\u044f\u043d\u0432 -# FormatData/ru_RU/standalone.MonthAbbreviations/1=\u0444\u0435\u0432 -# FormatData/ru_RU/standalone.MonthAbbreviations/2=\u043c\u0430\u0440 -# FormatData/ru_RU/standalone.MonthAbbreviations/3=\u0430\u043f\u0440 -# FormatData/ru_RU/standalone.MonthAbbreviations/4=\u043c\u0430\u0439 -# FormatData/ru_RU/standalone.MonthAbbreviations/5=\u0438\u044e\u043d -# FormatData/ru_RU/standalone.MonthAbbreviations/6=\u0438\u044e\u043b -# FormatData/ru_RU/standalone.MonthAbbreviations/7=\u0430\u0432\u0433 -# FormatData/ru_RU/standalone.MonthAbbreviations/8=\u0441\u0435\u043d -# FormatData/ru_RU/standalone.MonthAbbreviations/9=\u043e\u043a\u0442 -# FormatData/ru_RU/standalone.MonthAbbreviations/10=\u043d\u043e\u044f -# FormatData/ru_RU/standalone.MonthAbbreviations/11=\u0434\u0435\u043a +# FormatData/ru_RU/standalone.MonthAbbreviations/0=янв +# FormatData/ru_RU/standalone.MonthAbbreviations/1=фев +# FormatData/ru_RU/standalone.MonthAbbreviations/2=мар +# FormatData/ru_RU/standalone.MonthAbbreviations/3=апр +# FormatData/ru_RU/standalone.MonthAbbreviations/4=май +# FormatData/ru_RU/standalone.MonthAbbreviations/5=июн +# FormatData/ru_RU/standalone.MonthAbbreviations/6=июл +# FormatData/ru_RU/standalone.MonthAbbreviations/7=авг +# FormatData/ru_RU/standalone.MonthAbbreviations/8=сен +# FormatData/ru_RU/standalone.MonthAbbreviations/9=окт +# FormatData/ru_RU/standalone.MonthAbbreviations/10=ноя +# FormatData/ru_RU/standalone.MonthAbbreviations/11=дек # FormatData/ru_RU/standalone.MonthAbbreviations/12= -FormatData/ru_RU/standalone.MonthAbbreviations/0=\u044f\u043d\u0432. -FormatData/ru_RU/standalone.MonthAbbreviations/1=\u0444\u0435\u0432\u0440. -FormatData/ru_RU/standalone.MonthAbbreviations/2=\u043c\u0430\u0440\u0442 -FormatData/ru_RU/standalone.MonthAbbreviations/3=\u0430\u043f\u0440. -FormatData/ru_RU/standalone.MonthAbbreviations/4=\u043c\u0430\u0439 -FormatData/ru_RU/standalone.MonthAbbreviations/5=\u0438\u044e\u043d\u044c -FormatData/ru_RU/standalone.MonthAbbreviations/6=\u0438\u044e\u043b\u044c -FormatData/ru_RU/standalone.MonthAbbreviations/7=\u0430\u0432\u0433. -FormatData/ru_RU/standalone.MonthAbbreviations/8=\u0441\u0435\u043d\u0442. -FormatData/ru_RU/standalone.MonthAbbreviations/9=\u043e\u043a\u0442. -FormatData/ru_RU/standalone.MonthAbbreviations/10=\u043d\u043e\u044f\u0431. -FormatData/ru_RU/standalone.MonthAbbreviations/11=\u0434\u0435\u043a. +FormatData/ru_RU/standalone.MonthAbbreviations/0=янв. +FormatData/ru_RU/standalone.MonthAbbreviations/1=февр. +FormatData/ru_RU/standalone.MonthAbbreviations/2=март +FormatData/ru_RU/standalone.MonthAbbreviations/3=апр. +FormatData/ru_RU/standalone.MonthAbbreviations/4=май +FormatData/ru_RU/standalone.MonthAbbreviations/5=июнь +FormatData/ru_RU/standalone.MonthAbbreviations/6=июль +FormatData/ru_RU/standalone.MonthAbbreviations/7=авг. +FormatData/ru_RU/standalone.MonthAbbreviations/8=сент. +FormatData/ru_RU/standalone.MonthAbbreviations/9=окт. +FormatData/ru_RU/standalone.MonthAbbreviations/10=нояб. +FormatData/ru_RU/standalone.MonthAbbreviations/11=дек. FormatData/ru_RU/standalone.MonthAbbreviations/12= FormatData/ru_RU/TimePatterns/0=HH:mm:ss zzzz FormatData/ru_RU/TimePatterns/1=HH:mm:ss z FormatData/ru_RU/TimePatterns/2=HH:mm:ss FormatData/ru_RU/TimePatterns/3=HH:mm -FormatData/ru_RU/DatePatterns/0=EEEE, d MMMM y\u202f'\u0433'. -FormatData/ru_RU/DatePatterns/1=d MMMM y\u202f'\u0433'. -FormatData/ru_RU/DatePatterns/2=d MMM y\u202f'\u0433'. +FormatData/ru_RU/DatePatterns/0=EEEE, d MMMM y 'г'. +FormatData/ru_RU/DatePatterns/1=d MMMM y 'г'. +FormatData/ru_RU/DatePatterns/2=d MMM y 'г'. FormatData/ru_RU/DatePatterns/3=dd.MM.y FormatData/ru_RU/DateTimePatterns/0={1}, {0} -FormatData/ru_RU/DayNames/0=\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435 -FormatData/ru_RU/DayNames/1=\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a -FormatData/ru_RU/DayNames/2=\u0432\u0442\u043e\u0440\u043d\u0438\u043a -FormatData/ru_RU/DayNames/3=\u0441\u0440\u0435\u0434\u0430 -FormatData/ru_RU/DayNames/4=\u0447\u0435\u0442\u0432\u0435\u0440\u0433 -FormatData/ru_RU/DayNames/5=\u043f\u044f\u0442\u043d\u0438\u0446\u0430 -FormatData/ru_RU/DayNames/6=\u0441\u0443\u0431\u0431\u043e\u0442\u0430 +FormatData/ru_RU/DayNames/0=воскресенье +FormatData/ru_RU/DayNames/1=понедельник +FormatData/ru_RU/DayNames/2=вторник +FormatData/ru_RU/DayNames/3=среда +FormatData/ru_RU/DayNames/4=четверг +FormatData/ru_RU/DayNames/5=пятница +FormatData/ru_RU/DayNames/6=суббота FormatData/ru_RU/latn.NumberElements/0=, -FormatData/ru_RU/latn.NumberElements/1=\u00a0 +FormatData/ru_RU/latn.NumberElements/1=  FormatData/ru_RU/latn.NumberElements/2=; FormatData/ru_RU/latn.NumberElements/3=% FormatData/ru_RU/latn.NumberElements/4=0 FormatData/ru_RU/latn.NumberElements/5=# FormatData/ru_RU/latn.NumberElements/6=- FormatData/ru_RU/latn.NumberElements/7=E -FormatData/ru_RU/latn.NumberElements/8=\u2030 -FormatData/ru_RU/latn.NumberElements/9=\u221e -FormatData/ru_RU/latn.NumberElements/10=\u043d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e -LocaleNames/ru_RU/RU=\u0420\u043e\u0441\u0441\u0438\u044f -FormatData/ru_RU/DayAbbreviations/0=\u0432\u0441 -FormatData/ru_RU/DayAbbreviations/1=\u043f\u043d -FormatData/ru_RU/DayAbbreviations/2=\u0432\u0442 -FormatData/ru_RU/DayAbbreviations/3=\u0441\u0440 -FormatData/ru_RU/DayAbbreviations/4=\u0447\u0442 -FormatData/ru_RU/DayAbbreviations/5=\u043f\u0442 -FormatData/ru_RU/DayAbbreviations/6=\u0441\u0431 +FormatData/ru_RU/latn.NumberElements/8=‰ +FormatData/ru_RU/latn.NumberElements/9=∞ +FormatData/ru_RU/latn.NumberElements/10=не число +LocaleNames/ru_RU/RU=Россия +FormatData/ru_RU/DayAbbreviations/0=вс +FormatData/ru_RU/DayAbbreviations/1=пн +FormatData/ru_RU/DayAbbreviations/2=вт +FormatData/ru_RU/DayAbbreviations/3=ср +FormatData/ru_RU/DayAbbreviations/4=чт +FormatData/ru_RU/DayAbbreviations/5=пт +FormatData/ru_RU/DayAbbreviations/6=сб FormatData/ru_RU/AmPmMarkers/0=AM FormatData/ru_RU/AmPmMarkers/1=PM # bug #4094371, 4098518, 4290801, 6558863 -FormatData/en_AU/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/en_AU/TimePatterns/1=h:mm:ss\u202fa z -FormatData/en_AU/TimePatterns/2=h:mm:ss\u202fa -FormatData/en_AU/TimePatterns/3=h:mm\u202fa +FormatData/en_AU/TimePatterns/0=h:mm:ss a zzzz +FormatData/en_AU/TimePatterns/1=h:mm:ss a z +FormatData/en_AU/TimePatterns/2=h:mm:ss a +FormatData/en_AU/TimePatterns/3=h:mm a FormatData/en_AU/DatePatterns/0=EEEE, d MMMM y FormatData/en_AU/DatePatterns/1=d MMMM y FormatData/en_AU/DatePatterns/2=d MMM y @@ -337,10 +337,10 @@ FormatData/en_AU/MonthNames/1=February FormatData/en_AU/MonthNames/2=March # changed, bug 6558863 -FormatData/en_NZ/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/en_NZ/TimePatterns/1=h:mm:ss\u202fa z -FormatData/en_NZ/TimePatterns/2=h:mm:ss\u202fa -FormatData/en_NZ/TimePatterns/3=h:mm\u202fa +FormatData/en_NZ/TimePatterns/0=h:mm:ss a zzzz +FormatData/en_NZ/TimePatterns/1=h:mm:ss a z +FormatData/en_NZ/TimePatterns/2=h:mm:ss a +FormatData/en_NZ/TimePatterns/3=h:mm a FormatData/en_NZ/DatePatterns/0=EEEE, d MMMM y FormatData/en_NZ/DatePatterns/1=d MMMM y FormatData/en_NZ/DatePatterns/2=d/MM/y @@ -386,7 +386,7 @@ CurrencyNames/es_AR/ARS=$ FormatData/es_AR/latn.NumberPatterns/0=#,##0.### # FormatData/es_AR/NumberPatterns/1=$#,##0.00;($#,##0.00) # Changed; see bug 4122840 -FormatData/es_AR/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_AR/latn.NumberPatterns/2=#,##0 % FormatData/es_AR/TimePatterns/0=HH:mm:ss zzzz FormatData/es_AR/TimePatterns/1=HH:mm:ss z FormatData/es_AR/TimePatterns/2=HH:mm:ss @@ -401,7 +401,7 @@ FormatData/es_AR/latn.NumberElements/2=; FormatData/es_BO/latn.NumberPatterns/0=#,##0.### # FormatData/es_BO/NumberPatterns/1=B$#,##0.00;(B$#,##0.00) # Changed; see bug 4122840 -FormatData/es_BO/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_BO/latn.NumberPatterns/2=#,##0 % CurrencyNames/es_BO/BOB=Bs FormatData/es_BO/TimePatterns/0=HH:mm:ss zzzz FormatData/es_BO/TimePatterns/1=HH:mm:ss z @@ -419,7 +419,7 @@ CurrencyNames/es_CL/CLP=$ FormatData/es_CL/latn.NumberPatterns/0=#,##0.### # FormatData/es_CL/NumberPatterns/1=Ch$#,##0.00;Ch$-#,##0.00 # Changed; see bug 4122840 -FormatData/es_CL/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_CL/latn.NumberPatterns/2=#,##0 % FormatData/es_CL/DatePatterns/0=EEEE, d 'de' MMMM 'de' y FormatData/es_CL/DatePatterns/1=d 'de' MMMM 'de' y FormatData/es_CL/DatePatterns/2=dd-MM-y @@ -430,13 +430,13 @@ FormatData/es_CL/latn.NumberElements/2=; FormatData/es_CO/latn.NumberPatterns/0=#,##0.### # FormatData/es_CO/NumberPatterns/1=C$#,##0.00;(C$#,##0.00) # Changed; see bug 4122840 -FormatData/es_CO/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_CO/latn.NumberPatterns/2=#,##0 % # changed currency symbol during 5102005 bugfix CurrencyNames/es_CO/COP=$ -FormatData/es_CO/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/es_CO/TimePatterns/1=h:mm:ss\u202fa z -FormatData/es_CO/TimePatterns/2=h:mm:ss\u202fa -FormatData/es_CO/TimePatterns/3=h:mm\u202fa +FormatData/es_CO/TimePatterns/0=h:mm:ss a zzzz +FormatData/es_CO/TimePatterns/1=h:mm:ss a z +FormatData/es_CO/TimePatterns/2=h:mm:ss a +FormatData/es_CO/TimePatterns/3=h:mm a FormatData/es_CO/DatePatterns/0=EEEE, d 'de' MMMM 'de' y FormatData/es_CO/DatePatterns/1=d 'de' MMMM 'de' y FormatData/es_CO/DatePatterns/2=d/MM/y @@ -448,8 +448,8 @@ FormatData/es_CO/latn.NumberElements/2=; FormatData/es_CR/latn.NumberPatterns/0=#,##0.### # FormatData/es_CR/NumberPatterns/1=C#,##0.00;(C#,##0.00) # Changed; see bug 4122840 -FormatData/es_CR/latn.NumberPatterns/2=#,##0\u00a0% -CurrencyNames/es_CR/CRC=\u20a1 +FormatData/es_CR/latn.NumberPatterns/2=#,##0 % +CurrencyNames/es_CR/CRC=₡ FormatData/es_CR/TimePatterns/0=HH:mm:ss zzzz FormatData/es_CR/TimePatterns/1=HH:mm:ss z FormatData/es_CR/TimePatterns/2=HH:mm:ss @@ -460,16 +460,16 @@ FormatData/es_CR/DatePatterns/3=d/M/yy FormatData/es_CR/DateTimePatterns/0={1}, {0} FormatData/es_CR/latn.NumberElements/0=, -FormatData/es_CR/latn.NumberElements/1=\u00a0 +FormatData/es_CR/latn.NumberElements/1=  FormatData/es_CR/latn.NumberElements/2=; FormatData/es_DO/latn.NumberPatterns/0=#,##0.### # FormatData/es_DO/NumberPatterns/1=RD$#,##0.00;(RD$#,##0.00) # Changed; see bug 4122840 -FormatData/es_DO/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_DO/latn.NumberPatterns/2=#,##0 % CurrencyNames/es_DO/DOP=RD$ -FormatData/es_DO/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/es_DO/TimePatterns/1=h:mm:ss\u202fa z -FormatData/es_DO/TimePatterns/2=h:mm:ss\u202fa -FormatData/es_DO/TimePatterns/3=h:mm\u202fa +FormatData/es_DO/TimePatterns/0=h:mm:ss a zzzz +FormatData/es_DO/TimePatterns/1=h:mm:ss a z +FormatData/es_DO/TimePatterns/2=h:mm:ss a +FormatData/es_DO/TimePatterns/3=h:mm a FormatData/es_DO/DatePatterns/0=EEEE, d 'de' MMMM 'de' y FormatData/es_DO/DatePatterns/1=d 'de' MMMM 'de' y # FormatData/es_DO/DatePatterns/2=MM/dd/yyyy # Changed: see bug 8037343 @@ -480,7 +480,7 @@ FormatData/es_DO/latn.NumberElements/2=; FormatData/es_EC/latn.NumberPatterns/0=#,##0.### # FormatData/es_EC/NumberPatterns/1=S/#,##0.00;S/-#,##0.00 # Changed; see bug 4122840 -FormatData/es_EC/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_EC/latn.NumberPatterns/2=#,##0 % #changed for 4945388 CurrencyNames/es_EC/USD=$ FormatData/es_EC/DatePatterns/0=EEEE, d 'de' MMMM 'de' y @@ -492,20 +492,20 @@ FormatData/es_EC/latn.NumberElements/0=, FormatData/es_EC/latn.NumberElements/1=. FormatData/es_EC/latn.NumberElements/2=; -LocaleNames/es/ES=Espa\u00f1a +LocaleNames/es/ES=España LocaleNames/es/AR=Argentina LocaleNames/es/BO=Bolivia LocaleNames/es/CL=Chile LocaleNames/es/CO=Colombia LocaleNames/es/CR=Costa Rica -LocaleNames/es/DO=Rep\u00fablica Dominicana +LocaleNames/es/DO=República Dominicana LocaleNames/es/EC=Ecuador LocaleNames/es/GT=Guatemala LocaleNames/es/HN=Honduras -LocaleNames/es/MX=M\u00e9xico +LocaleNames/es/MX=México LocaleNames/es/NI=Nicaragua -LocaleNames/es/PA=Panam\u00e1 -LocaleNames/es/PE=Per\u00fa +LocaleNames/es/PA=Panamá +LocaleNames/es/PE=Perú LocaleNames/es/PR=Puerto Rico LocaleNames/es/PY=Paraguay # LocaleNames/es/SV=El SalvadorUY # Changed, see bug 4331446 @@ -513,7 +513,7 @@ LocaleNames/es/VE=Venezuela FormatData/es_GT/latn.NumberPatterns/0=#,##0.### # FormatData/es_GT/NumberPatterns/1=Q#,##0.00;(Q#,##0.00) # Changed; see bug 4122840 -FormatData/es_GT/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_GT/latn.NumberPatterns/2=#,##0 % CurrencyNames/es_GT/GTQ=Q FormatData/es_GT/TimePatterns/0=HH:mm:ss zzzz FormatData/es_GT/TimePatterns/1=HH:mm:ss z @@ -529,7 +529,7 @@ FormatData/es_GT/latn.NumberElements/2=; FormatData/es_HN/latn.NumberPatterns/0=#,##0.### # FormatData/es_HN/NumberPatterns/1=L#,##0.00;(L#,##0.00) # Changed; see bug 4122840 -FormatData/es_HN/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_HN/latn.NumberPatterns/2=#,##0 % CurrencyNames/es_HN/HNL=L FormatData/es_HN/TimePatterns/0=HH:mm:ss zzzz FormatData/es_HN/TimePatterns/1=HH:mm:ss z @@ -561,7 +561,7 @@ FormatData/es_MX/latn.NumberElements/2=; FormatData/es_NI/latn.NumberPatterns/0=#,##0.### # FormatData/es_NI/NumberPatterns/1=$C#,##0.00;($C#,##0.00) # Changed; see bug 4122840 -FormatData/es_NI/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_NI/latn.NumberPatterns/2=#,##0 % CurrencyNames/es_NI/NIO=C$ FormatData/es_NI/TimePatterns/0=HH:mm:ss zzzz FormatData/es_NI/TimePatterns/1=HH:mm:ss z @@ -577,12 +577,12 @@ FormatData/es_NI/latn.NumberElements/2=; FormatData/es_PA/latn.NumberPatterns/0=#,##0.### # FormatData/es_PA/NumberPatterns/1=B#,##0.00;(B#,##0.00) # Changed; see bug 4122840 -FormatData/es_PA/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_PA/latn.NumberPatterns/2=#,##0 % CurrencyNames/es_PA/PAB=B/. -FormatData/es_PA/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/es_PA/TimePatterns/1=h:mm:ss\u202fa z -FormatData/es_PA/TimePatterns/2=h:mm:ss\u202fa -FormatData/es_PA/TimePatterns/3=h:mm\u202fa +FormatData/es_PA/TimePatterns/0=h:mm:ss a zzzz +FormatData/es_PA/TimePatterns/1=h:mm:ss a z +FormatData/es_PA/TimePatterns/2=h:mm:ss a +FormatData/es_PA/TimePatterns/3=h:mm a FormatData/es_PA/DatePatterns/0=EEEE, d 'de' MMMM 'de' y FormatData/es_PA/DatePatterns/1=d 'de' MMMM 'de' y FormatData/es_PA/DatePatterns/2=MM/dd/y @@ -593,7 +593,7 @@ FormatData/es_PA/latn.NumberElements/2=; FormatData/es_PE/latn.NumberPatterns/0=#,##0.### # FormatData/es_PE/NumberPatterns/1=S/#,##0.00;S/-#,##0.00 # Changed; see bug 4122840 -FormatData/es_PE/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_PE/latn.NumberPatterns/2=#,##0 % FormatData/es_PE/TimePatterns/0=HH:mm:ss zzzz FormatData/es_PE/TimePatterns/1=HH:mm:ss z FormatData/es_PE/TimePatterns/2=HH:mm:ss @@ -608,12 +608,12 @@ FormatData/es_PE/latn.NumberElements/2=; FormatData/es_PR/latn.NumberPatterns/0=#,##0.### # FormatData/es_PR/NumberPatterns/1=$#,##0.00;($#,##0.00) # Changed; see bug 4122840 -FormatData/es_PR/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_PR/latn.NumberPatterns/2=#,##0 % CurrencyNames/es_PR/USD=$ -FormatData/es_PR/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/es_PR/TimePatterns/1=h:mm:ss\u202fa z -FormatData/es_PR/TimePatterns/2=h:mm:ss\u202fa -FormatData/es_PR/TimePatterns/3=h:mm\u202fa +FormatData/es_PR/TimePatterns/0=h:mm:ss a zzzz +FormatData/es_PR/TimePatterns/1=h:mm:ss a z +FormatData/es_PR/TimePatterns/2=h:mm:ss a +FormatData/es_PR/TimePatterns/3=h:mm a FormatData/es_PR/DatePatterns/0=EEEE, d 'de' MMMM 'de' y FormatData/es_PR/DatePatterns/1=d 'de' MMMM 'de' y FormatData/es_PR/DatePatterns/2=MM/dd/y @@ -625,7 +625,7 @@ CurrencyNames/es_PY/PYG=Gs. FormatData/es_PY/latn.NumberPatterns/0=#,##0.### # FormatData/es_PY/NumberPatterns/1=G#,##0.00;(G#,##0.00) # Changed; see bug 4122840 -FormatData/es_PY/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_PY/latn.NumberPatterns/2=#,##0 % FormatData/es_PY/TimePatterns/0=HH:mm:ss zzzz FormatData/es_PY/TimePatterns/1=HH:mm:ss z FormatData/es_PY/TimePatterns/2=HH:mm:ss @@ -640,7 +640,7 @@ FormatData/es_PY/latn.NumberElements/2=; FormatData/es_SV/latn.NumberPatterns/0=#,##0.### # FormatData/es_SV/NumberPatterns/1=C#,##0.00;(C#,##0.00) # Changed; see bug 4122840 -FormatData/es_SV/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_SV/latn.NumberPatterns/2=#,##0 % FormatData/es_SV/TimePatterns/0=HH:mm:ss zzzz FormatData/es_SV/TimePatterns/1=HH:mm:ss z FormatData/es_SV/TimePatterns/2=HH:mm:ss @@ -656,7 +656,7 @@ CurrencyNames/es_UY/UYU=$ FormatData/es_UY/latn.NumberPatterns/0=#,##0.### # FormatData/es_UY/NumberPatterns/1=NU$ #,##0.00;(NU$#,##0.00) # Changed; see bug 4122840 -FormatData/es_UY/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/es_UY/latn.NumberPatterns/2=#,##0 % FormatData/es_UY/TimePatterns/0=HH:mm:ss zzzz FormatData/es_UY/TimePatterns/1=HH:mm:ss z FormatData/es_UY/TimePatterns/2=HH:mm:ss @@ -672,11 +672,11 @@ # bug 6570259 FormatData/es_VE/latn.NumberPatterns/0=#,##0.### # FormatData/es_VE/NumberPatterns/1=Bs#,##0.00;Bs -#,##0.00 # Changed; see bug 4122840 -FormatData/es_VE/latn.NumberPatterns/2=#,##0\u00a0% -FormatData/es_VE/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/es_VE/TimePatterns/1=h:mm:ss\u202fa z -FormatData/es_VE/TimePatterns/2=h:mm:ss\u202fa -FormatData/es_VE/TimePatterns/3=h:mm\u202fa +FormatData/es_VE/latn.NumberPatterns/2=#,##0 % +FormatData/es_VE/TimePatterns/0=h:mm:ss a zzzz +FormatData/es_VE/TimePatterns/1=h:mm:ss a z +FormatData/es_VE/TimePatterns/2=h:mm:ss a +FormatData/es_VE/TimePatterns/3=h:mm a FormatData/es_VE/DatePatterns/0=EEEE, d 'de' MMMM 'de' y FormatData/es_VE/DatePatterns/1=d 'de' MMMM 'de' y FormatData/es_VE/DatePatterns/2=d MMM y @@ -687,19 +687,19 @@ FormatData/es_VE/latn.NumberElements/2=; # bug #4099810, 4290801, 6868106, 6916787 -CurrencyNames/uk_UA/UAH=\u20b4 +CurrencyNames/uk_UA/UAH=₴ FormatData/uk_UA/latn.NumberPatterns/0=#,##0.### -# FormatData/uk_UA/NumberPatterns/1=#,##0.## '\u0433\u0440\u0432.';-#,##0.## '\u0433\u0440\u0432.' # Changed; see bug 4122840 +# FormatData/uk_UA/NumberPatterns/1=#,##0.## 'грв.';-#,##0.## 'грв.' # Changed; see bug 4122840 FormatData/uk_UA/latn.NumberPatterns/2=#,##0% # bug 6245766 -FormatData/uk/DatePatterns/0=EEEE, d MMMM y\u202f'\u0440'. -FormatData/uk/DatePatterns/1=d MMMM y\u202f'\u0440'. -FormatData/uk/DatePatterns/2=d MMM y\u202f'\u0440'. +FormatData/uk/DatePatterns/0=EEEE, d MMMM y 'р'. +FormatData/uk/DatePatterns/1=d MMMM y 'р'. +FormatData/uk/DatePatterns/2=d MMM y 'р'. FormatData/uk/DatePatterns/3=dd.MM.yy # bug #4103218 -# FormatData/ko_KR/NumberPatterns/1=\u20a9#,##0;-\u20a9#,##0 # Changed; see bug 4122840 +# FormatData/ko_KR/NumberPatterns/1=₩#,##0;-₩#,##0 # Changed; see bug 4122840 # bug #4103220 should be adequately tested by the above tests, which represent a pretty # good cross-section of the locale data @@ -721,1481 +721,1481 @@ FormatData/fr_CA/TimePatterns/1=HH 'h' mm 'min' ss 's' z # bug #4113638, 4290801 -CurrencyNames/ar_AE/AED=\u062f.\u0625.\u200f +CurrencyNames/ar_AE/AED=د.إ.‏ FormatData/ar_AE/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_AE/NumberPatterns/1='\u062f.\u0625.\u200f' #,##0.###;'\u062f.\u0625.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_AE/NumberPatterns/1='د.إ.‏' #,##0.###;'د.إ.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_AE/arab.NumberPatterns/2=#,##0% -FormatData/ar_AE/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_AE/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_AE/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_AE/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_AE/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_AE/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_AE/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_AE/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_AE/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_AE/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_AE/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_AE/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_AE/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_AE/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_AE/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_AE/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_AE/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_AE/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_AE/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_AE/DayNames/0=الأحد +FormatData/ar_AE/DayNames/1=الاثنين +FormatData/ar_AE/DayNames/2=الثلاثاء +FormatData/ar_AE/DayNames/3=الأربعاء +FormatData/ar_AE/DayNames/4=الخميس +FormatData/ar_AE/DayNames/5=الجمعة +FormatData/ar_AE/DayNames/6=السبت +FormatData/ar_AE/MonthAbbreviations/0=يناير +FormatData/ar_AE/MonthAbbreviations/1=فبراير +FormatData/ar_AE/MonthAbbreviations/2=مارس +FormatData/ar_AE/MonthAbbreviations/3=أبريل +FormatData/ar_AE/MonthAbbreviations/4=مايو +FormatData/ar_AE/MonthAbbreviations/5=يونيو +FormatData/ar_AE/MonthAbbreviations/6=يوليو +FormatData/ar_AE/MonthAbbreviations/7=أغسطس +FormatData/ar_AE/MonthAbbreviations/8=سبتمبر +FormatData/ar_AE/MonthAbbreviations/9=أكتوبر +FormatData/ar_AE/MonthAbbreviations/10=نوفمبر +FormatData/ar_AE/MonthAbbreviations/11=ديسمبر FormatData/ar_AE/MonthAbbreviations/12= -FormatData/ar_AE/Eras/0=\u0642.\u0645 -FormatData/ar_AE/Eras/1=\u0645 -FormatData/ar_AE/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_AE/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_AE/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_AE/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_AE/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_AE/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_AE/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_AE/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_AE/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_AE/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_AE/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_AE/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_AE/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_AE/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_AE/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_AE/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_AE/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_AE/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_AE/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_AE/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_AE/Eras/0=ق.م +FormatData/ar_AE/Eras/1=م +FormatData/ar_AE/DayAbbreviations/0=الأحد +FormatData/ar_AE/DayAbbreviations/1=الاثنين +FormatData/ar_AE/DayAbbreviations/2=الثلاثاء +FormatData/ar_AE/DayAbbreviations/3=الأربعاء +FormatData/ar_AE/DayAbbreviations/4=الخميس +FormatData/ar_AE/DayAbbreviations/5=الجمعة +FormatData/ar_AE/DayAbbreviations/6=السبت +LocaleNames/ar_AE/ar=العربية +FormatData/ar_AE/MonthNames/0=يناير +FormatData/ar_AE/MonthNames/1=فبراير +FormatData/ar_AE/MonthNames/2=مارس +FormatData/ar_AE/MonthNames/3=أبريل +FormatData/ar_AE/MonthNames/4=مايو +FormatData/ar_AE/MonthNames/5=يونيو +FormatData/ar_AE/MonthNames/6=يوليو +FormatData/ar_AE/MonthNames/7=أغسطس +FormatData/ar_AE/MonthNames/8=سبتمبر +FormatData/ar_AE/MonthNames/9=أكتوبر +FormatData/ar_AE/MonthNames/10=نوفمبر +FormatData/ar_AE/MonthNames/11=ديسمبر FormatData/ar_AE/MonthNames/12= -FormatData/ar_AE/AmPmMarkers/0=\u0635 -FormatData/ar_AE/AmPmMarkers/1=\u0645 +FormatData/ar_AE/AmPmMarkers/0=ص +FormatData/ar_AE/AmPmMarkers/1=م FormatData/ar_AE/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_AE/TimePatterns/1=h:mm:ss a z FormatData/ar_AE/TimePatterns/2=h:mm:ss a FormatData/ar_AE/TimePatterns/3=h:mm a -FormatData/ar_AE/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_AE/DatePatterns/0=EEEE، d MMMM y FormatData/ar_AE/DatePatterns/1=d MMMM y -FormatData/ar_AE/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_AE/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_AE/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_AE/EG=\u0645\u0635\u0631 -LocaleNames/ar_AE/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_AE/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_AE/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_AE/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_AE/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_AE/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_AE/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_AE/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_AE/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_AE/QA=\u0642\u0637\u0631 -LocaleNames/ar_AE/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_AE/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_AE/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_AE/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_AE/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_AE/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_AE/arab.NumberElements/0=\u066b -FormatData/ar_AE/arab.NumberElements/1=\u066c -FormatData/ar_AE/arab.NumberElements/2=\u061b -FormatData/ar_AE/arab.NumberElements/3=\u066a\u061c -FormatData/ar_AE/arab.NumberElements/4=\u0660 +FormatData/ar_AE/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_AE/DatePatterns/3=d‏/M‏/y +FormatData/ar_AE/DateTimePatterns/0={1}، {0} +LocaleNames/ar_AE/EG=مصر +LocaleNames/ar_AE/DZ=الجزائر +LocaleNames/ar_AE/BH=البحرين +LocaleNames/ar_AE/IQ=العراق +LocaleNames/ar_AE/JO=الأردن +LocaleNames/ar_AE/KW=الكويت +LocaleNames/ar_AE/LB=لبنان +LocaleNames/ar_AE/LY=ليبيا +LocaleNames/ar_AE/MA=المغرب +LocaleNames/ar_AE/OM=عُمان +LocaleNames/ar_AE/QA=قطر +LocaleNames/ar_AE/SA=المملكة العربية السعودية +LocaleNames/ar_AE/SD=السودان +LocaleNames/ar_AE/SY=سوريا +LocaleNames/ar_AE/TN=تونس +LocaleNames/ar_AE/AE=الإمارات العربية المتحدة +LocaleNames/ar_AE/YE=اليمن +FormatData/ar_AE/arab.NumberElements/0=٫ +FormatData/ar_AE/arab.NumberElements/1=٬ +FormatData/ar_AE/arab.NumberElements/2=؛ +FormatData/ar_AE/arab.NumberElements/3=٪؜ +FormatData/ar_AE/arab.NumberElements/4=٠ FormatData/ar_AE/arab.NumberElements/5=# -FormatData/ar_AE/arab.NumberElements/6=\u061c- -FormatData/ar_AE/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_AE/arab.NumberElements/8=\u0609 -FormatData/ar_AE/arab.NumberElements/9=\u221e -FormatData/ar_AE/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_BH/BHD=\u062f.\u0628.\u200f +FormatData/ar_AE/arab.NumberElements/6=؜- +FormatData/ar_AE/arab.NumberElements/7=اس +FormatData/ar_AE/arab.NumberElements/8=؉ +FormatData/ar_AE/arab.NumberElements/9=∞ +FormatData/ar_AE/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_BH/BHD=د.ب.‏ FormatData/ar_BH/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_BH/NumberPatterns/1='\u062f.\u0628.\u200f' #,##0.###;'\u062f.\u0628.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_BH/NumberPatterns/1='د.ب.‏' #,##0.###;'د.ب.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_BH/arab.NumberPatterns/2=#,##0% -FormatData/ar_BH/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_BH/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_BH/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_BH/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_BH/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_BH/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_BH/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_BH/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_BH/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_BH/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_BH/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_BH/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_BH/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_BH/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_BH/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_BH/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_BH/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_BH/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_BH/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_BH/DayNames/0=الأحد +FormatData/ar_BH/DayNames/1=الاثنين +FormatData/ar_BH/DayNames/2=الثلاثاء +FormatData/ar_BH/DayNames/3=الأربعاء +FormatData/ar_BH/DayNames/4=الخميس +FormatData/ar_BH/DayNames/5=الجمعة +FormatData/ar_BH/DayNames/6=السبت +FormatData/ar_BH/MonthAbbreviations/0=يناير +FormatData/ar_BH/MonthAbbreviations/1=فبراير +FormatData/ar_BH/MonthAbbreviations/2=مارس +FormatData/ar_BH/MonthAbbreviations/3=أبريل +FormatData/ar_BH/MonthAbbreviations/4=مايو +FormatData/ar_BH/MonthAbbreviations/5=يونيو +FormatData/ar_BH/MonthAbbreviations/6=يوليو +FormatData/ar_BH/MonthAbbreviations/7=أغسطس +FormatData/ar_BH/MonthAbbreviations/8=سبتمبر +FormatData/ar_BH/MonthAbbreviations/9=أكتوبر +FormatData/ar_BH/MonthAbbreviations/10=نوفمبر +FormatData/ar_BH/MonthAbbreviations/11=ديسمبر FormatData/ar_BH/MonthAbbreviations/12= -FormatData/ar_BH/Eras/0=\u0642.\u0645 -FormatData/ar_BH/Eras/1=\u0645 -FormatData/ar_BH/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_BH/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_BH/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_BH/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_BH/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_BH/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_BH/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_BH/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_BH/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_BH/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_BH/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_BH/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_BH/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_BH/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_BH/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_BH/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_BH/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_BH/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_BH/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_BH/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_BH/Eras/0=ق.م +FormatData/ar_BH/Eras/1=م +FormatData/ar_BH/DayAbbreviations/0=الأحد +FormatData/ar_BH/DayAbbreviations/1=الاثنين +FormatData/ar_BH/DayAbbreviations/2=الثلاثاء +FormatData/ar_BH/DayAbbreviations/3=الأربعاء +FormatData/ar_BH/DayAbbreviations/4=الخميس +FormatData/ar_BH/DayAbbreviations/5=الجمعة +FormatData/ar_BH/DayAbbreviations/6=السبت +LocaleNames/ar_BH/ar=العربية +FormatData/ar_BH/MonthNames/0=يناير +FormatData/ar_BH/MonthNames/1=فبراير +FormatData/ar_BH/MonthNames/2=مارس +FormatData/ar_BH/MonthNames/3=أبريل +FormatData/ar_BH/MonthNames/4=مايو +FormatData/ar_BH/MonthNames/5=يونيو +FormatData/ar_BH/MonthNames/6=يوليو +FormatData/ar_BH/MonthNames/7=أغسطس +FormatData/ar_BH/MonthNames/8=سبتمبر +FormatData/ar_BH/MonthNames/9=أكتوبر +FormatData/ar_BH/MonthNames/10=نوفمبر +FormatData/ar_BH/MonthNames/11=ديسمبر FormatData/ar_BH/MonthNames/12= -FormatData/ar_BH/AmPmMarkers/0=\u0635 -FormatData/ar_BH/AmPmMarkers/1=\u0645 +FormatData/ar_BH/AmPmMarkers/0=ص +FormatData/ar_BH/AmPmMarkers/1=م FormatData/ar_BH/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_BH/TimePatterns/1=h:mm:ss a z FormatData/ar_BH/TimePatterns/2=h:mm:ss a FormatData/ar_BH/TimePatterns/3=h:mm a -FormatData/ar_BH/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_BH/DatePatterns/0=EEEE، d MMMM y FormatData/ar_BH/DatePatterns/1=d MMMM y -FormatData/ar_BH/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_BH/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_BH/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_BH/EG=\u0645\u0635\u0631 -LocaleNames/ar_BH/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_BH/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_BH/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_BH/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_BH/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_BH/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_BH/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_BH/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_BH/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_BH/QA=\u0642\u0637\u0631 -LocaleNames/ar_BH/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_BH/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_BH/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_BH/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_BH/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_BH/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_BH/arab.NumberElements/0=\u066b -FormatData/ar_BH/arab.NumberElements/1=\u066c -FormatData/ar_BH/arab.NumberElements/2=\u061b -FormatData/ar_BH/arab.NumberElements/3=\u066a\u061c -FormatData/ar_BH/arab.NumberElements/4=\u0660 +FormatData/ar_BH/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_BH/DatePatterns/3=d‏/M‏/y +FormatData/ar_BH/DateTimePatterns/0={1}، {0} +LocaleNames/ar_BH/EG=مصر +LocaleNames/ar_BH/DZ=الجزائر +LocaleNames/ar_BH/BH=البحرين +LocaleNames/ar_BH/IQ=العراق +LocaleNames/ar_BH/JO=الأردن +LocaleNames/ar_BH/KW=الكويت +LocaleNames/ar_BH/LB=لبنان +LocaleNames/ar_BH/LY=ليبيا +LocaleNames/ar_BH/MA=المغرب +LocaleNames/ar_BH/OM=عُمان +LocaleNames/ar_BH/QA=قطر +LocaleNames/ar_BH/SA=المملكة العربية السعودية +LocaleNames/ar_BH/SD=السودان +LocaleNames/ar_BH/SY=سوريا +LocaleNames/ar_BH/TN=تونس +LocaleNames/ar_BH/AE=الإمارات العربية المتحدة +LocaleNames/ar_BH/YE=اليمن +FormatData/ar_BH/arab.NumberElements/0=٫ +FormatData/ar_BH/arab.NumberElements/1=٬ +FormatData/ar_BH/arab.NumberElements/2=؛ +FormatData/ar_BH/arab.NumberElements/3=٪؜ +FormatData/ar_BH/arab.NumberElements/4=٠ FormatData/ar_BH/arab.NumberElements/5=# -FormatData/ar_BH/arab.NumberElements/6=\u061c- -FormatData/ar_BH/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_BH/arab.NumberElements/8=\u0609 -FormatData/ar_BH/arab.NumberElements/9=\u221e -FormatData/ar_BH/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_DZ/DZD=\u062f.\u062c.\u200f +FormatData/ar_BH/arab.NumberElements/6=؜- +FormatData/ar_BH/arab.NumberElements/7=اس +FormatData/ar_BH/arab.NumberElements/8=؉ +FormatData/ar_BH/arab.NumberElements/9=∞ +FormatData/ar_BH/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_DZ/DZD=د.ج.‏ FormatData/ar_DZ/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_DZ/NumberPatterns/1='\u062f.\u062c.\u200f' #,##0.###;'\u062f.\u062c.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_DZ/NumberPatterns/1='د.ج.‏' #,##0.###;'د.ج.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_DZ/arab.NumberPatterns/2=#,##0% -FormatData/ar_DZ/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_DZ/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_DZ/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_DZ/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_DZ/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_DZ/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_DZ/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_DZ/MonthAbbreviations/0=\u062c\u0627\u0646\u0641\u064a -FormatData/ar_DZ/MonthAbbreviations/1=\u0641\u064a\u0641\u0631\u064a -FormatData/ar_DZ/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_DZ/MonthAbbreviations/3=\u0623\u0641\u0631\u064a\u0644 -FormatData/ar_DZ/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_DZ/MonthAbbreviations/5=\u062c\u0648\u0627\u0646 -FormatData/ar_DZ/MonthAbbreviations/6=\u062c\u0648\u064a\u0644\u064a\u0629 -FormatData/ar_DZ/MonthAbbreviations/7=\u0623\u0648\u062a -FormatData/ar_DZ/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_DZ/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_DZ/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_DZ/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_DZ/DayNames/0=الأحد +FormatData/ar_DZ/DayNames/1=الاثنين +FormatData/ar_DZ/DayNames/2=الثلاثاء +FormatData/ar_DZ/DayNames/3=الأربعاء +FormatData/ar_DZ/DayNames/4=الخميس +FormatData/ar_DZ/DayNames/5=الجمعة +FormatData/ar_DZ/DayNames/6=السبت +FormatData/ar_DZ/MonthAbbreviations/0=جانفي +FormatData/ar_DZ/MonthAbbreviations/1=فيفري +FormatData/ar_DZ/MonthAbbreviations/2=مارس +FormatData/ar_DZ/MonthAbbreviations/3=أفريل +FormatData/ar_DZ/MonthAbbreviations/4=ماي +FormatData/ar_DZ/MonthAbbreviations/5=جوان +FormatData/ar_DZ/MonthAbbreviations/6=جويلية +FormatData/ar_DZ/MonthAbbreviations/7=أوت +FormatData/ar_DZ/MonthAbbreviations/8=سبتمبر +FormatData/ar_DZ/MonthAbbreviations/9=أكتوبر +FormatData/ar_DZ/MonthAbbreviations/10=نوفمبر +FormatData/ar_DZ/MonthAbbreviations/11=ديسمبر FormatData/ar_DZ/MonthAbbreviations/12= -FormatData/ar_DZ/Eras/0=\u0642.\u0645 -FormatData/ar_DZ/Eras/1=\u0645 -FormatData/ar_DZ/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_DZ/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_DZ/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_DZ/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_DZ/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_DZ/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_DZ/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_DZ/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_DZ/MonthNames/0=\u062c\u0627\u0646\u0641\u064a -FormatData/ar_DZ/MonthNames/1=\u0641\u064a\u0641\u0631\u064a -FormatData/ar_DZ/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_DZ/MonthNames/3=\u0623\u0641\u0631\u064a\u0644 -FormatData/ar_DZ/MonthNames/4=\u0645\u0627\u064a -FormatData/ar_DZ/MonthNames/5=\u062c\u0648\u0627\u0646 -FormatData/ar_DZ/MonthNames/6=\u062c\u0648\u064a\u0644\u064a\u0629 -FormatData/ar_DZ/MonthNames/7=\u0623\u0648\u062a -FormatData/ar_DZ/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_DZ/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_DZ/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_DZ/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_DZ/Eras/0=ق.م +FormatData/ar_DZ/Eras/1=م +FormatData/ar_DZ/DayAbbreviations/0=الأحد +FormatData/ar_DZ/DayAbbreviations/1=الاثنين +FormatData/ar_DZ/DayAbbreviations/2=الثلاثاء +FormatData/ar_DZ/DayAbbreviations/3=الأربعاء +FormatData/ar_DZ/DayAbbreviations/4=الخميس +FormatData/ar_DZ/DayAbbreviations/5=الجمعة +FormatData/ar_DZ/DayAbbreviations/6=السبت +LocaleNames/ar_DZ/ar=العربية +FormatData/ar_DZ/MonthNames/0=جانفي +FormatData/ar_DZ/MonthNames/1=فيفري +FormatData/ar_DZ/MonthNames/2=مارس +FormatData/ar_DZ/MonthNames/3=أفريل +FormatData/ar_DZ/MonthNames/4=ماي +FormatData/ar_DZ/MonthNames/5=جوان +FormatData/ar_DZ/MonthNames/6=جويلية +FormatData/ar_DZ/MonthNames/7=أوت +FormatData/ar_DZ/MonthNames/8=سبتمبر +FormatData/ar_DZ/MonthNames/9=أكتوبر +FormatData/ar_DZ/MonthNames/10=نوفمبر +FormatData/ar_DZ/MonthNames/11=ديسمبر FormatData/ar_DZ/MonthNames/12= -FormatData/ar_DZ/AmPmMarkers/0=\u0635 -FormatData/ar_DZ/AmPmMarkers/1=\u0645 +FormatData/ar_DZ/AmPmMarkers/0=ص +FormatData/ar_DZ/AmPmMarkers/1=م FormatData/ar_DZ/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_DZ/TimePatterns/1=h:mm:ss a z FormatData/ar_DZ/TimePatterns/2=h:mm:ss a FormatData/ar_DZ/TimePatterns/3=h:mm a -FormatData/ar_DZ/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_DZ/DatePatterns/0=EEEE، d MMMM y FormatData/ar_DZ/DatePatterns/1=d MMMM y -FormatData/ar_DZ/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_DZ/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_DZ/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_DZ/EG=\u0645\u0635\u0631 -LocaleNames/ar_DZ/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_DZ/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_DZ/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_DZ/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_DZ/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_DZ/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_DZ/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_DZ/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_DZ/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_DZ/QA=\u0642\u0637\u0631 -LocaleNames/ar_DZ/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_DZ/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_DZ/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_DZ/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_DZ/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_DZ/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_DZ/arab.NumberElements/0=\u066b -FormatData/ar_DZ/arab.NumberElements/1=\u066c -FormatData/ar_DZ/arab.NumberElements/2=\u061b -FormatData/ar_DZ/arab.NumberElements/3=\u066a\u061c -FormatData/ar_DZ/arab.NumberElements/4=\u0660 +FormatData/ar_DZ/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_DZ/DatePatterns/3=d‏/M‏/y +FormatData/ar_DZ/DateTimePatterns/0={1}، {0} +LocaleNames/ar_DZ/EG=مصر +LocaleNames/ar_DZ/DZ=الجزائر +LocaleNames/ar_DZ/BH=البحرين +LocaleNames/ar_DZ/IQ=العراق +LocaleNames/ar_DZ/JO=الأردن +LocaleNames/ar_DZ/KW=الكويت +LocaleNames/ar_DZ/LB=لبنان +LocaleNames/ar_DZ/LY=ليبيا +LocaleNames/ar_DZ/MA=المغرب +LocaleNames/ar_DZ/OM=عُمان +LocaleNames/ar_DZ/QA=قطر +LocaleNames/ar_DZ/SA=المملكة العربية السعودية +LocaleNames/ar_DZ/SD=السودان +LocaleNames/ar_DZ/SY=سوريا +LocaleNames/ar_DZ/TN=تونس +LocaleNames/ar_DZ/AE=الإمارات العربية المتحدة +LocaleNames/ar_DZ/YE=اليمن +FormatData/ar_DZ/arab.NumberElements/0=٫ +FormatData/ar_DZ/arab.NumberElements/1=٬ +FormatData/ar_DZ/arab.NumberElements/2=؛ +FormatData/ar_DZ/arab.NumberElements/3=٪؜ +FormatData/ar_DZ/arab.NumberElements/4=٠ FormatData/ar_DZ/arab.NumberElements/5=# -FormatData/ar_DZ/arab.NumberElements/6=\u061c- -FormatData/ar_DZ/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_DZ/arab.NumberElements/8=\u0609 -FormatData/ar_DZ/arab.NumberElements/9=\u221e -FormatData/ar_DZ/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_EG/EGP=\u062c.\u0645.\u200f +FormatData/ar_DZ/arab.NumberElements/6=؜- +FormatData/ar_DZ/arab.NumberElements/7=اس +FormatData/ar_DZ/arab.NumberElements/8=؉ +FormatData/ar_DZ/arab.NumberElements/9=∞ +FormatData/ar_DZ/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_EG/EGP=ج.م.‏ FormatData/ar_EG/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_EG/NumberPatterns/1='\u062c.\u0645.\u200f' #,##0.###;'\u062c.\u0645.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_EG/NumberPatterns/1='ج.م.‏' #,##0.###;'ج.م.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_EG/arab.NumberPatterns/2=#,##0% -FormatData/ar_EG/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_EG/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_EG/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_EG/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_EG/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_EG/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_EG/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_EG/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_EG/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_EG/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_EG/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_EG/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_EG/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_EG/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_EG/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_EG/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_EG/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_EG/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_EG/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_EG/DayNames/0=الأحد +FormatData/ar_EG/DayNames/1=الاثنين +FormatData/ar_EG/DayNames/2=الثلاثاء +FormatData/ar_EG/DayNames/3=الأربعاء +FormatData/ar_EG/DayNames/4=الخميس +FormatData/ar_EG/DayNames/5=الجمعة +FormatData/ar_EG/DayNames/6=السبت +FormatData/ar_EG/MonthAbbreviations/0=يناير +FormatData/ar_EG/MonthAbbreviations/1=فبراير +FormatData/ar_EG/MonthAbbreviations/2=مارس +FormatData/ar_EG/MonthAbbreviations/3=أبريل +FormatData/ar_EG/MonthAbbreviations/4=مايو +FormatData/ar_EG/MonthAbbreviations/5=يونيو +FormatData/ar_EG/MonthAbbreviations/6=يوليو +FormatData/ar_EG/MonthAbbreviations/7=أغسطس +FormatData/ar_EG/MonthAbbreviations/8=سبتمبر +FormatData/ar_EG/MonthAbbreviations/9=أكتوبر +FormatData/ar_EG/MonthAbbreviations/10=نوفمبر +FormatData/ar_EG/MonthAbbreviations/11=ديسمبر FormatData/ar_EG/MonthAbbreviations/12= -FormatData/ar_EG/Eras/0=\u0642.\u0645 -FormatData/ar_EG/Eras/1=\u0645 -FormatData/ar_EG/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_EG/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_EG/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_EG/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_EG/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_EG/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_EG/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_EG/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_EG/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_EG/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_EG/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_EG/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_EG/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_EG/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_EG/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_EG/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_EG/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_EG/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_EG/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_EG/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_EG/Eras/0=ق.م +FormatData/ar_EG/Eras/1=م +FormatData/ar_EG/DayAbbreviations/0=الأحد +FormatData/ar_EG/DayAbbreviations/1=الاثنين +FormatData/ar_EG/DayAbbreviations/2=الثلاثاء +FormatData/ar_EG/DayAbbreviations/3=الأربعاء +FormatData/ar_EG/DayAbbreviations/4=الخميس +FormatData/ar_EG/DayAbbreviations/5=الجمعة +FormatData/ar_EG/DayAbbreviations/6=السبت +LocaleNames/ar_EG/ar=العربية +FormatData/ar_EG/MonthNames/0=يناير +FormatData/ar_EG/MonthNames/1=فبراير +FormatData/ar_EG/MonthNames/2=مارس +FormatData/ar_EG/MonthNames/3=أبريل +FormatData/ar_EG/MonthNames/4=مايو +FormatData/ar_EG/MonthNames/5=يونيو +FormatData/ar_EG/MonthNames/6=يوليو +FormatData/ar_EG/MonthNames/7=أغسطس +FormatData/ar_EG/MonthNames/8=سبتمبر +FormatData/ar_EG/MonthNames/9=أكتوبر +FormatData/ar_EG/MonthNames/10=نوفمبر +FormatData/ar_EG/MonthNames/11=ديسمبر FormatData/ar_EG/MonthNames/12= -FormatData/ar_EG/AmPmMarkers/0=\u0635 -FormatData/ar_EG/AmPmMarkers/1=\u0645 +FormatData/ar_EG/AmPmMarkers/0=ص +FormatData/ar_EG/AmPmMarkers/1=م FormatData/ar_EG/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_EG/TimePatterns/1=h:mm:ss a z FormatData/ar_EG/TimePatterns/2=h:mm:ss a FormatData/ar_EG/TimePatterns/3=h:mm a -FormatData/ar_EG/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_EG/DatePatterns/0=EEEE، d MMMM y FormatData/ar_EG/DatePatterns/1=d MMMM y -FormatData/ar_EG/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_EG/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_EG/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_EG/EG=\u0645\u0635\u0631 -LocaleNames/ar_EG/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_EG/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_EG/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_EG/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_EG/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_EG/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_EG/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_EG/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_EG/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_EG/QA=\u0642\u0637\u0631 -LocaleNames/ar_EG/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_EG/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_EG/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_EG/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_EG/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_EG/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_EG/arab.NumberElements/0=\u066b -FormatData/ar_EG/arab.NumberElements/1=\u066c -FormatData/ar_EG/arab.NumberElements/2=\u061b -FormatData/ar_EG/arab.NumberElements/3=\u066a\u061c -FormatData/ar_EG/arab.NumberElements/4=\u0660 +FormatData/ar_EG/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_EG/DatePatterns/3=d‏/M‏/y +FormatData/ar_EG/DateTimePatterns/0={1}، {0} +LocaleNames/ar_EG/EG=مصر +LocaleNames/ar_EG/DZ=الجزائر +LocaleNames/ar_EG/BH=البحرين +LocaleNames/ar_EG/IQ=العراق +LocaleNames/ar_EG/JO=الأردن +LocaleNames/ar_EG/KW=الكويت +LocaleNames/ar_EG/LB=لبنان +LocaleNames/ar_EG/LY=ليبيا +LocaleNames/ar_EG/MA=المغرب +LocaleNames/ar_EG/OM=عُمان +LocaleNames/ar_EG/QA=قطر +LocaleNames/ar_EG/SA=المملكة العربية السعودية +LocaleNames/ar_EG/SD=السودان +LocaleNames/ar_EG/SY=سوريا +LocaleNames/ar_EG/TN=تونس +LocaleNames/ar_EG/AE=الإمارات العربية المتحدة +LocaleNames/ar_EG/YE=اليمن +FormatData/ar_EG/arab.NumberElements/0=٫ +FormatData/ar_EG/arab.NumberElements/1=٬ +FormatData/ar_EG/arab.NumberElements/2=؛ +FormatData/ar_EG/arab.NumberElements/3=٪؜ +FormatData/ar_EG/arab.NumberElements/4=٠ FormatData/ar_EG/arab.NumberElements/5=# -FormatData/ar_EG/arab.NumberElements/6=\u061c- -FormatData/ar_EG/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_EG/arab.NumberElements/8=\u0609 -FormatData/ar_EG/arab.NumberElements/9=\u221e -FormatData/ar_EG/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_IQ/IQD=\u062f.\u0639.\u200f +FormatData/ar_EG/arab.NumberElements/6=؜- +FormatData/ar_EG/arab.NumberElements/7=اس +FormatData/ar_EG/arab.NumberElements/8=؉ +FormatData/ar_EG/arab.NumberElements/9=∞ +FormatData/ar_EG/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_IQ/IQD=د.ع.‏ FormatData/ar_IQ/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_IQ/NumberPatterns/1='\u062f.\u0639.\u200f' #,##0.###;'\u062f.\u0639.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_IQ/NumberPatterns/1='د.ع.‏' #,##0.###;'د.ع.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_IQ/arab.NumberPatterns/2=#,##0% -FormatData/ar_IQ/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_IQ/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_IQ/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_IQ/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_IQ/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_IQ/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_IQ/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_IQ/MonthAbbreviations/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_IQ/MonthAbbreviations/1=\u0634\u0628\u0627\u0637 -FormatData/ar_IQ/MonthAbbreviations/2=\u0622\u0630\u0627\u0631 -FormatData/ar_IQ/MonthAbbreviations/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_IQ/MonthAbbreviations/4=\u0623\u064a\u0627\u0631 -FormatData/ar_IQ/MonthAbbreviations/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_IQ/MonthAbbreviations/6=\u062a\u0645\u0648\u0632 -FormatData/ar_IQ/MonthAbbreviations/7=\u0622\u0628 -FormatData/ar_IQ/MonthAbbreviations/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_IQ/MonthAbbreviations/9=\u062a\u0634\u0631\u064a\u0646\u00a0\u0627\u0644\u0623\u0648\u0644 -FormatData/ar_IQ/MonthAbbreviations/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_IQ/MonthAbbreviations/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +FormatData/ar_IQ/DayNames/0=الأحد +FormatData/ar_IQ/DayNames/1=الاثنين +FormatData/ar_IQ/DayNames/2=الثلاثاء +FormatData/ar_IQ/DayNames/3=الأربعاء +FormatData/ar_IQ/DayNames/4=الخميس +FormatData/ar_IQ/DayNames/5=الجمعة +FormatData/ar_IQ/DayNames/6=السبت +FormatData/ar_IQ/MonthAbbreviations/0=كانون الثاني +FormatData/ar_IQ/MonthAbbreviations/1=شباط +FormatData/ar_IQ/MonthAbbreviations/2=آذار +FormatData/ar_IQ/MonthAbbreviations/3=نيسان +FormatData/ar_IQ/MonthAbbreviations/4=أيار +FormatData/ar_IQ/MonthAbbreviations/5=حزيران +FormatData/ar_IQ/MonthAbbreviations/6=تموز +FormatData/ar_IQ/MonthAbbreviations/7=آب +FormatData/ar_IQ/MonthAbbreviations/8=أيلول +FormatData/ar_IQ/MonthAbbreviations/9=تشرين الأول +FormatData/ar_IQ/MonthAbbreviations/10=تشرين الثاني +FormatData/ar_IQ/MonthAbbreviations/11=كانون الأول FormatData/ar_IQ/MonthAbbreviations/12= -FormatData/ar_IQ/Eras/0=\u0642.\u0645 -FormatData/ar_IQ/Eras/1=\u0645 -FormatData/ar_IQ/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_IQ/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_IQ/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_IQ/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_IQ/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_IQ/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_IQ/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_IQ/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_IQ/MonthNames/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_IQ/MonthNames/1=\u0634\u0628\u0627\u0637 -FormatData/ar_IQ/MonthNames/2=\u0622\u0630\u0627\u0631 -FormatData/ar_IQ/MonthNames/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_IQ/MonthNames/4=\u0623\u064a\u0627\u0631 -FormatData/ar_IQ/MonthNames/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_IQ/MonthNames/6=\u062a\u0645\u0648\u0632 -FormatData/ar_IQ/MonthNames/7=\u0622\u0628 -FormatData/ar_IQ/MonthNames/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_IQ/MonthNames/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_IQ/MonthNames/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_IQ/MonthNames/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +FormatData/ar_IQ/Eras/0=ق.م +FormatData/ar_IQ/Eras/1=م +FormatData/ar_IQ/DayAbbreviations/0=الأحد +FormatData/ar_IQ/DayAbbreviations/1=الاثنين +FormatData/ar_IQ/DayAbbreviations/2=الثلاثاء +FormatData/ar_IQ/DayAbbreviations/3=الأربعاء +FormatData/ar_IQ/DayAbbreviations/4=الخميس +FormatData/ar_IQ/DayAbbreviations/5=الجمعة +FormatData/ar_IQ/DayAbbreviations/6=السبت +LocaleNames/ar_IQ/ar=العربية +FormatData/ar_IQ/MonthNames/0=كانون الثاني +FormatData/ar_IQ/MonthNames/1=شباط +FormatData/ar_IQ/MonthNames/2=آذار +FormatData/ar_IQ/MonthNames/3=نيسان +FormatData/ar_IQ/MonthNames/4=أيار +FormatData/ar_IQ/MonthNames/5=حزيران +FormatData/ar_IQ/MonthNames/6=تموز +FormatData/ar_IQ/MonthNames/7=آب +FormatData/ar_IQ/MonthNames/8=أيلول +FormatData/ar_IQ/MonthNames/9=تشرين الأول +FormatData/ar_IQ/MonthNames/10=تشرين الثاني +FormatData/ar_IQ/MonthNames/11=كانون الأول FormatData/ar_IQ/MonthNames/12= -FormatData/ar_IQ/AmPmMarkers/0=\u0635 -FormatData/ar_IQ/AmPmMarkers/1=\u0645 +FormatData/ar_IQ/AmPmMarkers/0=ص +FormatData/ar_IQ/AmPmMarkers/1=م FormatData/ar_IQ/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_IQ/TimePatterns/1=h:mm:ss a z FormatData/ar_IQ/TimePatterns/2=h:mm:ss a FormatData/ar_IQ/TimePatterns/3=h:mm a -FormatData/ar_IQ/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_IQ/DatePatterns/0=EEEE، d MMMM y FormatData/ar_IQ/DatePatterns/1=d MMMM y -FormatData/ar_IQ/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_IQ/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_IQ/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_IQ/EG=\u0645\u0635\u0631 -LocaleNames/ar_IQ/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_IQ/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_IQ/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_IQ/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_IQ/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_IQ/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_IQ/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_IQ/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_IQ/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_IQ/QA=\u0642\u0637\u0631 -LocaleNames/ar_IQ/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_IQ/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_IQ/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_IQ/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_IQ/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_IQ/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_IQ/arab.NumberElements/0=\u066b -FormatData/ar_IQ/arab.NumberElements/1=\u066c -FormatData/ar_IQ/arab.NumberElements/2=\u061b -FormatData/ar_IQ/arab.NumberElements/3=\u066a\u061c -FormatData/ar_IQ/arab.NumberElements/4=\u0660 +FormatData/ar_IQ/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_IQ/DatePatterns/3=d‏/M‏/y +FormatData/ar_IQ/DateTimePatterns/0={1}، {0} +LocaleNames/ar_IQ/EG=مصر +LocaleNames/ar_IQ/DZ=الجزائر +LocaleNames/ar_IQ/BH=البحرين +LocaleNames/ar_IQ/IQ=العراق +LocaleNames/ar_IQ/JO=الأردن +LocaleNames/ar_IQ/KW=الكويت +LocaleNames/ar_IQ/LB=لبنان +LocaleNames/ar_IQ/LY=ليبيا +LocaleNames/ar_IQ/MA=المغرب +LocaleNames/ar_IQ/OM=عُمان +LocaleNames/ar_IQ/QA=قطر +LocaleNames/ar_IQ/SA=المملكة العربية السعودية +LocaleNames/ar_IQ/SD=السودان +LocaleNames/ar_IQ/SY=سوريا +LocaleNames/ar_IQ/TN=تونس +LocaleNames/ar_IQ/AE=الإمارات العربية المتحدة +LocaleNames/ar_IQ/YE=اليمن +FormatData/ar_IQ/arab.NumberElements/0=٫ +FormatData/ar_IQ/arab.NumberElements/1=٬ +FormatData/ar_IQ/arab.NumberElements/2=؛ +FormatData/ar_IQ/arab.NumberElements/3=٪؜ +FormatData/ar_IQ/arab.NumberElements/4=٠ FormatData/ar_IQ/arab.NumberElements/5=# -FormatData/ar_IQ/arab.NumberElements/6=\u061c- -FormatData/ar_IQ/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_IQ/arab.NumberElements/8=\u0609 -FormatData/ar_IQ/arab.NumberElements/9=\u221e -FormatData/ar_IQ/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 +FormatData/ar_IQ/arab.NumberElements/6=؜- +FormatData/ar_IQ/arab.NumberElements/7=اس +FormatData/ar_IQ/arab.NumberElements/8=؉ +FormatData/ar_IQ/arab.NumberElements/9=∞ +FormatData/ar_IQ/arab.NumberElements/10=ليس رقم FormatData/ar_JO/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_JO/NumberPatterns/1='\u062f.\u0623.\u200f' #,##0.###;'\u062f.\u0623.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_JO/NumberPatterns/1='د.أ.‏' #,##0.###;'د.أ.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_JO/arab.NumberPatterns/2=#,##0% -CurrencyNames/ar_JO/JOD=\u062f.\u0623.\u200f -FormatData/ar_JO/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_JO/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_JO/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_JO/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_JO/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_JO/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_JO/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_JO/MonthNames/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_JO/MonthNames/1=\u0634\u0628\u0627\u0637 -FormatData/ar_JO/MonthNames/2=\u0622\u0630\u0627\u0631 -FormatData/ar_JO/MonthNames/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_JO/MonthNames/4=\u0623\u064a\u0627\u0631 -FormatData/ar_JO/MonthNames/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_JO/MonthNames/6=\u062a\u0645\u0648\u0632 -FormatData/ar_JO/MonthNames/7=\u0622\u0628 -FormatData/ar_JO/MonthNames/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_JO/MonthNames/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_JO/MonthNames/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_JO/MonthNames/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +CurrencyNames/ar_JO/JOD=د.أ.‏ +FormatData/ar_JO/DayAbbreviations/0=الأحد +FormatData/ar_JO/DayAbbreviations/1=الاثنين +FormatData/ar_JO/DayAbbreviations/2=الثلاثاء +FormatData/ar_JO/DayAbbreviations/3=الأربعاء +FormatData/ar_JO/DayAbbreviations/4=الخميس +FormatData/ar_JO/DayAbbreviations/5=الجمعة +FormatData/ar_JO/DayAbbreviations/6=السبت +FormatData/ar_JO/MonthNames/0=كانون الثاني +FormatData/ar_JO/MonthNames/1=شباط +FormatData/ar_JO/MonthNames/2=آذار +FormatData/ar_JO/MonthNames/3=نيسان +FormatData/ar_JO/MonthNames/4=أيار +FormatData/ar_JO/MonthNames/5=حزيران +FormatData/ar_JO/MonthNames/6=تموز +FormatData/ar_JO/MonthNames/7=آب +FormatData/ar_JO/MonthNames/8=أيلول +FormatData/ar_JO/MonthNames/9=تشرين الأول +FormatData/ar_JO/MonthNames/10=تشرين الثاني +FormatData/ar_JO/MonthNames/11=كانون الأول FormatData/ar_JO/MonthNames/12= -FormatData/ar_JO/MonthAbbreviations/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_JO/MonthAbbreviations/1=\u0634\u0628\u0627\u0637 -FormatData/ar_JO/MonthAbbreviations/2=\u0622\u0630\u0627\u0631 -FormatData/ar_JO/MonthAbbreviations/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_JO/MonthAbbreviations/4=\u0623\u064a\u0627\u0631 -FormatData/ar_JO/MonthAbbreviations/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_JO/MonthAbbreviations/6=\u062a\u0645\u0648\u0632 -FormatData/ar_JO/MonthAbbreviations/7=\u0622\u0628 -FormatData/ar_JO/MonthAbbreviations/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_JO/MonthAbbreviations/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_JO/MonthAbbreviations/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_JO/MonthAbbreviations/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +FormatData/ar_JO/MonthAbbreviations/0=كانون الثاني +FormatData/ar_JO/MonthAbbreviations/1=شباط +FormatData/ar_JO/MonthAbbreviations/2=آذار +FormatData/ar_JO/MonthAbbreviations/3=نيسان +FormatData/ar_JO/MonthAbbreviations/4=أيار +FormatData/ar_JO/MonthAbbreviations/5=حزيران +FormatData/ar_JO/MonthAbbreviations/6=تموز +FormatData/ar_JO/MonthAbbreviations/7=آب +FormatData/ar_JO/MonthAbbreviations/8=أيلول +FormatData/ar_JO/MonthAbbreviations/9=تشرين الأول +FormatData/ar_JO/MonthAbbreviations/10=تشرين الثاني +FormatData/ar_JO/MonthAbbreviations/11=كانون الأول FormatData/ar_JO/MonthAbbreviations/12= -FormatData/ar_JO/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_JO/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_JO/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_JO/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_JO/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_JO/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_JO/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_JO/Eras/0=\u0642.\u0645 -FormatData/ar_JO/Eras/1=\u0645 -LocaleNames/ar_JO/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_JO/AmPmMarkers/0=\u0635 -FormatData/ar_JO/AmPmMarkers/1=\u0645 +FormatData/ar_JO/DayNames/0=الأحد +FormatData/ar_JO/DayNames/1=الاثنين +FormatData/ar_JO/DayNames/2=الثلاثاء +FormatData/ar_JO/DayNames/3=الأربعاء +FormatData/ar_JO/DayNames/4=الخميس +FormatData/ar_JO/DayNames/5=الجمعة +FormatData/ar_JO/DayNames/6=السبت +FormatData/ar_JO/Eras/0=ق.م +FormatData/ar_JO/Eras/1=م +LocaleNames/ar_JO/ar=العربية +FormatData/ar_JO/AmPmMarkers/0=ص +FormatData/ar_JO/AmPmMarkers/1=م FormatData/ar_JO/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_JO/TimePatterns/1=h:mm:ss a z FormatData/ar_JO/TimePatterns/2=h:mm:ss a FormatData/ar_JO/TimePatterns/3=h:mm a -FormatData/ar_JO/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_JO/DatePatterns/0=EEEE، d MMMM y FormatData/ar_JO/DatePatterns/1=d MMMM y -FormatData/ar_JO/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_JO/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_JO/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_JO/EG=\u0645\u0635\u0631 -LocaleNames/ar_JO/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_JO/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_JO/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_JO/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_JO/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_JO/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_JO/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_JO/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_JO/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_JO/QA=\u0642\u0637\u0631 -LocaleNames/ar_JO/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_JO/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_JO/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_JO/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_JO/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_JO/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_JO/arab.NumberElements/0=\u066b -FormatData/ar_JO/arab.NumberElements/1=\u066c -FormatData/ar_JO/arab.NumberElements/2=\u061b -FormatData/ar_JO/arab.NumberElements/3=\u066a\u061c -FormatData/ar_JO/arab.NumberElements/4=\u0660 +FormatData/ar_JO/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_JO/DatePatterns/3=d‏/M‏/y +FormatData/ar_JO/DateTimePatterns/0={1}، {0} +LocaleNames/ar_JO/EG=مصر +LocaleNames/ar_JO/DZ=الجزائر +LocaleNames/ar_JO/BH=البحرين +LocaleNames/ar_JO/IQ=العراق +LocaleNames/ar_JO/JO=الأردن +LocaleNames/ar_JO/KW=الكويت +LocaleNames/ar_JO/LB=لبنان +LocaleNames/ar_JO/LY=ليبيا +LocaleNames/ar_JO/MA=المغرب +LocaleNames/ar_JO/OM=عُمان +LocaleNames/ar_JO/QA=قطر +LocaleNames/ar_JO/SA=المملكة العربية السعودية +LocaleNames/ar_JO/SD=السودان +LocaleNames/ar_JO/SY=سوريا +LocaleNames/ar_JO/TN=تونس +LocaleNames/ar_JO/AE=الإمارات العربية المتحدة +LocaleNames/ar_JO/YE=اليمن +FormatData/ar_JO/arab.NumberElements/0=٫ +FormatData/ar_JO/arab.NumberElements/1=٬ +FormatData/ar_JO/arab.NumberElements/2=؛ +FormatData/ar_JO/arab.NumberElements/3=٪؜ +FormatData/ar_JO/arab.NumberElements/4=٠ FormatData/ar_JO/arab.NumberElements/5=# -FormatData/ar_JO/arab.NumberElements/6=\u061c- -FormatData/ar_JO/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_JO/arab.NumberElements/8=\u0609 -FormatData/ar_JO/arab.NumberElements/9=\u221e -FormatData/ar_JO/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_KW/KWD=\u062f.\u0643.\u200f +FormatData/ar_JO/arab.NumberElements/6=؜- +FormatData/ar_JO/arab.NumberElements/7=اس +FormatData/ar_JO/arab.NumberElements/8=؉ +FormatData/ar_JO/arab.NumberElements/9=∞ +FormatData/ar_JO/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_KW/KWD=د.ك.‏ FormatData/ar_KW/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_KW/NumberPatterns/1='\u062f.\u0643.\u200f' #,##0.###;'\u062f.\u0643.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_KW/NumberPatterns/1='د.ك.‏' #,##0.###;'د.ك.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_KW/arab.NumberPatterns/2=#,##0% -FormatData/ar_KW/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_KW/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_KW/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_KW/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_KW/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_KW/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_KW/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_KW/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_KW/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_KW/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_KW/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_KW/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_KW/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_KW/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_KW/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_KW/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_KW/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_KW/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_KW/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_KW/DayNames/0=الأحد +FormatData/ar_KW/DayNames/1=الاثنين +FormatData/ar_KW/DayNames/2=الثلاثاء +FormatData/ar_KW/DayNames/3=الأربعاء +FormatData/ar_KW/DayNames/4=الخميس +FormatData/ar_KW/DayNames/5=الجمعة +FormatData/ar_KW/DayNames/6=السبت +FormatData/ar_KW/MonthAbbreviations/0=يناير +FormatData/ar_KW/MonthAbbreviations/1=فبراير +FormatData/ar_KW/MonthAbbreviations/2=مارس +FormatData/ar_KW/MonthAbbreviations/3=أبريل +FormatData/ar_KW/MonthAbbreviations/4=مايو +FormatData/ar_KW/MonthAbbreviations/5=يونيو +FormatData/ar_KW/MonthAbbreviations/6=يوليو +FormatData/ar_KW/MonthAbbreviations/7=أغسطس +FormatData/ar_KW/MonthAbbreviations/8=سبتمبر +FormatData/ar_KW/MonthAbbreviations/9=أكتوبر +FormatData/ar_KW/MonthAbbreviations/10=نوفمبر +FormatData/ar_KW/MonthAbbreviations/11=ديسمبر FormatData/ar_KW/MonthAbbreviations/12= -FormatData/ar_KW/Eras/0=\u0642.\u0645 -FormatData/ar_KW/Eras/1=\u0645 -FormatData/ar_KW/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_KW/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_KW/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_KW/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_KW/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_KW/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_KW/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_KW/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_KW/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_KW/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_KW/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_KW/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_KW/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_KW/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_KW/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_KW/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_KW/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_KW/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_KW/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_KW/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_KW/Eras/0=ق.م +FormatData/ar_KW/Eras/1=م +FormatData/ar_KW/DayAbbreviations/0=الأحد +FormatData/ar_KW/DayAbbreviations/1=الاثنين +FormatData/ar_KW/DayAbbreviations/2=الثلاثاء +FormatData/ar_KW/DayAbbreviations/3=الأربعاء +FormatData/ar_KW/DayAbbreviations/4=الخميس +FormatData/ar_KW/DayAbbreviations/5=الجمعة +FormatData/ar_KW/DayAbbreviations/6=السبت +LocaleNames/ar_KW/ar=العربية +FormatData/ar_KW/MonthNames/0=يناير +FormatData/ar_KW/MonthNames/1=فبراير +FormatData/ar_KW/MonthNames/2=مارس +FormatData/ar_KW/MonthNames/3=أبريل +FormatData/ar_KW/MonthNames/4=مايو +FormatData/ar_KW/MonthNames/5=يونيو +FormatData/ar_KW/MonthNames/6=يوليو +FormatData/ar_KW/MonthNames/7=أغسطس +FormatData/ar_KW/MonthNames/8=سبتمبر +FormatData/ar_KW/MonthNames/9=أكتوبر +FormatData/ar_KW/MonthNames/10=نوفمبر +FormatData/ar_KW/MonthNames/11=ديسمبر FormatData/ar_KW/MonthNames/12= -FormatData/ar_KW/AmPmMarkers/0=\u0635 -FormatData/ar_KW/AmPmMarkers/1=\u0645 +FormatData/ar_KW/AmPmMarkers/0=ص +FormatData/ar_KW/AmPmMarkers/1=م FormatData/ar_KW/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_KW/TimePatterns/1=h:mm:ss a z FormatData/ar_KW/TimePatterns/2=h:mm:ss a FormatData/ar_KW/TimePatterns/3=h:mm a -FormatData/ar_KW/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_KW/DatePatterns/0=EEEE، d MMMM y FormatData/ar_KW/DatePatterns/1=d MMMM y -FormatData/ar_KW/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_KW/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_KW/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_KW/EG=\u0645\u0635\u0631 -LocaleNames/ar_KW/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_KW/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_KW/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_KW/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_KW/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_KW/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_KW/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_KW/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_KW/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_KW/QA=\u0642\u0637\u0631 -LocaleNames/ar_KW/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_KW/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_KW/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_KW/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_KW/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_KW/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_KW/arab.NumberElements/0=\u066b -FormatData/ar_KW/arab.NumberElements/1=\u066c -FormatData/ar_KW/arab.NumberElements/2=\u061b -FormatData/ar_KW/arab.NumberElements/3=\u066a\u061c -FormatData/ar_KW/arab.NumberElements/4=\u0660 +FormatData/ar_KW/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_KW/DatePatterns/3=d‏/M‏/y +FormatData/ar_KW/DateTimePatterns/0={1}، {0} +LocaleNames/ar_KW/EG=مصر +LocaleNames/ar_KW/DZ=الجزائر +LocaleNames/ar_KW/BH=البحرين +LocaleNames/ar_KW/IQ=العراق +LocaleNames/ar_KW/JO=الأردن +LocaleNames/ar_KW/KW=الكويت +LocaleNames/ar_KW/LB=لبنان +LocaleNames/ar_KW/LY=ليبيا +LocaleNames/ar_KW/MA=المغرب +LocaleNames/ar_KW/OM=عُمان +LocaleNames/ar_KW/QA=قطر +LocaleNames/ar_KW/SA=المملكة العربية السعودية +LocaleNames/ar_KW/SD=السودان +LocaleNames/ar_KW/SY=سوريا +LocaleNames/ar_KW/TN=تونس +LocaleNames/ar_KW/AE=الإمارات العربية المتحدة +LocaleNames/ar_KW/YE=اليمن +FormatData/ar_KW/arab.NumberElements/0=٫ +FormatData/ar_KW/arab.NumberElements/1=٬ +FormatData/ar_KW/arab.NumberElements/2=؛ +FormatData/ar_KW/arab.NumberElements/3=٪؜ +FormatData/ar_KW/arab.NumberElements/4=٠ FormatData/ar_KW/arab.NumberElements/5=# -FormatData/ar_KW/arab.NumberElements/6=\u061c- -FormatData/ar_KW/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_KW/arab.NumberElements/8=\u0609 -FormatData/ar_KW/arab.NumberElements/9=\u221e -FormatData/ar_KW/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 +FormatData/ar_KW/arab.NumberElements/6=؜- +FormatData/ar_KW/arab.NumberElements/7=اس +FormatData/ar_KW/arab.NumberElements/8=؉ +FormatData/ar_KW/arab.NumberElements/9=∞ +FormatData/ar_KW/arab.NumberElements/10=ليس رقم FormatData/ar_LB/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_LB/NumberPatterns/1='\u0644.\u0644.\u200f' #,##0.###;'\u0644.\u0644.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_LB/NumberPatterns/1='ل.ل.‏' #,##0.###;'ل.ل.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_LB/arab.NumberPatterns/2=#,##0% -CurrencyNames/ar_LB/LBP=\u0644.\u0644.\u200f -FormatData/ar_LB/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_LB/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_LB/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_LB/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_LB/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_LB/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_LB/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_LB/MonthNames/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_LB/MonthNames/1=\u0634\u0628\u0627\u0637 -FormatData/ar_LB/MonthNames/2=\u0622\u0630\u0627\u0631 -FormatData/ar_LB/MonthNames/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_LB/MonthNames/4=\u0623\u064a\u0627\u0631 -FormatData/ar_LB/MonthNames/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_LB/MonthNames/6=\u062a\u0645\u0648\u0632 -FormatData/ar_LB/MonthNames/7=\u0622\u0628 -FormatData/ar_LB/MonthNames/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_LB/MonthNames/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_LB/MonthNames/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_LB/MonthNames/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +CurrencyNames/ar_LB/LBP=ل.ل.‏ +FormatData/ar_LB/DayAbbreviations/0=الأحد +FormatData/ar_LB/DayAbbreviations/1=الاثنين +FormatData/ar_LB/DayAbbreviations/2=الثلاثاء +FormatData/ar_LB/DayAbbreviations/3=الأربعاء +FormatData/ar_LB/DayAbbreviations/4=الخميس +FormatData/ar_LB/DayAbbreviations/5=الجمعة +FormatData/ar_LB/DayAbbreviations/6=السبت +FormatData/ar_LB/MonthNames/0=كانون الثاني +FormatData/ar_LB/MonthNames/1=شباط +FormatData/ar_LB/MonthNames/2=آذار +FormatData/ar_LB/MonthNames/3=نيسان +FormatData/ar_LB/MonthNames/4=أيار +FormatData/ar_LB/MonthNames/5=حزيران +FormatData/ar_LB/MonthNames/6=تموز +FormatData/ar_LB/MonthNames/7=آب +FormatData/ar_LB/MonthNames/8=أيلول +FormatData/ar_LB/MonthNames/9=تشرين الأول +FormatData/ar_LB/MonthNames/10=تشرين الثاني +FormatData/ar_LB/MonthNames/11=كانون الأول FormatData/ar_LB/MonthNames/12= -FormatData/ar_LB/MonthAbbreviations/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_LB/MonthAbbreviations/1=\u0634\u0628\u0627\u0637 -FormatData/ar_LB/MonthAbbreviations/2=\u0622\u0630\u0627\u0631 -FormatData/ar_LB/MonthAbbreviations/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_LB/MonthAbbreviations/4=\u0623\u064a\u0627\u0631 -FormatData/ar_LB/MonthAbbreviations/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_LB/MonthAbbreviations/6=\u062a\u0645\u0648\u0632 -FormatData/ar_LB/MonthAbbreviations/7=\u0622\u0628 -FormatData/ar_LB/MonthAbbreviations/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_LB/MonthAbbreviations/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_LB/MonthAbbreviations/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_LB/MonthAbbreviations/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +FormatData/ar_LB/MonthAbbreviations/0=كانون الثاني +FormatData/ar_LB/MonthAbbreviations/1=شباط +FormatData/ar_LB/MonthAbbreviations/2=آذار +FormatData/ar_LB/MonthAbbreviations/3=نيسان +FormatData/ar_LB/MonthAbbreviations/4=أيار +FormatData/ar_LB/MonthAbbreviations/5=حزيران +FormatData/ar_LB/MonthAbbreviations/6=تموز +FormatData/ar_LB/MonthAbbreviations/7=آب +FormatData/ar_LB/MonthAbbreviations/8=أيلول +FormatData/ar_LB/MonthAbbreviations/9=تشرين الأول +FormatData/ar_LB/MonthAbbreviations/10=تشرين الثاني +FormatData/ar_LB/MonthAbbreviations/11=كانون الأول FormatData/ar_LB/MonthAbbreviations/12= -FormatData/ar_LB/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_LB/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_LB/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_LB/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_LB/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_LB/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_LB/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_LB/Eras/0=\u0642.\u0645 -FormatData/ar_LB/Eras/1=\u0645 -LocaleNames/ar_LB/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_LB/AmPmMarkers/0=\u0635 -FormatData/ar_LB/AmPmMarkers/1=\u0645 +FormatData/ar_LB/DayNames/0=الأحد +FormatData/ar_LB/DayNames/1=الاثنين +FormatData/ar_LB/DayNames/2=الثلاثاء +FormatData/ar_LB/DayNames/3=الأربعاء +FormatData/ar_LB/DayNames/4=الخميس +FormatData/ar_LB/DayNames/5=الجمعة +FormatData/ar_LB/DayNames/6=السبت +FormatData/ar_LB/Eras/0=ق.م +FormatData/ar_LB/Eras/1=م +LocaleNames/ar_LB/ar=العربية +FormatData/ar_LB/AmPmMarkers/0=ص +FormatData/ar_LB/AmPmMarkers/1=م FormatData/ar_LB/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_LB/TimePatterns/1=h:mm:ss a z FormatData/ar_LB/TimePatterns/2=h:mm:ss a FormatData/ar_LB/TimePatterns/3=h:mm a -FormatData/ar_LB/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_LB/DatePatterns/0=EEEE، d MMMM y FormatData/ar_LB/DatePatterns/1=d MMMM y -FormatData/ar_LB/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_LB/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_LB/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_LB/EG=\u0645\u0635\u0631 -LocaleNames/ar_LB/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_LB/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_LB/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_LB/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_LB/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_LB/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_LB/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_LB/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_LB/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_LB/QA=\u0642\u0637\u0631 -LocaleNames/ar_LB/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_LB/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_LB/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_LB/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_LB/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_LB/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_LB/arab.NumberElements/0=\u066b -FormatData/ar_LB/arab.NumberElements/1=\u066c -FormatData/ar_LB/arab.NumberElements/2=\u061b -FormatData/ar_LB/arab.NumberElements/3=\u066a\u061c -FormatData/ar_LB/arab.NumberElements/4=\u0660 +FormatData/ar_LB/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_LB/DatePatterns/3=d‏/M‏/y +FormatData/ar_LB/DateTimePatterns/0={1}، {0} +LocaleNames/ar_LB/EG=مصر +LocaleNames/ar_LB/DZ=الجزائر +LocaleNames/ar_LB/BH=البحرين +LocaleNames/ar_LB/IQ=العراق +LocaleNames/ar_LB/JO=الأردن +LocaleNames/ar_LB/KW=الكويت +LocaleNames/ar_LB/LB=لبنان +LocaleNames/ar_LB/LY=ليبيا +LocaleNames/ar_LB/MA=المغرب +LocaleNames/ar_LB/OM=عُمان +LocaleNames/ar_LB/QA=قطر +LocaleNames/ar_LB/SA=المملكة العربية السعودية +LocaleNames/ar_LB/SD=السودان +LocaleNames/ar_LB/SY=سوريا +LocaleNames/ar_LB/TN=تونس +LocaleNames/ar_LB/AE=الإمارات العربية المتحدة +LocaleNames/ar_LB/YE=اليمن +FormatData/ar_LB/arab.NumberElements/0=٫ +FormatData/ar_LB/arab.NumberElements/1=٬ +FormatData/ar_LB/arab.NumberElements/2=؛ +FormatData/ar_LB/arab.NumberElements/3=٪؜ +FormatData/ar_LB/arab.NumberElements/4=٠ FormatData/ar_LB/arab.NumberElements/5=# -FormatData/ar_LB/arab.NumberElements/6=\u061c- -FormatData/ar_LB/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_LB/arab.NumberElements/8=\u0609 -FormatData/ar_LB/arab.NumberElements/9=\u221e -FormatData/ar_LB/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_LY/LYD=\u062f.\u0644.\u200f +FormatData/ar_LB/arab.NumberElements/6=؜- +FormatData/ar_LB/arab.NumberElements/7=اس +FormatData/ar_LB/arab.NumberElements/8=؉ +FormatData/ar_LB/arab.NumberElements/9=∞ +FormatData/ar_LB/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_LY/LYD=د.ل.‏ FormatData/ar_LY/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_LY/NumberPatterns/1='\u062f.\u0644.\u200f' #,##0.###;'\u062f.\u0644.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_LY/NumberPatterns/1='د.ل.‏' #,##0.###;'د.ل.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_LY/arab.NumberPatterns/2=#,##0% -FormatData/ar_LY/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_LY/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_LY/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_LY/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_LY/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_LY/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_LY/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_LY/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_LY/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_LY/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_LY/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_LY/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_LY/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_LY/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_LY/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_LY/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_LY/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_LY/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_LY/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_LY/DayNames/0=الأحد +FormatData/ar_LY/DayNames/1=الاثنين +FormatData/ar_LY/DayNames/2=الثلاثاء +FormatData/ar_LY/DayNames/3=الأربعاء +FormatData/ar_LY/DayNames/4=الخميس +FormatData/ar_LY/DayNames/5=الجمعة +FormatData/ar_LY/DayNames/6=السبت +FormatData/ar_LY/MonthAbbreviations/0=يناير +FormatData/ar_LY/MonthAbbreviations/1=فبراير +FormatData/ar_LY/MonthAbbreviations/2=مارس +FormatData/ar_LY/MonthAbbreviations/3=أبريل +FormatData/ar_LY/MonthAbbreviations/4=مايو +FormatData/ar_LY/MonthAbbreviations/5=يونيو +FormatData/ar_LY/MonthAbbreviations/6=يوليو +FormatData/ar_LY/MonthAbbreviations/7=أغسطس +FormatData/ar_LY/MonthAbbreviations/8=سبتمبر +FormatData/ar_LY/MonthAbbreviations/9=أكتوبر +FormatData/ar_LY/MonthAbbreviations/10=نوفمبر +FormatData/ar_LY/MonthAbbreviations/11=ديسمبر FormatData/ar_LY/MonthAbbreviations/12= -FormatData/ar_LY/Eras/0=\u0642.\u0645 -FormatData/ar_LY/Eras/1=\u0645 -FormatData/ar_LY/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_LY/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_LY/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_LY/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_LY/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_LY/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_LY/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_LY/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_LY/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_LY/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_LY/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_LY/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_LY/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_LY/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_LY/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_LY/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_LY/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_LY/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_LY/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_LY/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_LY/Eras/0=ق.م +FormatData/ar_LY/Eras/1=م +FormatData/ar_LY/DayAbbreviations/0=الأحد +FormatData/ar_LY/DayAbbreviations/1=الاثنين +FormatData/ar_LY/DayAbbreviations/2=الثلاثاء +FormatData/ar_LY/DayAbbreviations/3=الأربعاء +FormatData/ar_LY/DayAbbreviations/4=الخميس +FormatData/ar_LY/DayAbbreviations/5=الجمعة +FormatData/ar_LY/DayAbbreviations/6=السبت +LocaleNames/ar_LY/ar=العربية +FormatData/ar_LY/MonthNames/0=يناير +FormatData/ar_LY/MonthNames/1=فبراير +FormatData/ar_LY/MonthNames/2=مارس +FormatData/ar_LY/MonthNames/3=أبريل +FormatData/ar_LY/MonthNames/4=مايو +FormatData/ar_LY/MonthNames/5=يونيو +FormatData/ar_LY/MonthNames/6=يوليو +FormatData/ar_LY/MonthNames/7=أغسطس +FormatData/ar_LY/MonthNames/8=سبتمبر +FormatData/ar_LY/MonthNames/9=أكتوبر +FormatData/ar_LY/MonthNames/10=نوفمبر +FormatData/ar_LY/MonthNames/11=ديسمبر FormatData/ar_LY/MonthNames/12= -FormatData/ar_LY/AmPmMarkers/0=\u0635 -FormatData/ar_LY/AmPmMarkers/1=\u0645 +FormatData/ar_LY/AmPmMarkers/0=ص +FormatData/ar_LY/AmPmMarkers/1=م FormatData/ar_LY/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_LY/TimePatterns/1=h:mm:ss a z FormatData/ar_LY/TimePatterns/2=h:mm:ss a FormatData/ar_LY/TimePatterns/3=h:mm a -FormatData/ar_LY/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_LY/DatePatterns/0=EEEE، d MMMM y FormatData/ar_LY/DatePatterns/1=d MMMM y -FormatData/ar_LY/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_LY/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_LY/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_LY/EG=\u0645\u0635\u0631 -LocaleNames/ar_LY/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_LY/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_LY/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_LY/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_LY/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_LY/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_LY/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_LY/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_LY/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_LY/QA=\u0642\u0637\u0631 -LocaleNames/ar_LY/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_LY/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_LY/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_LY/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_LY/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_LY/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_LY/arab.NumberElements/0=\u066b -FormatData/ar_LY/arab.NumberElements/1=\u066c -FormatData/ar_LY/arab.NumberElements/2=\u061b -FormatData/ar_LY/arab.NumberElements/3=\u066a\u061c -FormatData/ar_LY/arab.NumberElements/4=\u0660 +FormatData/ar_LY/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_LY/DatePatterns/3=d‏/M‏/y +FormatData/ar_LY/DateTimePatterns/0={1}، {0} +LocaleNames/ar_LY/EG=مصر +LocaleNames/ar_LY/DZ=الجزائر +LocaleNames/ar_LY/BH=البحرين +LocaleNames/ar_LY/IQ=العراق +LocaleNames/ar_LY/JO=الأردن +LocaleNames/ar_LY/KW=الكويت +LocaleNames/ar_LY/LB=لبنان +LocaleNames/ar_LY/LY=ليبيا +LocaleNames/ar_LY/MA=المغرب +LocaleNames/ar_LY/OM=عُمان +LocaleNames/ar_LY/QA=قطر +LocaleNames/ar_LY/SA=المملكة العربية السعودية +LocaleNames/ar_LY/SD=السودان +LocaleNames/ar_LY/SY=سوريا +LocaleNames/ar_LY/TN=تونس +LocaleNames/ar_LY/AE=الإمارات العربية المتحدة +LocaleNames/ar_LY/YE=اليمن +FormatData/ar_LY/arab.NumberElements/0=٫ +FormatData/ar_LY/arab.NumberElements/1=٬ +FormatData/ar_LY/arab.NumberElements/2=؛ +FormatData/ar_LY/arab.NumberElements/3=٪؜ +FormatData/ar_LY/arab.NumberElements/4=٠ FormatData/ar_LY/arab.NumberElements/5=# -FormatData/ar_LY/arab.NumberElements/6=\u061c- -FormatData/ar_LY/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_LY/arab.NumberElements/8=\u0609 -FormatData/ar_LY/arab.NumberElements/9=\u221e -FormatData/ar_LY/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_MA/MAD=\u062f.\u0645.\u200f +FormatData/ar_LY/arab.NumberElements/6=؜- +FormatData/ar_LY/arab.NumberElements/7=اس +FormatData/ar_LY/arab.NumberElements/8=؉ +FormatData/ar_LY/arab.NumberElements/9=∞ +FormatData/ar_LY/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_MA/MAD=د.م.‏ FormatData/ar_MA/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_MA/NumberPatterns/1='\u062f.\u0645.\u200f' #,##0.###;'\u062f.\u0645.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_MA/NumberPatterns/1='د.م.‏' #,##0.###;'د.م.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_MA/arab.NumberPatterns/2=#,##0% -FormatData/ar_MA/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_MA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_MA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_MA/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_MA/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_MA/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_MA/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_MA/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_MA/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_MA/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_MA/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_MA/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_MA/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_MA/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648\u0632 -FormatData/ar_MA/MonthAbbreviations/7=\u063a\u0634\u062a -FormatData/ar_MA/MonthAbbreviations/8=\u0634\u062a\u0646\u0628\u0631 -FormatData/ar_MA/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_MA/MonthAbbreviations/10=\u0646\u0648\u0646\u0628\u0631 -FormatData/ar_MA/MonthAbbreviations/11=\u062f\u062c\u0646\u0628\u0631 +FormatData/ar_MA/DayNames/0=الأحد +FormatData/ar_MA/DayNames/1=الاثنين +FormatData/ar_MA/DayNames/2=الثلاثاء +FormatData/ar_MA/DayNames/3=الأربعاء +FormatData/ar_MA/DayNames/4=الخميس +FormatData/ar_MA/DayNames/5=الجمعة +FormatData/ar_MA/DayNames/6=السبت +FormatData/ar_MA/MonthAbbreviations/0=يناير +FormatData/ar_MA/MonthAbbreviations/1=فبراير +FormatData/ar_MA/MonthAbbreviations/2=مارس +FormatData/ar_MA/MonthAbbreviations/3=أبريل +FormatData/ar_MA/MonthAbbreviations/4=ماي +FormatData/ar_MA/MonthAbbreviations/5=يونيو +FormatData/ar_MA/MonthAbbreviations/6=يوليوز +FormatData/ar_MA/MonthAbbreviations/7=غشت +FormatData/ar_MA/MonthAbbreviations/8=شتنبر +FormatData/ar_MA/MonthAbbreviations/9=أكتوبر +FormatData/ar_MA/MonthAbbreviations/10=نونبر +FormatData/ar_MA/MonthAbbreviations/11=دجنبر FormatData/ar_MA/MonthAbbreviations/12= -FormatData/ar_MA/Eras/0=\u0642.\u0645 -FormatData/ar_MA/Eras/1=\u0645 -FormatData/ar_MA/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_MA/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_MA/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_MA/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_MA/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_MA/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_MA/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_MA/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_MA/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_MA/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_MA/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_MA/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_MA/MonthNames/4=\u0645\u0627\u064a -FormatData/ar_MA/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_MA/MonthNames/6=\u064a\u0648\u0644\u064a\u0648\u0632 -FormatData/ar_MA/MonthNames/7=\u063a\u0634\u062a -FormatData/ar_MA/MonthNames/8=\u0634\u062a\u0646\u0628\u0631 -FormatData/ar_MA/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_MA/MonthNames/10=\u0646\u0648\u0646\u0628\u0631 -FormatData/ar_MA/MonthNames/11=\u062f\u062c\u0646\u0628\u0631 +FormatData/ar_MA/Eras/0=ق.م +FormatData/ar_MA/Eras/1=م +FormatData/ar_MA/DayAbbreviations/0=الأحد +FormatData/ar_MA/DayAbbreviations/1=الاثنين +FormatData/ar_MA/DayAbbreviations/2=الثلاثاء +FormatData/ar_MA/DayAbbreviations/3=الأربعاء +FormatData/ar_MA/DayAbbreviations/4=الخميس +FormatData/ar_MA/DayAbbreviations/5=الجمعة +FormatData/ar_MA/DayAbbreviations/6=السبت +LocaleNames/ar_MA/ar=العربية +FormatData/ar_MA/MonthNames/0=يناير +FormatData/ar_MA/MonthNames/1=فبراير +FormatData/ar_MA/MonthNames/2=مارس +FormatData/ar_MA/MonthNames/3=أبريل +FormatData/ar_MA/MonthNames/4=ماي +FormatData/ar_MA/MonthNames/5=يونيو +FormatData/ar_MA/MonthNames/6=يوليوز +FormatData/ar_MA/MonthNames/7=غشت +FormatData/ar_MA/MonthNames/8=شتنبر +FormatData/ar_MA/MonthNames/9=أكتوبر +FormatData/ar_MA/MonthNames/10=نونبر +FormatData/ar_MA/MonthNames/11=دجنبر FormatData/ar_MA/MonthNames/12= -FormatData/ar_MA/AmPmMarkers/0=\u0635 -FormatData/ar_MA/AmPmMarkers/1=\u0645 +FormatData/ar_MA/AmPmMarkers/0=ص +FormatData/ar_MA/AmPmMarkers/1=م FormatData/ar_MA/TimePatterns/0=HH:mm:ss zzzz FormatData/ar_MA/TimePatterns/1=HH:mm:ss z FormatData/ar_MA/TimePatterns/2=HH:mm:ss FormatData/ar_MA/TimePatterns/3=HH:mm -FormatData/ar_MA/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_MA/DatePatterns/0=EEEE، d MMMM y FormatData/ar_MA/DatePatterns/1=d MMMM y -FormatData/ar_MA/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_MA/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_MA/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_MA/EG=\u0645\u0635\u0631 -LocaleNames/ar_MA/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_MA/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_MA/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_MA/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_MA/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_MA/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_MA/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_MA/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_MA/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_MA/QA=\u0642\u0637\u0631 -LocaleNames/ar_MA/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_MA/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_MA/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_MA/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_MA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_MA/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_MA/arab.NumberElements/0=\u066b -FormatData/ar_MA/arab.NumberElements/1=\u066c -FormatData/ar_MA/arab.NumberElements/2=\u061b -FormatData/ar_MA/arab.NumberElements/3=\u066a\u061c -FormatData/ar_MA/arab.NumberElements/4=\u0660 +FormatData/ar_MA/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_MA/DatePatterns/3=d‏/M‏/y +FormatData/ar_MA/DateTimePatterns/0={1}، {0} +LocaleNames/ar_MA/EG=مصر +LocaleNames/ar_MA/DZ=الجزائر +LocaleNames/ar_MA/BH=البحرين +LocaleNames/ar_MA/IQ=العراق +LocaleNames/ar_MA/JO=الأردن +LocaleNames/ar_MA/KW=الكويت +LocaleNames/ar_MA/LB=لبنان +LocaleNames/ar_MA/LY=ليبيا +LocaleNames/ar_MA/MA=المغرب +LocaleNames/ar_MA/OM=عُمان +LocaleNames/ar_MA/QA=قطر +LocaleNames/ar_MA/SA=المملكة العربية السعودية +LocaleNames/ar_MA/SD=السودان +LocaleNames/ar_MA/SY=سوريا +LocaleNames/ar_MA/TN=تونس +LocaleNames/ar_MA/AE=الإمارات العربية المتحدة +LocaleNames/ar_MA/YE=اليمن +FormatData/ar_MA/arab.NumberElements/0=٫ +FormatData/ar_MA/arab.NumberElements/1=٬ +FormatData/ar_MA/arab.NumberElements/2=؛ +FormatData/ar_MA/arab.NumberElements/3=٪؜ +FormatData/ar_MA/arab.NumberElements/4=٠ FormatData/ar_MA/arab.NumberElements/5=# -FormatData/ar_MA/arab.NumberElements/6=\u061c- -FormatData/ar_MA/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_MA/arab.NumberElements/8=\u0609 -FormatData/ar_MA/arab.NumberElements/9=\u221e -FormatData/ar_MA/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_OM/OMR=\u0631.\u0639.\u200f +FormatData/ar_MA/arab.NumberElements/6=؜- +FormatData/ar_MA/arab.NumberElements/7=اس +FormatData/ar_MA/arab.NumberElements/8=؉ +FormatData/ar_MA/arab.NumberElements/9=∞ +FormatData/ar_MA/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_OM/OMR=ر.ع.‏ FormatData/ar_OM/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_OM/NumberPatterns/1='\u0631.\u0639.\u200f' #,##0.###;'\u0631.\u0639.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_OM/NumberPatterns/1='ر.ع.‏' #,##0.###;'ر.ع.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_OM/arab.NumberPatterns/2=#,##0% -FormatData/ar_OM/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_OM/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_OM/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_OM/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_OM/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_OM/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_OM/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_OM/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_OM/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_OM/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_OM/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_OM/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_OM/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_OM/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_OM/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_OM/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_OM/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_OM/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_OM/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_OM/DayNames/0=الأحد +FormatData/ar_OM/DayNames/1=الاثنين +FormatData/ar_OM/DayNames/2=الثلاثاء +FormatData/ar_OM/DayNames/3=الأربعاء +FormatData/ar_OM/DayNames/4=الخميس +FormatData/ar_OM/DayNames/5=الجمعة +FormatData/ar_OM/DayNames/6=السبت +FormatData/ar_OM/MonthAbbreviations/0=يناير +FormatData/ar_OM/MonthAbbreviations/1=فبراير +FormatData/ar_OM/MonthAbbreviations/2=مارس +FormatData/ar_OM/MonthAbbreviations/3=أبريل +FormatData/ar_OM/MonthAbbreviations/4=مايو +FormatData/ar_OM/MonthAbbreviations/5=يونيو +FormatData/ar_OM/MonthAbbreviations/6=يوليو +FormatData/ar_OM/MonthAbbreviations/7=أغسطس +FormatData/ar_OM/MonthAbbreviations/8=سبتمبر +FormatData/ar_OM/MonthAbbreviations/9=أكتوبر +FormatData/ar_OM/MonthAbbreviations/10=نوفمبر +FormatData/ar_OM/MonthAbbreviations/11=ديسمبر FormatData/ar_OM/MonthAbbreviations/12= -FormatData/ar_OM/Eras/0=\u0642.\u0645 -FormatData/ar_OM/Eras/1=\u0645 -FormatData/ar_OM/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_OM/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_OM/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_OM/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_OM/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_OM/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_OM/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_OM/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_OM/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_OM/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_OM/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_OM/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_OM/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_OM/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_OM/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_OM/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_OM/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_OM/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_OM/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_OM/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_OM/Eras/0=ق.م +FormatData/ar_OM/Eras/1=م +FormatData/ar_OM/DayAbbreviations/0=الأحد +FormatData/ar_OM/DayAbbreviations/1=الاثنين +FormatData/ar_OM/DayAbbreviations/2=الثلاثاء +FormatData/ar_OM/DayAbbreviations/3=الأربعاء +FormatData/ar_OM/DayAbbreviations/4=الخميس +FormatData/ar_OM/DayAbbreviations/5=الجمعة +FormatData/ar_OM/DayAbbreviations/6=السبت +LocaleNames/ar_OM/ar=العربية +FormatData/ar_OM/MonthNames/0=يناير +FormatData/ar_OM/MonthNames/1=فبراير +FormatData/ar_OM/MonthNames/2=مارس +FormatData/ar_OM/MonthNames/3=أبريل +FormatData/ar_OM/MonthNames/4=مايو +FormatData/ar_OM/MonthNames/5=يونيو +FormatData/ar_OM/MonthNames/6=يوليو +FormatData/ar_OM/MonthNames/7=أغسطس +FormatData/ar_OM/MonthNames/8=سبتمبر +FormatData/ar_OM/MonthNames/9=أكتوبر +FormatData/ar_OM/MonthNames/10=نوفمبر +FormatData/ar_OM/MonthNames/11=ديسمبر FormatData/ar_OM/MonthNames/12= -FormatData/ar_OM/AmPmMarkers/0=\u0635 -FormatData/ar_OM/AmPmMarkers/1=\u0645 +FormatData/ar_OM/AmPmMarkers/0=ص +FormatData/ar_OM/AmPmMarkers/1=م FormatData/ar_OM/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_OM/TimePatterns/1=h:mm:ss a z FormatData/ar_OM/TimePatterns/2=h:mm:ss a FormatData/ar_OM/TimePatterns/3=h:mm a -FormatData/ar_OM/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_OM/DatePatterns/0=EEEE، d MMMM y FormatData/ar_OM/DatePatterns/1=d MMMM y -FormatData/ar_OM/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_OM/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_OM/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_OM/EG=\u0645\u0635\u0631 -LocaleNames/ar_OM/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_OM/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_OM/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_OM/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_OM/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_OM/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_OM/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_OM/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_OM/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_OM/QA=\u0642\u0637\u0631 -LocaleNames/ar_OM/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_OM/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_OM/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_OM/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_OM/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_OM/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_OM/arab.NumberElements/0=\u066b -FormatData/ar_OM/arab.NumberElements/1=\u066c -FormatData/ar_OM/arab.NumberElements/2=\u061b -FormatData/ar_OM/arab.NumberElements/3=\u066a\u061c -FormatData/ar_OM/arab.NumberElements/4=\u0660 +FormatData/ar_OM/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_OM/DatePatterns/3=d‏/M‏/y +FormatData/ar_OM/DateTimePatterns/0={1}، {0} +LocaleNames/ar_OM/EG=مصر +LocaleNames/ar_OM/DZ=الجزائر +LocaleNames/ar_OM/BH=البحرين +LocaleNames/ar_OM/IQ=العراق +LocaleNames/ar_OM/JO=الأردن +LocaleNames/ar_OM/KW=الكويت +LocaleNames/ar_OM/LB=لبنان +LocaleNames/ar_OM/LY=ليبيا +LocaleNames/ar_OM/MA=المغرب +LocaleNames/ar_OM/OM=عُمان +LocaleNames/ar_OM/QA=قطر +LocaleNames/ar_OM/SA=المملكة العربية السعودية +LocaleNames/ar_OM/SD=السودان +LocaleNames/ar_OM/SY=سوريا +LocaleNames/ar_OM/TN=تونس +LocaleNames/ar_OM/AE=الإمارات العربية المتحدة +LocaleNames/ar_OM/YE=اليمن +FormatData/ar_OM/arab.NumberElements/0=٫ +FormatData/ar_OM/arab.NumberElements/1=٬ +FormatData/ar_OM/arab.NumberElements/2=؛ +FormatData/ar_OM/arab.NumberElements/3=٪؜ +FormatData/ar_OM/arab.NumberElements/4=٠ FormatData/ar_OM/arab.NumberElements/5=# -FormatData/ar_OM/arab.NumberElements/6=\u061c- -FormatData/ar_OM/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_OM/arab.NumberElements/8=\u0609 -FormatData/ar_OM/arab.NumberElements/9=\u221e -FormatData/ar_OM/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_QA/QAR=\u0631.\u0642.\u200f +FormatData/ar_OM/arab.NumberElements/6=؜- +FormatData/ar_OM/arab.NumberElements/7=اس +FormatData/ar_OM/arab.NumberElements/8=؉ +FormatData/ar_OM/arab.NumberElements/9=∞ +FormatData/ar_OM/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_QA/QAR=ر.ق.‏ FormatData/ar_QA/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_QA/NumberPatterns/1='\u0631.\u0642.\u200f' #,##0.###;'\u0631.\u0642.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_QA/NumberPatterns/1='ر.ق.‏' #,##0.###;'ر.ق.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_QA/arab.NumberPatterns/2=#,##0% -FormatData/ar_QA/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_QA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_QA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_QA/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_QA/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_QA/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_QA/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_QA/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_QA/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_QA/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_QA/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_QA/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_QA/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_QA/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_QA/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_QA/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_QA/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_QA/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_QA/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_QA/DayNames/0=الأحد +FormatData/ar_QA/DayNames/1=الاثنين +FormatData/ar_QA/DayNames/2=الثلاثاء +FormatData/ar_QA/DayNames/3=الأربعاء +FormatData/ar_QA/DayNames/4=الخميس +FormatData/ar_QA/DayNames/5=الجمعة +FormatData/ar_QA/DayNames/6=السبت +FormatData/ar_QA/MonthAbbreviations/0=يناير +FormatData/ar_QA/MonthAbbreviations/1=فبراير +FormatData/ar_QA/MonthAbbreviations/2=مارس +FormatData/ar_QA/MonthAbbreviations/3=أبريل +FormatData/ar_QA/MonthAbbreviations/4=مايو +FormatData/ar_QA/MonthAbbreviations/5=يونيو +FormatData/ar_QA/MonthAbbreviations/6=يوليو +FormatData/ar_QA/MonthAbbreviations/7=أغسطس +FormatData/ar_QA/MonthAbbreviations/8=سبتمبر +FormatData/ar_QA/MonthAbbreviations/9=أكتوبر +FormatData/ar_QA/MonthAbbreviations/10=نوفمبر +FormatData/ar_QA/MonthAbbreviations/11=ديسمبر FormatData/ar_QA/MonthAbbreviations/12= -FormatData/ar_QA/Eras/0=\u0642.\u0645 -FormatData/ar_QA/Eras/1=\u0645 -FormatData/ar_QA/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_QA/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_QA/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_QA/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_QA/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_QA/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_QA/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_QA/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_QA/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_QA/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_QA/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_QA/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_QA/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_QA/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_QA/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_QA/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_QA/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_QA/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_QA/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_QA/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_QA/Eras/0=ق.م +FormatData/ar_QA/Eras/1=م +FormatData/ar_QA/DayAbbreviations/0=الأحد +FormatData/ar_QA/DayAbbreviations/1=الاثنين +FormatData/ar_QA/DayAbbreviations/2=الثلاثاء +FormatData/ar_QA/DayAbbreviations/3=الأربعاء +FormatData/ar_QA/DayAbbreviations/4=الخميس +FormatData/ar_QA/DayAbbreviations/5=الجمعة +FormatData/ar_QA/DayAbbreviations/6=السبت +LocaleNames/ar_QA/ar=العربية +FormatData/ar_QA/MonthNames/0=يناير +FormatData/ar_QA/MonthNames/1=فبراير +FormatData/ar_QA/MonthNames/2=مارس +FormatData/ar_QA/MonthNames/3=أبريل +FormatData/ar_QA/MonthNames/4=مايو +FormatData/ar_QA/MonthNames/5=يونيو +FormatData/ar_QA/MonthNames/6=يوليو +FormatData/ar_QA/MonthNames/7=أغسطس +FormatData/ar_QA/MonthNames/8=سبتمبر +FormatData/ar_QA/MonthNames/9=أكتوبر +FormatData/ar_QA/MonthNames/10=نوفمبر +FormatData/ar_QA/MonthNames/11=ديسمبر FormatData/ar_QA/MonthNames/12= -FormatData/ar_QA/AmPmMarkers/0=\u0635 -FormatData/ar_QA/AmPmMarkers/1=\u0645 +FormatData/ar_QA/AmPmMarkers/0=ص +FormatData/ar_QA/AmPmMarkers/1=م FormatData/ar_QA/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_QA/TimePatterns/1=h:mm:ss a z FormatData/ar_QA/TimePatterns/2=h:mm:ss a FormatData/ar_QA/TimePatterns/3=h:mm a -FormatData/ar_QA/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_QA/DatePatterns/0=EEEE، d MMMM y FormatData/ar_QA/DatePatterns/1=d MMMM y -FormatData/ar_QA/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_QA/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_QA/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_QA/EG=\u0645\u0635\u0631 -LocaleNames/ar_QA/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_QA/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_QA/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_QA/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_QA/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_QA/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_QA/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_QA/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_QA/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_QA/QA=\u0642\u0637\u0631 -LocaleNames/ar_QA/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_QA/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_QA/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_QA/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_QA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_QA/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_QA/arab.NumberElements/0=\u066b -FormatData/ar_QA/arab.NumberElements/1=\u066c -FormatData/ar_QA/arab.NumberElements/2=\u061b -FormatData/ar_QA/arab.NumberElements/3=\u066a\u061c -FormatData/ar_QA/arab.NumberElements/4=\u0660 +FormatData/ar_QA/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_QA/DatePatterns/3=d‏/M‏/y +FormatData/ar_QA/DateTimePatterns/0={1}، {0} +LocaleNames/ar_QA/EG=مصر +LocaleNames/ar_QA/DZ=الجزائر +LocaleNames/ar_QA/BH=البحرين +LocaleNames/ar_QA/IQ=العراق +LocaleNames/ar_QA/JO=الأردن +LocaleNames/ar_QA/KW=الكويت +LocaleNames/ar_QA/LB=لبنان +LocaleNames/ar_QA/LY=ليبيا +LocaleNames/ar_QA/MA=المغرب +LocaleNames/ar_QA/OM=عُمان +LocaleNames/ar_QA/QA=قطر +LocaleNames/ar_QA/SA=المملكة العربية السعودية +LocaleNames/ar_QA/SD=السودان +LocaleNames/ar_QA/SY=سوريا +LocaleNames/ar_QA/TN=تونس +LocaleNames/ar_QA/AE=الإمارات العربية المتحدة +LocaleNames/ar_QA/YE=اليمن +FormatData/ar_QA/arab.NumberElements/0=٫ +FormatData/ar_QA/arab.NumberElements/1=٬ +FormatData/ar_QA/arab.NumberElements/2=؛ +FormatData/ar_QA/arab.NumberElements/3=٪؜ +FormatData/ar_QA/arab.NumberElements/4=٠ FormatData/ar_QA/arab.NumberElements/5=# -FormatData/ar_QA/arab.NumberElements/6=\u061c- -FormatData/ar_QA/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_QA/arab.NumberElements/8=\u0609 -FormatData/ar_QA/arab.NumberElements/9=\u221e -FormatData/ar_QA/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_SA/SAR=\u0631.\u0633.\u200f +FormatData/ar_QA/arab.NumberElements/6=؜- +FormatData/ar_QA/arab.NumberElements/7=اس +FormatData/ar_QA/arab.NumberElements/8=؉ +FormatData/ar_QA/arab.NumberElements/9=∞ +FormatData/ar_QA/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_SA/SAR=ر.س.‏ FormatData/ar_SA/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_SA/NumberPatterns/1='\u0631.\u0633.\u200f' #,##0.###;'\u0631.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_SA/NumberPatterns/1='ر.س.‏' #,##0.###;'ر.س.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_SA/arab.NumberPatterns/2=#,##0% -FormatData/ar_SA/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SA/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SA/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SA/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SA/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_SA/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_SA/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_SA/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_SA/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_SA/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_SA/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_SA/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_SA/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_SA/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_SA/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_SA/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_SA/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_SA/DayNames/0=الأحد +FormatData/ar_SA/DayNames/1=الاثنين +FormatData/ar_SA/DayNames/2=الثلاثاء +FormatData/ar_SA/DayNames/3=الأربعاء +FormatData/ar_SA/DayNames/4=الخميس +FormatData/ar_SA/DayNames/5=الجمعة +FormatData/ar_SA/DayNames/6=السبت +FormatData/ar_SA/MonthAbbreviations/0=يناير +FormatData/ar_SA/MonthAbbreviations/1=فبراير +FormatData/ar_SA/MonthAbbreviations/2=مارس +FormatData/ar_SA/MonthAbbreviations/3=أبريل +FormatData/ar_SA/MonthAbbreviations/4=مايو +FormatData/ar_SA/MonthAbbreviations/5=يونيو +FormatData/ar_SA/MonthAbbreviations/6=يوليو +FormatData/ar_SA/MonthAbbreviations/7=أغسطس +FormatData/ar_SA/MonthAbbreviations/8=سبتمبر +FormatData/ar_SA/MonthAbbreviations/9=أكتوبر +FormatData/ar_SA/MonthAbbreviations/10=نوفمبر +FormatData/ar_SA/MonthAbbreviations/11=ديسمبر FormatData/ar_SA/MonthAbbreviations/12= -FormatData/ar_SA/Eras/0=\u0642.\u0645 -FormatData/ar_SA/Eras/1=\u0645 -FormatData/ar_SA/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SA/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SA/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SA/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SA/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SA/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SA/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_SA/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_SA/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_SA/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_SA/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_SA/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_SA/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_SA/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_SA/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_SA/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_SA/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_SA/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_SA/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_SA/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_SA/Eras/0=ق.م +FormatData/ar_SA/Eras/1=م +FormatData/ar_SA/DayAbbreviations/0=الأحد +FormatData/ar_SA/DayAbbreviations/1=الاثنين +FormatData/ar_SA/DayAbbreviations/2=الثلاثاء +FormatData/ar_SA/DayAbbreviations/3=الأربعاء +FormatData/ar_SA/DayAbbreviations/4=الخميس +FormatData/ar_SA/DayAbbreviations/5=الجمعة +FormatData/ar_SA/DayAbbreviations/6=السبت +LocaleNames/ar_SA/ar=العربية +FormatData/ar_SA/MonthNames/0=يناير +FormatData/ar_SA/MonthNames/1=فبراير +FormatData/ar_SA/MonthNames/2=مارس +FormatData/ar_SA/MonthNames/3=أبريل +FormatData/ar_SA/MonthNames/4=مايو +FormatData/ar_SA/MonthNames/5=يونيو +FormatData/ar_SA/MonthNames/6=يوليو +FormatData/ar_SA/MonthNames/7=أغسطس +FormatData/ar_SA/MonthNames/8=سبتمبر +FormatData/ar_SA/MonthNames/9=أكتوبر +FormatData/ar_SA/MonthNames/10=نوفمبر +FormatData/ar_SA/MonthNames/11=ديسمبر FormatData/ar_SA/MonthNames/12= -FormatData/ar_SA/AmPmMarkers/0=\u0635 -FormatData/ar_SA/AmPmMarkers/1=\u0645 +FormatData/ar_SA/AmPmMarkers/0=ص +FormatData/ar_SA/AmPmMarkers/1=م FormatData/ar_SA/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_SA/TimePatterns/1=h:mm:ss a z FormatData/ar_SA/TimePatterns/2=h:mm:ss a FormatData/ar_SA/TimePatterns/3=h:mm a -FormatData/ar_SA/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_SA/DatePatterns/0=EEEE، d MMMM y FormatData/ar_SA/DatePatterns/1=d MMMM y -FormatData/ar_SA/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_SA/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_SA/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_SA/EG=\u0645\u0635\u0631 -LocaleNames/ar_SA/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_SA/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_SA/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_SA/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_SA/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_SA/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_SA/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_SA/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_SA/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_SA/QA=\u0642\u0637\u0631 -LocaleNames/ar_SA/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_SA/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_SA/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_SA/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_SA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_SA/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_SA/arab.NumberElements/0=\u066b -FormatData/ar_SA/arab.NumberElements/1=\u066c -FormatData/ar_SA/arab.NumberElements/2=\u061b -FormatData/ar_SA/arab.NumberElements/3=\u066a\u061c -FormatData/ar_SA/arab.NumberElements/4=\u0660 +FormatData/ar_SA/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_SA/DatePatterns/3=d‏/M‏/y +FormatData/ar_SA/DateTimePatterns/0={1}، {0} +LocaleNames/ar_SA/EG=مصر +LocaleNames/ar_SA/DZ=الجزائر +LocaleNames/ar_SA/BH=البحرين +LocaleNames/ar_SA/IQ=العراق +LocaleNames/ar_SA/JO=الأردن +LocaleNames/ar_SA/KW=الكويت +LocaleNames/ar_SA/LB=لبنان +LocaleNames/ar_SA/LY=ليبيا +LocaleNames/ar_SA/MA=المغرب +LocaleNames/ar_SA/OM=عُمان +LocaleNames/ar_SA/QA=قطر +LocaleNames/ar_SA/SA=المملكة العربية السعودية +LocaleNames/ar_SA/SD=السودان +LocaleNames/ar_SA/SY=سوريا +LocaleNames/ar_SA/TN=تونس +LocaleNames/ar_SA/AE=الإمارات العربية المتحدة +LocaleNames/ar_SA/YE=اليمن +FormatData/ar_SA/arab.NumberElements/0=٫ +FormatData/ar_SA/arab.NumberElements/1=٬ +FormatData/ar_SA/arab.NumberElements/2=؛ +FormatData/ar_SA/arab.NumberElements/3=٪؜ +FormatData/ar_SA/arab.NumberElements/4=٠ FormatData/ar_SA/arab.NumberElements/5=# -FormatData/ar_SA/arab.NumberElements/6=\u061c- -FormatData/ar_SA/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_SA/arab.NumberElements/8=\u0609 -FormatData/ar_SA/arab.NumberElements/9=\u221e -FormatData/ar_SA/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 +FormatData/ar_SA/arab.NumberElements/6=؜- +FormatData/ar_SA/arab.NumberElements/7=اس +FormatData/ar_SA/arab.NumberElements/8=؉ +FormatData/ar_SA/arab.NumberElements/9=∞ +FormatData/ar_SA/arab.NumberElements/10=ليس رقم # changed for 4945388, removed for 6531591, see bellow -# CurrencyNames/ar_SD/SDD=\u062c.\u0633.\u200f +# CurrencyNames/ar_SD/SDD=ج.س.‏ FormatData/ar_SD/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_SD/NumberPatterns/1='\u062c.\u0633.\u200f' #,##0.###;'\u062c.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_SD/NumberPatterns/1='ج.س.‏' #,##0.###;'ج.س.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_SD/arab.NumberPatterns/2=#,##0% -FormatData/ar_SD/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SD/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SD/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SD/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SD/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SD/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SD/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_SD/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_SD/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_SD/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_SD/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_SD/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_SD/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_SD/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_SD/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_SD/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_SD/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_SD/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_SD/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_SD/DayNames/0=الأحد +FormatData/ar_SD/DayNames/1=الاثنين +FormatData/ar_SD/DayNames/2=الثلاثاء +FormatData/ar_SD/DayNames/3=الأربعاء +FormatData/ar_SD/DayNames/4=الخميس +FormatData/ar_SD/DayNames/5=الجمعة +FormatData/ar_SD/DayNames/6=السبت +FormatData/ar_SD/MonthAbbreviations/0=يناير +FormatData/ar_SD/MonthAbbreviations/1=فبراير +FormatData/ar_SD/MonthAbbreviations/2=مارس +FormatData/ar_SD/MonthAbbreviations/3=أبريل +FormatData/ar_SD/MonthAbbreviations/4=مايو +FormatData/ar_SD/MonthAbbreviations/5=يونيو +FormatData/ar_SD/MonthAbbreviations/6=يوليو +FormatData/ar_SD/MonthAbbreviations/7=أغسطس +FormatData/ar_SD/MonthAbbreviations/8=سبتمبر +FormatData/ar_SD/MonthAbbreviations/9=أكتوبر +FormatData/ar_SD/MonthAbbreviations/10=نوفمبر +FormatData/ar_SD/MonthAbbreviations/11=ديسمبر FormatData/ar_SD/MonthAbbreviations/12= -FormatData/ar_SD/Eras/0=\u0642.\u0645 -FormatData/ar_SD/Eras/1=\u0645 -FormatData/ar_SD/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SD/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SD/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SD/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SD/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SD/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SD/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_SD/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_SD/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_SD/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_SD/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_SD/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_SD/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_SD/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_SD/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_SD/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_SD/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_SD/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_SD/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_SD/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_SD/Eras/0=ق.م +FormatData/ar_SD/Eras/1=م +FormatData/ar_SD/DayAbbreviations/0=الأحد +FormatData/ar_SD/DayAbbreviations/1=الاثنين +FormatData/ar_SD/DayAbbreviations/2=الثلاثاء +FormatData/ar_SD/DayAbbreviations/3=الأربعاء +FormatData/ar_SD/DayAbbreviations/4=الخميس +FormatData/ar_SD/DayAbbreviations/5=الجمعة +FormatData/ar_SD/DayAbbreviations/6=السبت +LocaleNames/ar_SD/ar=العربية +FormatData/ar_SD/MonthNames/0=يناير +FormatData/ar_SD/MonthNames/1=فبراير +FormatData/ar_SD/MonthNames/2=مارس +FormatData/ar_SD/MonthNames/3=أبريل +FormatData/ar_SD/MonthNames/4=مايو +FormatData/ar_SD/MonthNames/5=يونيو +FormatData/ar_SD/MonthNames/6=يوليو +FormatData/ar_SD/MonthNames/7=أغسطس +FormatData/ar_SD/MonthNames/8=سبتمبر +FormatData/ar_SD/MonthNames/9=أكتوبر +FormatData/ar_SD/MonthNames/10=نوفمبر +FormatData/ar_SD/MonthNames/11=ديسمبر FormatData/ar_SD/MonthNames/12= -FormatData/ar_SD/AmPmMarkers/0=\u0635 -FormatData/ar_SD/AmPmMarkers/1=\u0645 +FormatData/ar_SD/AmPmMarkers/0=ص +FormatData/ar_SD/AmPmMarkers/1=م FormatData/ar_SD/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_SD/TimePatterns/1=h:mm:ss a z FormatData/ar_SD/TimePatterns/2=h:mm:ss a FormatData/ar_SD/TimePatterns/3=h:mm a -FormatData/ar_SD/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_SD/DatePatterns/0=EEEE، d MMMM y FormatData/ar_SD/DatePatterns/1=d MMMM y -FormatData/ar_SD/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_SD/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_SD/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_SD/EG=\u0645\u0635\u0631 -LocaleNames/ar_SD/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_SD/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_SD/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_SD/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_SD/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_SD/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_SD/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_SD/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_SD/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_SD/QA=\u0642\u0637\u0631 -LocaleNames/ar_SD/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_SD/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_SD/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_SD/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_SD/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_SD/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_SD/arab.NumberElements/0=\u066b -FormatData/ar_SD/arab.NumberElements/1=\u066c -FormatData/ar_SD/arab.NumberElements/2=\u061b -FormatData/ar_SD/arab.NumberElements/3=\u066a\u061c -FormatData/ar_SD/arab.NumberElements/4=\u0660 +FormatData/ar_SD/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_SD/DatePatterns/3=d‏/M‏/y +FormatData/ar_SD/DateTimePatterns/0={1}، {0} +LocaleNames/ar_SD/EG=مصر +LocaleNames/ar_SD/DZ=الجزائر +LocaleNames/ar_SD/BH=البحرين +LocaleNames/ar_SD/IQ=العراق +LocaleNames/ar_SD/JO=الأردن +LocaleNames/ar_SD/KW=الكويت +LocaleNames/ar_SD/LB=لبنان +LocaleNames/ar_SD/LY=ليبيا +LocaleNames/ar_SD/MA=المغرب +LocaleNames/ar_SD/OM=عُمان +LocaleNames/ar_SD/QA=قطر +LocaleNames/ar_SD/SA=المملكة العربية السعودية +LocaleNames/ar_SD/SD=السودان +LocaleNames/ar_SD/SY=سوريا +LocaleNames/ar_SD/TN=تونس +LocaleNames/ar_SD/AE=الإمارات العربية المتحدة +LocaleNames/ar_SD/YE=اليمن +FormatData/ar_SD/arab.NumberElements/0=٫ +FormatData/ar_SD/arab.NumberElements/1=٬ +FormatData/ar_SD/arab.NumberElements/2=؛ +FormatData/ar_SD/arab.NumberElements/3=٪؜ +FormatData/ar_SD/arab.NumberElements/4=٠ FormatData/ar_SD/arab.NumberElements/5=# -FormatData/ar_SD/arab.NumberElements/6=\u061c- -FormatData/ar_SD/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_SD/arab.NumberElements/8=\u0609 -FormatData/ar_SD/arab.NumberElements/9=\u221e -FormatData/ar_SD/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 +FormatData/ar_SD/arab.NumberElements/6=؜- +FormatData/ar_SD/arab.NumberElements/7=اس +FormatData/ar_SD/arab.NumberElements/8=؉ +FormatData/ar_SD/arab.NumberElements/9=∞ +FormatData/ar_SD/arab.NumberElements/10=ليس رقم FormatData/ar_SY/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_SY/NumberPatterns/1='\u0644.\u0633.\u200f' #,##0.###;'\u0644.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_SY/NumberPatterns/1='ل.س.‏' #,##0.###;'ل.س.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_SY/arab.NumberPatterns/2=#,##0% -CurrencyNames/ar_SY/SYP=\u0644.\u0633.\u200f -FormatData/ar_SY/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SY/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SY/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SY/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SY/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SY/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SY/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_SY/MonthNames/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_SY/MonthNames/1=\u0634\u0628\u0627\u0637 -FormatData/ar_SY/MonthNames/2=\u0622\u0630\u0627\u0631 -FormatData/ar_SY/MonthNames/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_SY/MonthNames/4=\u0623\u064a\u0627\u0631 -FormatData/ar_SY/MonthNames/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_SY/MonthNames/6=\u062a\u0645\u0648\u0632 -FormatData/ar_SY/MonthNames/7=\u0622\u0628 -FormatData/ar_SY/MonthNames/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_SY/MonthNames/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_SY/MonthNames/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_SY/MonthNames/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +CurrencyNames/ar_SY/SYP=ل.س.‏ +FormatData/ar_SY/DayAbbreviations/0=الأحد +FormatData/ar_SY/DayAbbreviations/1=الاثنين +FormatData/ar_SY/DayAbbreviations/2=الثلاثاء +FormatData/ar_SY/DayAbbreviations/3=الأربعاء +FormatData/ar_SY/DayAbbreviations/4=الخميس +FormatData/ar_SY/DayAbbreviations/5=الجمعة +FormatData/ar_SY/DayAbbreviations/6=السبت +FormatData/ar_SY/MonthNames/0=كانون الثاني +FormatData/ar_SY/MonthNames/1=شباط +FormatData/ar_SY/MonthNames/2=آذار +FormatData/ar_SY/MonthNames/3=نيسان +FormatData/ar_SY/MonthNames/4=أيار +FormatData/ar_SY/MonthNames/5=حزيران +FormatData/ar_SY/MonthNames/6=تموز +FormatData/ar_SY/MonthNames/7=آب +FormatData/ar_SY/MonthNames/8=أيلول +FormatData/ar_SY/MonthNames/9=تشرين الأول +FormatData/ar_SY/MonthNames/10=تشرين الثاني +FormatData/ar_SY/MonthNames/11=كانون الأول FormatData/ar_SY/MonthNames/12= -FormatData/ar_SY/MonthAbbreviations/0=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_SY/MonthAbbreviations/1=\u0634\u0628\u0627\u0637 -FormatData/ar_SY/MonthAbbreviations/2=\u0622\u0630\u0627\u0631 -FormatData/ar_SY/MonthAbbreviations/3=\u0646\u064a\u0633\u0627\u0646 -FormatData/ar_SY/MonthAbbreviations/4=\u0623\u064a\u0627\u0631 -FormatData/ar_SY/MonthAbbreviations/5=\u062d\u0632\u064a\u0631\u0627\u0646 -FormatData/ar_SY/MonthAbbreviations/6=\u062a\u0645\u0648\u0632 -FormatData/ar_SY/MonthAbbreviations/7=\u0622\u0628 -FormatData/ar_SY/MonthAbbreviations/8=\u0623\u064a\u0644\u0648\u0644 -FormatData/ar_SY/MonthAbbreviations/9=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 -FormatData/ar_SY/MonthAbbreviations/10=\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a -FormatData/ar_SY/MonthAbbreviations/11=\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644 +FormatData/ar_SY/MonthAbbreviations/0=كانون الثاني +FormatData/ar_SY/MonthAbbreviations/1=شباط +FormatData/ar_SY/MonthAbbreviations/2=آذار +FormatData/ar_SY/MonthAbbreviations/3=نيسان +FormatData/ar_SY/MonthAbbreviations/4=أيار +FormatData/ar_SY/MonthAbbreviations/5=حزيران +FormatData/ar_SY/MonthAbbreviations/6=تموز +FormatData/ar_SY/MonthAbbreviations/7=آب +FormatData/ar_SY/MonthAbbreviations/8=أيلول +FormatData/ar_SY/MonthAbbreviations/9=تشرين الأول +FormatData/ar_SY/MonthAbbreviations/10=تشرين الثاني +FormatData/ar_SY/MonthAbbreviations/11=كانون الأول FormatData/ar_SY/MonthAbbreviations/12= -FormatData/ar_SY/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_SY/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_SY/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_SY/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_SY/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_SY/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_SY/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_SY/Eras/0=\u0642.\u0645 -FormatData/ar_SY/Eras/1=\u0645 -LocaleNames/ar_SY/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_SY/AmPmMarkers/0=\u0635 -FormatData/ar_SY/AmPmMarkers/1=\u0645 +FormatData/ar_SY/DayNames/0=الأحد +FormatData/ar_SY/DayNames/1=الاثنين +FormatData/ar_SY/DayNames/2=الثلاثاء +FormatData/ar_SY/DayNames/3=الأربعاء +FormatData/ar_SY/DayNames/4=الخميس +FormatData/ar_SY/DayNames/5=الجمعة +FormatData/ar_SY/DayNames/6=السبت +FormatData/ar_SY/Eras/0=ق.م +FormatData/ar_SY/Eras/1=م +LocaleNames/ar_SY/ar=العربية +FormatData/ar_SY/AmPmMarkers/0=ص +FormatData/ar_SY/AmPmMarkers/1=م FormatData/ar_SY/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_SY/TimePatterns/1=h:mm:ss a z FormatData/ar_SY/TimePatterns/2=h:mm:ss a FormatData/ar_SY/TimePatterns/3=h:mm a -FormatData/ar_SY/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_SY/DatePatterns/0=EEEE، d MMMM y FormatData/ar_SY/DatePatterns/1=d MMMM y -FormatData/ar_SY/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_SY/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_SY/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_SY/EG=\u0645\u0635\u0631 -LocaleNames/ar_SY/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_SY/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_SY/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_SY/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_SY/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_SY/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_SY/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_SY/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_SY/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_SY/QA=\u0642\u0637\u0631 -LocaleNames/ar_SY/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_SY/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_SY/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_SY/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_SY/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_SY/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_SY/arab.NumberElements/0=\u066b -FormatData/ar_SY/arab.NumberElements/1=\u066c -FormatData/ar_SY/arab.NumberElements/2=\u061b -FormatData/ar_SY/arab.NumberElements/3=\u066a\u061c -FormatData/ar_SY/arab.NumberElements/4=\u0660 +FormatData/ar_SY/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_SY/DatePatterns/3=d‏/M‏/y +FormatData/ar_SY/DateTimePatterns/0={1}، {0} +LocaleNames/ar_SY/EG=مصر +LocaleNames/ar_SY/DZ=الجزائر +LocaleNames/ar_SY/BH=البحرين +LocaleNames/ar_SY/IQ=العراق +LocaleNames/ar_SY/JO=الأردن +LocaleNames/ar_SY/KW=الكويت +LocaleNames/ar_SY/LB=لبنان +LocaleNames/ar_SY/LY=ليبيا +LocaleNames/ar_SY/MA=المغرب +LocaleNames/ar_SY/OM=عُمان +LocaleNames/ar_SY/QA=قطر +LocaleNames/ar_SY/SA=المملكة العربية السعودية +LocaleNames/ar_SY/SD=السودان +LocaleNames/ar_SY/SY=سوريا +LocaleNames/ar_SY/TN=تونس +LocaleNames/ar_SY/AE=الإمارات العربية المتحدة +LocaleNames/ar_SY/YE=اليمن +FormatData/ar_SY/arab.NumberElements/0=٫ +FormatData/ar_SY/arab.NumberElements/1=٬ +FormatData/ar_SY/arab.NumberElements/2=؛ +FormatData/ar_SY/arab.NumberElements/3=٪؜ +FormatData/ar_SY/arab.NumberElements/4=٠ FormatData/ar_SY/arab.NumberElements/5=# -FormatData/ar_SY/arab.NumberElements/6=\u061c- -FormatData/ar_SY/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_SY/arab.NumberElements/8=\u0609 -FormatData/ar_SY/arab.NumberElements/9=\u221e -FormatData/ar_SY/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_TN/TND=\u062f.\u062a.\u200f +FormatData/ar_SY/arab.NumberElements/6=؜- +FormatData/ar_SY/arab.NumberElements/7=اس +FormatData/ar_SY/arab.NumberElements/8=؉ +FormatData/ar_SY/arab.NumberElements/9=∞ +FormatData/ar_SY/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_TN/TND=د.ت.‏ FormatData/ar_TN/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_TN/NumberPatterns/1='\u062f.\u062a.\u200f' #,##0.###;'\u062f.\u062a.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_TN/NumberPatterns/1='د.ت.‏' #,##0.###;'د.ت.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_TN/arab.NumberPatterns/2=#,##0% -FormatData/ar_TN/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_TN/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_TN/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_TN/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_TN/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_TN/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_TN/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_TN/MonthAbbreviations/0=\u062c\u0627\u0646\u0641\u064a -FormatData/ar_TN/MonthAbbreviations/1=\u0641\u064a\u0641\u0631\u064a -FormatData/ar_TN/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_TN/MonthAbbreviations/3=\u0623\u0641\u0631\u064a\u0644 -FormatData/ar_TN/MonthAbbreviations/4=\u0645\u0627\u064a -FormatData/ar_TN/MonthAbbreviations/5=\u062c\u0648\u0627\u0646 -FormatData/ar_TN/MonthAbbreviations/6=\u062c\u0648\u064a\u0644\u064a\u0629 -FormatData/ar_TN/MonthAbbreviations/7=\u0623\u0648\u062a -FormatData/ar_TN/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_TN/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_TN/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_TN/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_TN/DayNames/0=الأحد +FormatData/ar_TN/DayNames/1=الاثنين +FormatData/ar_TN/DayNames/2=الثلاثاء +FormatData/ar_TN/DayNames/3=الأربعاء +FormatData/ar_TN/DayNames/4=الخميس +FormatData/ar_TN/DayNames/5=الجمعة +FormatData/ar_TN/DayNames/6=السبت +FormatData/ar_TN/MonthAbbreviations/0=جانفي +FormatData/ar_TN/MonthAbbreviations/1=فيفري +FormatData/ar_TN/MonthAbbreviations/2=مارس +FormatData/ar_TN/MonthAbbreviations/3=أفريل +FormatData/ar_TN/MonthAbbreviations/4=ماي +FormatData/ar_TN/MonthAbbreviations/5=جوان +FormatData/ar_TN/MonthAbbreviations/6=جويلية +FormatData/ar_TN/MonthAbbreviations/7=أوت +FormatData/ar_TN/MonthAbbreviations/8=سبتمبر +FormatData/ar_TN/MonthAbbreviations/9=أكتوبر +FormatData/ar_TN/MonthAbbreviations/10=نوفمبر +FormatData/ar_TN/MonthAbbreviations/11=ديسمبر FormatData/ar_TN/MonthAbbreviations/12= -FormatData/ar_TN/Eras/0=\u0642.\u0645 -FormatData/ar_TN/Eras/1=\u0645 -FormatData/ar_TN/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_TN/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_TN/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_TN/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_TN/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_TN/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_TN/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_TN/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_TN/MonthNames/0=\u062c\u0627\u0646\u0641\u064a -FormatData/ar_TN/MonthNames/1=\u0641\u064a\u0641\u0631\u064a -FormatData/ar_TN/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_TN/MonthNames/3=\u0623\u0641\u0631\u064a\u0644 -FormatData/ar_TN/MonthNames/4=\u0645\u0627\u064a -FormatData/ar_TN/MonthNames/5=\u062c\u0648\u0627\u0646 -FormatData/ar_TN/MonthNames/6=\u062c\u0648\u064a\u0644\u064a\u0629 -FormatData/ar_TN/MonthNames/7=\u0623\u0648\u062a -FormatData/ar_TN/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_TN/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_TN/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_TN/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_TN/Eras/0=ق.م +FormatData/ar_TN/Eras/1=م +FormatData/ar_TN/DayAbbreviations/0=الأحد +FormatData/ar_TN/DayAbbreviations/1=الاثنين +FormatData/ar_TN/DayAbbreviations/2=الثلاثاء +FormatData/ar_TN/DayAbbreviations/3=الأربعاء +FormatData/ar_TN/DayAbbreviations/4=الخميس +FormatData/ar_TN/DayAbbreviations/5=الجمعة +FormatData/ar_TN/DayAbbreviations/6=السبت +LocaleNames/ar_TN/ar=العربية +FormatData/ar_TN/MonthNames/0=جانفي +FormatData/ar_TN/MonthNames/1=فيفري +FormatData/ar_TN/MonthNames/2=مارس +FormatData/ar_TN/MonthNames/3=أفريل +FormatData/ar_TN/MonthNames/4=ماي +FormatData/ar_TN/MonthNames/5=جوان +FormatData/ar_TN/MonthNames/6=جويلية +FormatData/ar_TN/MonthNames/7=أوت +FormatData/ar_TN/MonthNames/8=سبتمبر +FormatData/ar_TN/MonthNames/9=أكتوبر +FormatData/ar_TN/MonthNames/10=نوفمبر +FormatData/ar_TN/MonthNames/11=ديسمبر FormatData/ar_TN/MonthNames/12= -FormatData/ar_TN/AmPmMarkers/0=\u0635 -FormatData/ar_TN/AmPmMarkers/1=\u0645 +FormatData/ar_TN/AmPmMarkers/0=ص +FormatData/ar_TN/AmPmMarkers/1=م FormatData/ar_TN/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_TN/TimePatterns/1=h:mm:ss a z FormatData/ar_TN/TimePatterns/2=h:mm:ss a FormatData/ar_TN/TimePatterns/3=h:mm a -FormatData/ar_TN/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_TN/DatePatterns/0=EEEE، d MMMM y FormatData/ar_TN/DatePatterns/1=d MMMM y -FormatData/ar_TN/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_TN/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_TN/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_TN/EG=\u0645\u0635\u0631 -LocaleNames/ar_TN/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_TN/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_TN/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_TN/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_TN/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_TN/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_TN/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_TN/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_TN/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_TN/QA=\u0642\u0637\u0631 -LocaleNames/ar_TN/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_TN/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_TN/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_TN/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_TN/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_TN/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_TN/arab.NumberElements/0=\u066b -FormatData/ar_TN/arab.NumberElements/1=\u066c -FormatData/ar_TN/arab.NumberElements/2=\u061b -FormatData/ar_TN/arab.NumberElements/3=\u066a\u061c -FormatData/ar_TN/arab.NumberElements/4=\u0660 +FormatData/ar_TN/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_TN/DatePatterns/3=d‏/M‏/y +FormatData/ar_TN/DateTimePatterns/0={1}، {0} +LocaleNames/ar_TN/EG=مصر +LocaleNames/ar_TN/DZ=الجزائر +LocaleNames/ar_TN/BH=البحرين +LocaleNames/ar_TN/IQ=العراق +LocaleNames/ar_TN/JO=الأردن +LocaleNames/ar_TN/KW=الكويت +LocaleNames/ar_TN/LB=لبنان +LocaleNames/ar_TN/LY=ليبيا +LocaleNames/ar_TN/MA=المغرب +LocaleNames/ar_TN/OM=عُمان +LocaleNames/ar_TN/QA=قطر +LocaleNames/ar_TN/SA=المملكة العربية السعودية +LocaleNames/ar_TN/SD=السودان +LocaleNames/ar_TN/SY=سوريا +LocaleNames/ar_TN/TN=تونس +LocaleNames/ar_TN/AE=الإمارات العربية المتحدة +LocaleNames/ar_TN/YE=اليمن +FormatData/ar_TN/arab.NumberElements/0=٫ +FormatData/ar_TN/arab.NumberElements/1=٬ +FormatData/ar_TN/arab.NumberElements/2=؛ +FormatData/ar_TN/arab.NumberElements/3=٪؜ +FormatData/ar_TN/arab.NumberElements/4=٠ FormatData/ar_TN/arab.NumberElements/5=# -FormatData/ar_TN/arab.NumberElements/6=\u061c- -FormatData/ar_TN/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_TN/arab.NumberElements/8=\u0609 -FormatData/ar_TN/arab.NumberElements/9=\u221e -FormatData/ar_TN/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 -CurrencyNames/ar_YE/YER=\u0631.\u064a.\u200f +FormatData/ar_TN/arab.NumberElements/6=؜- +FormatData/ar_TN/arab.NumberElements/7=اس +FormatData/ar_TN/arab.NumberElements/8=؉ +FormatData/ar_TN/arab.NumberElements/9=∞ +FormatData/ar_TN/arab.NumberElements/10=ليس رقم +CurrencyNames/ar_YE/YER=ر.ي.‏ FormatData/ar_YE/arab.NumberPatterns/0=#,##0.### -# FormatData/ar_YE/NumberPatterns/1='\u0631.\u064a.\u200f' #,##0.###;'\u0631.\u064a.\u200f' #,##0.###- # Changed; see bug 4122840 +# FormatData/ar_YE/NumberPatterns/1='ر.ي.‏' #,##0.###;'ر.ي.‏' #,##0.###- # Changed; see bug 4122840 FormatData/ar_YE/arab.NumberPatterns/2=#,##0% -FormatData/ar_YE/DayNames/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_YE/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_YE/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_YE/DayNames/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_YE/DayNames/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_YE/DayNames/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_YE/DayNames/6=\u0627\u0644\u0633\u0628\u062a -FormatData/ar_YE/MonthAbbreviations/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_YE/MonthAbbreviations/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_YE/MonthAbbreviations/2=\u0645\u0627\u0631\u0633 -FormatData/ar_YE/MonthAbbreviations/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_YE/MonthAbbreviations/4=\u0645\u0627\u064a\u0648 -FormatData/ar_YE/MonthAbbreviations/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_YE/MonthAbbreviations/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_YE/MonthAbbreviations/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_YE/MonthAbbreviations/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_YE/MonthAbbreviations/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_YE/MonthAbbreviations/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_YE/MonthAbbreviations/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_YE/DayNames/0=الأحد +FormatData/ar_YE/DayNames/1=الاثنين +FormatData/ar_YE/DayNames/2=الثلاثاء +FormatData/ar_YE/DayNames/3=الأربعاء +FormatData/ar_YE/DayNames/4=الخميس +FormatData/ar_YE/DayNames/5=الجمعة +FormatData/ar_YE/DayNames/6=السبت +FormatData/ar_YE/MonthAbbreviations/0=يناير +FormatData/ar_YE/MonthAbbreviations/1=فبراير +FormatData/ar_YE/MonthAbbreviations/2=مارس +FormatData/ar_YE/MonthAbbreviations/3=أبريل +FormatData/ar_YE/MonthAbbreviations/4=مايو +FormatData/ar_YE/MonthAbbreviations/5=يونيو +FormatData/ar_YE/MonthAbbreviations/6=يوليو +FormatData/ar_YE/MonthAbbreviations/7=أغسطس +FormatData/ar_YE/MonthAbbreviations/8=سبتمبر +FormatData/ar_YE/MonthAbbreviations/9=أكتوبر +FormatData/ar_YE/MonthAbbreviations/10=نوفمبر +FormatData/ar_YE/MonthAbbreviations/11=ديسمبر FormatData/ar_YE/MonthAbbreviations/12= -FormatData/ar_YE/Eras/0=\u0642.\u0645 -FormatData/ar_YE/Eras/1=\u0645 -FormatData/ar_YE/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f -FormatData/ar_YE/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646 -FormatData/ar_YE/DayAbbreviations/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 -FormatData/ar_YE/DayAbbreviations/3=\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621 -FormatData/ar_YE/DayAbbreviations/4=\u0627\u0644\u062e\u0645\u064a\u0633 -FormatData/ar_YE/DayAbbreviations/5=\u0627\u0644\u062c\u0645\u0639\u0629 -FormatData/ar_YE/DayAbbreviations/6=\u0627\u0644\u0633\u0628\u062a -LocaleNames/ar_YE/ar=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 -FormatData/ar_YE/MonthNames/0=\u064a\u0646\u0627\u064a\u0631 -FormatData/ar_YE/MonthNames/1=\u0641\u0628\u0631\u0627\u064a\u0631 -FormatData/ar_YE/MonthNames/2=\u0645\u0627\u0631\u0633 -FormatData/ar_YE/MonthNames/3=\u0623\u0628\u0631\u064a\u0644 -FormatData/ar_YE/MonthNames/4=\u0645\u0627\u064a\u0648 -FormatData/ar_YE/MonthNames/5=\u064a\u0648\u0646\u064a\u0648 -FormatData/ar_YE/MonthNames/6=\u064a\u0648\u0644\u064a\u0648 -FormatData/ar_YE/MonthNames/7=\u0623\u063a\u0633\u0637\u0633 -FormatData/ar_YE/MonthNames/8=\u0633\u0628\u062a\u0645\u0628\u0631 -FormatData/ar_YE/MonthNames/9=\u0623\u0643\u062a\u0648\u0628\u0631 -FormatData/ar_YE/MonthNames/10=\u0646\u0648\u0641\u0645\u0628\u0631 -FormatData/ar_YE/MonthNames/11=\u062f\u064a\u0633\u0645\u0628\u0631 +FormatData/ar_YE/Eras/0=ق.م +FormatData/ar_YE/Eras/1=م +FormatData/ar_YE/DayAbbreviations/0=الأحد +FormatData/ar_YE/DayAbbreviations/1=الاثنين +FormatData/ar_YE/DayAbbreviations/2=الثلاثاء +FormatData/ar_YE/DayAbbreviations/3=الأربعاء +FormatData/ar_YE/DayAbbreviations/4=الخميس +FormatData/ar_YE/DayAbbreviations/5=الجمعة +FormatData/ar_YE/DayAbbreviations/6=السبت +LocaleNames/ar_YE/ar=العربية +FormatData/ar_YE/MonthNames/0=يناير +FormatData/ar_YE/MonthNames/1=فبراير +FormatData/ar_YE/MonthNames/2=مارس +FormatData/ar_YE/MonthNames/3=أبريل +FormatData/ar_YE/MonthNames/4=مايو +FormatData/ar_YE/MonthNames/5=يونيو +FormatData/ar_YE/MonthNames/6=يوليو +FormatData/ar_YE/MonthNames/7=أغسطس +FormatData/ar_YE/MonthNames/8=سبتمبر +FormatData/ar_YE/MonthNames/9=أكتوبر +FormatData/ar_YE/MonthNames/10=نوفمبر +FormatData/ar_YE/MonthNames/11=ديسمبر FormatData/ar_YE/MonthNames/12= -FormatData/ar_YE/AmPmMarkers/0=\u0635 -FormatData/ar_YE/AmPmMarkers/1=\u0645 +FormatData/ar_YE/AmPmMarkers/0=ص +FormatData/ar_YE/AmPmMarkers/1=م FormatData/ar_YE/TimePatterns/0=h:mm:ss a zzzz FormatData/ar_YE/TimePatterns/1=h:mm:ss a z FormatData/ar_YE/TimePatterns/2=h:mm:ss a FormatData/ar_YE/TimePatterns/3=h:mm a -FormatData/ar_YE/DatePatterns/0=EEEE\u060c d MMMM y +FormatData/ar_YE/DatePatterns/0=EEEE، d MMMM y FormatData/ar_YE/DatePatterns/1=d MMMM y -FormatData/ar_YE/DatePatterns/2=dd\u200f/MM\u200f/y -FormatData/ar_YE/DatePatterns/3=d\u200f/M\u200f/y -FormatData/ar_YE/DateTimePatterns/0={1}\u060c {0} -LocaleNames/ar_YE/EG=\u0645\u0635\u0631 -LocaleNames/ar_YE/DZ=\u0627\u0644\u062c\u0632\u0627\u0626\u0631 -LocaleNames/ar_YE/BH=\u0627\u0644\u0628\u062d\u0631\u064a\u0646 -LocaleNames/ar_YE/IQ=\u0627\u0644\u0639\u0631\u0627\u0642 -LocaleNames/ar_YE/JO=\u0627\u0644\u0623\u0631\u062f\u0646 -LocaleNames/ar_YE/KW=\u0627\u0644\u0643\u0648\u064a\u062a -LocaleNames/ar_YE/LB=\u0644\u0628\u0646\u0627\u0646 -LocaleNames/ar_YE/LY=\u0644\u064a\u0628\u064a\u0627 -LocaleNames/ar_YE/MA=\u0627\u0644\u0645\u063a\u0631\u0628 -LocaleNames/ar_YE/OM=\u0639\u064f\u0645\u0627\u0646 -LocaleNames/ar_YE/QA=\u0642\u0637\u0631 -LocaleNames/ar_YE/SA=\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629 -LocaleNames/ar_YE/SD=\u0627\u0644\u0633\u0648\u062f\u0627\u0646 -LocaleNames/ar_YE/SY=\u0633\u0648\u0631\u064a\u0627 -LocaleNames/ar_YE/TN=\u062a\u0648\u0646\u0633 -LocaleNames/ar_YE/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629 -LocaleNames/ar_YE/YE=\u0627\u0644\u064a\u0645\u0646 -FormatData/ar_YE/arab.NumberElements/0=\u066b -FormatData/ar_YE/arab.NumberElements/1=\u066c -FormatData/ar_YE/arab.NumberElements/2=\u061b -FormatData/ar_YE/arab.NumberElements/3=\u066a\u061c -FormatData/ar_YE/arab.NumberElements/4=\u0660 +FormatData/ar_YE/DatePatterns/2=dd‏/MM‏/y +FormatData/ar_YE/DatePatterns/3=d‏/M‏/y +FormatData/ar_YE/DateTimePatterns/0={1}، {0} +LocaleNames/ar_YE/EG=مصر +LocaleNames/ar_YE/DZ=الجزائر +LocaleNames/ar_YE/BH=البحرين +LocaleNames/ar_YE/IQ=العراق +LocaleNames/ar_YE/JO=الأردن +LocaleNames/ar_YE/KW=الكويت +LocaleNames/ar_YE/LB=لبنان +LocaleNames/ar_YE/LY=ليبيا +LocaleNames/ar_YE/MA=المغرب +LocaleNames/ar_YE/OM=عُمان +LocaleNames/ar_YE/QA=قطر +LocaleNames/ar_YE/SA=المملكة العربية السعودية +LocaleNames/ar_YE/SD=السودان +LocaleNames/ar_YE/SY=سوريا +LocaleNames/ar_YE/TN=تونس +LocaleNames/ar_YE/AE=الإمارات العربية المتحدة +LocaleNames/ar_YE/YE=اليمن +FormatData/ar_YE/arab.NumberElements/0=٫ +FormatData/ar_YE/arab.NumberElements/1=٬ +FormatData/ar_YE/arab.NumberElements/2=؛ +FormatData/ar_YE/arab.NumberElements/3=٪؜ +FormatData/ar_YE/arab.NumberElements/4=٠ FormatData/ar_YE/arab.NumberElements/5=# -FormatData/ar_YE/arab.NumberElements/6=\u061c- -FormatData/ar_YE/arab.NumberElements/7=\u0627\u0633 -FormatData/ar_YE/arab.NumberElements/8=\u0609 -FormatData/ar_YE/arab.NumberElements/9=\u221e -FormatData/ar_YE/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645 +FormatData/ar_YE/arab.NumberElements/6=؜- +FormatData/ar_YE/arab.NumberElements/7=اس +FormatData/ar_YE/arab.NumberElements/8=؉ +FormatData/ar_YE/arab.NumberElements/9=∞ +FormatData/ar_YE/arab.NumberElements/10=ليس رقم # bug #4113654 (this is obviously not an exhaustive test; I'm trying it here for a single # inheritance chain only. This bug fix also gets tested fairly well by the tests for all # the other bugs as given above) FormatData//latn.NumberPatterns/0=#,##0.### -# FormatData//NumberPatterns/1=\u00a4 #,##0.00;-\u00a4 #,##0.00 # Changed; see bug 4122840 +# FormatData//NumberPatterns/1=¤ #,##0.00;-¤ #,##0.00 # Changed; see bug 4122840 FormatData//latn.NumberPatterns/2=#,##0% FormatData/fr/latn.NumberPatterns/0=#,##0.### -# FormatData/fr/NumberPatterns/1=\u00a4 #,##0.00;-\u00a4 #,##0.00 # Changed; see bug 4122840 +# FormatData/fr/NumberPatterns/1=¤ #,##0.00;-¤ #,##0.00 # Changed; see bug 4122840 # FormatData/fr/NumberPatterns/2=#,##0% # changed, see bug 6547501 CurrencyNames/fr_FR/FRF=F -CurrencyNames/fr_FR/EUR=\u20ac +CurrencyNames/fr_FR/EUR=€ FormatData/fr_FR/latn.NumberPatterns/0=#,##0.### # FormatData/fr_FR/NumberPatterns/1=#,##0.00 F;-#,##0.00 F # Changed; see bug 4122840 # FormatData/fr_FR/NumberPatterns/2=#,##0% # changed; see bug 6547501 @@ -2207,19 +2207,19 @@ FormatData/fr_FR/DayNames/5=vendredi FormatData/fr_FR/DayNames/6=samedi FormatData/fr_FR/MonthNames/0=janvier -FormatData/fr_FR/MonthNames/1=f\u00e9vrier +FormatData/fr_FR/MonthNames/1=février FormatData/fr_FR/MonthNames/2=mars FormatData/fr_FR/MonthNames/3=avril FormatData/fr_FR/MonthNames/4=mai FormatData/fr_FR/MonthNames/5=juin FormatData/fr_FR/MonthNames/6=juillet -FormatData/fr_FR/MonthNames/7=ao\u00fbt +FormatData/fr_FR/MonthNames/7=août FormatData/fr_FR/MonthNames/8=septembre FormatData/fr_FR/MonthNames/9=octobre FormatData/fr_FR/MonthNames/10=novembre -FormatData/fr_FR/MonthNames/11=d\u00e9cembre +FormatData/fr_FR/MonthNames/11=décembre FormatData/fr_FR/MonthNames/12= -LocaleNames/fr_FR/fr=fran\u00e7ais +LocaleNames/fr_FR/fr=français LocaleNames/fr_FR/en=anglais LocaleNames/fr_FR/de=allemand LocaleNames/fr_FR/da=danois @@ -2229,10 +2229,10 @@ LocaleNames/fr_FR/it=italien LocaleNames/fr_FR/ja=japonais #bug 4965260 -LocaleNames/fr_FR/nl=n\u00e9erlandais -LocaleNames/fr_FR/no=norv\u00e9gien +LocaleNames/fr_FR/nl=néerlandais +LocaleNames/fr_FR/no=norvégien LocaleNames/fr_FR/pt=portugais -LocaleNames/fr_FR/sv=su\u00e9dois +LocaleNames/fr_FR/sv=suédois LocaleNames/fr_FR/tr=turc FormatData/fr_FR/TimePatterns/0=HH:mm:ss zzzz FormatData/fr_FR/TimePatterns/1=HH:mm:ss z @@ -2244,24 +2244,24 @@ FormatData/fr_FR/DatePatterns/3=dd/MM/y FormatData/fr_FR/DateTimePatterns/0={1}, {0} FormatData/fr_FR/latn.NumberElements/0=, -FormatData/fr_FR/latn.NumberElements/1=\u202f +FormatData/fr_FR/latn.NumberElements/1=  FormatData/fr_FR/latn.NumberElements/2=; FormatData/fr_FR/latn.NumberElements/3=% FormatData/fr_FR/latn.NumberElements/4=0 FormatData/fr_FR/latn.NumberElements/5=# FormatData/fr_FR/latn.NumberElements/6=- FormatData/fr_FR/latn.NumberElements/7=E -FormatData/fr_FR/latn.NumberElements/8=\u2030 -FormatData/fr_FR/latn.NumberElements/9=\u221e +FormatData/fr_FR/latn.NumberElements/8=‰ +FormatData/fr_FR/latn.NumberElements/9=∞ FormatData/fr_FR/latn.NumberElements/10=NaN FormatData/fr_FR/Eras/0=av. J.-C. FormatData/fr_FR/Eras/1=ap. J.-C. LocaleNames/fr_FR/FR=France -LocaleNames/fr_FR/US=\u00c9tats-Unis +LocaleNames/fr_FR/US=États-Unis LocaleNames/fr_FR/DK=Danemark LocaleNames/fr_FR/DE=Allemagne LocaleNames/fr_FR/AT=Autriche -LocaleNames/fr_FR/GR=Gr\u00e8ce +LocaleNames/fr_FR/GR=Grèce LocaleNames/fr_FR/ES=Espagne LocaleNames/fr_FR/FI=Finlande LocaleNames/fr_FR/IT=Italie @@ -2270,9 +2270,9 @@ LocaleNames/fr_FR/CA=Canada LocaleNames/fr_FR/JP=Japon LocaleNames/fr_FR/NL=Pays-Bas -LocaleNames/fr_FR/NO=Norv\u00e8ge +LocaleNames/fr_FR/NO=Norvège LocaleNames/fr_FR/PT=Portugal -LocaleNames/fr_FR/SE=Su\u00e8de +LocaleNames/fr_FR/SE=Suède LocaleNames/fr_FR/TR=Turquie FormatData/fr_FR/DayAbbreviations/0=dim. FormatData/fr_FR/DayAbbreviations/1=lun. @@ -2282,132 +2282,132 @@ FormatData/fr_FR/DayAbbreviations/5=ven. FormatData/fr_FR/DayAbbreviations/6=sam. FormatData/fr_FR/MonthAbbreviations/0=janv. -FormatData/fr_FR/MonthAbbreviations/1=f\u00e9vr. +FormatData/fr_FR/MonthAbbreviations/1=févr. FormatData/fr_FR/MonthAbbreviations/2=mars FormatData/fr_FR/MonthAbbreviations/3=avr. FormatData/fr_FR/MonthAbbreviations/4=mai FormatData/fr_FR/MonthAbbreviations/5=juin FormatData/fr_FR/MonthAbbreviations/6=juil. -FormatData/fr_FR/MonthAbbreviations/7=ao\u00fbt +FormatData/fr_FR/MonthAbbreviations/7=août FormatData/fr_FR/MonthAbbreviations/8=sept. FormatData/fr_FR/MonthAbbreviations/9=oct. FormatData/fr_FR/MonthAbbreviations/10=nov. -FormatData/fr_FR/MonthAbbreviations/11=d\u00e9c. +FormatData/fr_FR/MonthAbbreviations/11=déc. FormatData/fr_FR/MonthAbbreviations/12= FormatData/fr_FR/AmPmMarkers/0=AM FormatData/fr_FR/AmPmMarkers/1=PM # bug #4117054 -FormatData/ja_JP/AmPmMarkers/0=\u5348\u524d -FormatData/ja_JP/AmPmMarkers/1=\u5348\u5f8c +FormatData/ja_JP/AmPmMarkers/0=午前 +FormatData/ja_JP/AmPmMarkers/1=午後 # bug #4122840, 4290801 -FormatData/ar_AE/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_BH/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_DZ/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_EG/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_IQ/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_JO/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_KW/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_LB/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_LY/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_MA/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_OM/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_QA/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_SA/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_SD/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_SY/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_TN/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/ar_YE/arab.NumberPatterns/1=\u200f#,##0.00\u00a0\u00a4 -FormatData/en_AU/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/en_NZ/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/en_ZA/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_AR/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00 -FormatData/es_BO/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_CL/latn.NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00 -FormatData/es_CO/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00 -FormatData/es_CR/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_DO/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_EC/latn.NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00 -FormatData/es_GT/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_HN/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_MX/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_NI/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_PA/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_PE/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00 -FormatData/es_PR/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_PY/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00;\u00a4\u00a0-#,##0.00 -FormatData/es_SV/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_UY/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00 -FormatData/es_VE/latn.NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00 -FormatData/fr_FR/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 -FormatData/it_IT/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 -#FormatData/ja_JP/NumberPatterns/1=\u00a4#,##0.00 #see bug 4175306 -FormatData/ko_KR/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/pl_PL/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 -FormatData/pt_BR/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00 +FormatData/ar_AE/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_BH/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_DZ/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_EG/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_IQ/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_JO/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_KW/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_LB/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_LY/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_MA/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_OM/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_QA/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_SA/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_SD/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_SY/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_TN/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/ar_YE/arab.NumberPatterns/1=‏#,##0.00 ¤ +FormatData/en_AU/latn.NumberPatterns/1=¤#,##0.00 +FormatData/en_NZ/latn.NumberPatterns/1=¤#,##0.00 +FormatData/en_ZA/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_AR/latn.NumberPatterns/1=¤ #,##0.00 +FormatData/es_BO/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_CL/latn.NumberPatterns/1=¤#,##0.00;¤-#,##0.00 +FormatData/es_CO/latn.NumberPatterns/1=¤ #,##0.00 +FormatData/es_CR/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_DO/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_EC/latn.NumberPatterns/1=¤#,##0.00;¤-#,##0.00 +FormatData/es_GT/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_HN/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_MX/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_NI/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_PA/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_PE/latn.NumberPatterns/1=¤ #,##0.00 +FormatData/es_PR/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_PY/latn.NumberPatterns/1=¤ #,##0.00;¤ -#,##0.00 +FormatData/es_SV/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_UY/latn.NumberPatterns/1=¤ #,##0.00 +FormatData/es_VE/latn.NumberPatterns/1=¤#,##0.00;¤-#,##0.00 +FormatData/fr_FR/latn.NumberPatterns/1=#,##0.00 ¤ +FormatData/it_IT/latn.NumberPatterns/1=#,##0.00 ¤ +#FormatData/ja_JP/NumberPatterns/1=¤#,##0.00 #see bug 4175306 +FormatData/ko_KR/latn.NumberPatterns/1=¤#,##0.00 +FormatData/pl_PL/latn.NumberPatterns/1=#,##0.00 ¤ +FormatData/pt_BR/latn.NumberPatterns/1=¤ #,##0.00 #Changed; see 4936845 -FormatData/ru_RU/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 -FormatData/uk_UA/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 +FormatData/ru_RU/latn.NumberPatterns/1=#,##0.00 ¤ +FormatData/uk_UA/latn.NumberPatterns/1=#,##0.00 ¤ # bug #4139860 FormatData/cs/DatePatterns/0=EEEE d. MMMM y FormatData/cs/DatePatterns/1=d. MMMM y FormatData/cs/DatePatterns/2=d. M. y FormatData/cs/DatePatterns/3=dd.MM.yy -FormatData/cs/latn.NumberElements/1=\u00a0 +FormatData/cs/latn.NumberElements/1=  FormatData/cs_CZ/latn.NumberPatterns/0=#,##0.### -FormatData/cs_CZ/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 -FormatData/cs_CZ/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/cs_CZ/latn.NumberPatterns/1=#,##0.00 ¤ +FormatData/cs_CZ/latn.NumberPatterns/2=#,##0 % #bug #4135752 -FormatData/th_TH/latn.NumberPatterns/1=\u00a4#,##0.00 -CurrencyNames/th_TH/THB=\u0e3f +FormatData/th_TH/latn.NumberPatterns/1=¤#,##0.00 +CurrencyNames/th_TH/THB=฿ #bug #4153698 # TimeZoneNames/zh_HK/zoneStrings/0/1=Hong Kong Standard Time # changed, see bug 4261506 # TimeZoneNames/zh_HK/zoneStrings/0/2=HKST # changed, see bug 4261506 -LocaleNames/zh/HK=\u4e2d\u56fd\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a -FormatData/zh_HK/MonthNames/0=1\u6708 -FormatData/zh_HK/MonthNames/1=2\u6708 -FormatData/zh_HK/MonthNames/2=3\u6708 -FormatData/zh_HK/MonthNames/3=4\u6708 -FormatData/zh_HK/MonthAbbreviations/0=1\u6708 -FormatData/zh_HK/MonthAbbreviations/1=2\u6708 -FormatData/zh_HK/MonthAbbreviations/2=3\u6708 -FormatData/zh_HK/MonthAbbreviations/3=4\u6708 -FormatData/zh_HK/DayNames/0=\u661f\u671f\u65e5 -FormatData/zh_HK/DayNames/1=\u661f\u671f\u4e00 -FormatData/zh_HK/DayNames/2=\u661f\u671f\u4e8c -FormatData/zh_HK/DayAbbreviations/0=\u9031\u65e5 -FormatData/zh_HK/DayAbbreviations/1=\u9031\u4e00 -FormatData/zh_HK/DayAbbreviations/2=\u9031\u4e8c -FormatData/zh_HK/latn.NumberPatterns/1=\u00a4#,##0.00 +LocaleNames/zh/HK=中国香港特别行政区 +FormatData/zh_HK/MonthNames/0=1月 +FormatData/zh_HK/MonthNames/1=2月 +FormatData/zh_HK/MonthNames/2=3月 +FormatData/zh_HK/MonthNames/3=4月 +FormatData/zh_HK/MonthAbbreviations/0=1月 +FormatData/zh_HK/MonthAbbreviations/1=2月 +FormatData/zh_HK/MonthAbbreviations/2=3月 +FormatData/zh_HK/MonthAbbreviations/3=4月 +FormatData/zh_HK/DayNames/0=星期日 +FormatData/zh_HK/DayNames/1=星期一 +FormatData/zh_HK/DayNames/2=星期二 +FormatData/zh_HK/DayAbbreviations/0=週日 +FormatData/zh_HK/DayAbbreviations/1=週一 +FormatData/zh_HK/DayAbbreviations/2=週二 +FormatData/zh_HK/latn.NumberPatterns/1=¤#,##0.00 CurrencyNames/zh_HK/HKD=HK$ FormatData/zh_HK/TimePatterns/0=ah:mm:ss [zzzz] FormatData/zh_HK/TimePatterns/1=ah:mm:ss [z] FormatData/zh_HK/TimePatterns/2=ah:mm:ss FormatData/zh_HK/TimePatterns/3=ah:mm -FormatData/zh_HK/DatePatterns/0=y\u5e74M\u6708d\u65e5EEEE -FormatData/zh_HK/DatePatterns/1=y\u5e74M\u6708d\u65e5 -FormatData/zh_HK/DatePatterns/2=y\u5e74M\u6708d\u65e5 +FormatData/zh_HK/DatePatterns/0=y年M月d日EEEE +FormatData/zh_HK/DatePatterns/1=y年M月d日 +FormatData/zh_HK/DatePatterns/2=y年M月d日 FormatData/zh_HK/DatePatterns/3=d/M/y FormatData/zh_HK/DateTimePatterns/0={1} {0} #bug #4149569 -LocaleNames/tr/TR=T\u00fcrkiye +LocaleNames/tr/TR=Türkiye #bug 4175306 -FormatData/es_ES/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 -FormatData/ja_JP/latn.NumberPatterns/1=\u00a4#,##0.00 +FormatData/es_ES/latn.NumberPatterns/1=#,##0.00 ¤ +FormatData/ja_JP/latn.NumberPatterns/1=¤#,##0.00 #bug #4215747 - commented out by mfang due to 4900884 -#FormatData/ko/TimePatterns/0=a h'\uc2dc' m'\ubd84' s'\ucd08' z -#FormatData/ko/TimePatterns/1=a h'\uc2dc' m'\ubd84' s'\ucd08' +#FormatData/ko/TimePatterns/0=a h'시' m'분' s'초' z +#FormatData/ko/TimePatterns/1=a h'시' m'분' s'초' #bug 4900884 -FormatData/ko/TimePatterns/0=a h\uc2dc m\ubd84 s\ucd08 zzzz -FormatData/ko/TimePatterns/1=a h\uc2dc m\ubd84 s\ucd08 z +FormatData/ko/TimePatterns/0=a h시 m분 s초 zzzz +FormatData/ko/TimePatterns/1=a h시 m분 s초 z FormatData/ko/TimePatterns/2=a h:mm:ss FormatData/ko/TimePatterns/3=a h:mm @@ -2415,112 +2415,112 @@ LocaleNames/es/SV=El Salvador #bug nobugid, 4290801, 4942982 -CurrencyNames/ru_RU/RUB=\u20bd +CurrencyNames/ru_RU/RUB=₽ #bug 4826794 -LocaleNames/ru_RU/MM=\u041c\u044c\u044f\u043d\u043c\u0430 (\u0411\u0438\u0440\u043c\u0430) +LocaleNames/ru_RU/MM=Мьянма (Бирма) #bug 4945388 CurrencyNames/be_BY/BYR=BYR -CurrencyNames/bg_BG/BGN=\u043b\u0432. +CurrencyNames/bg_BG/BGN=лв. #bug 4794068 FormatData/ca_ES/latn.NumberPatterns/0=#,##0.### #bug 5032580 -FormatData/sk/DayNames/0=nede\u013ea +FormatData/sk/DayNames/0=nedeľa FormatData/sk/DayAbbreviations/5=pi #bug 5074431 -FormatData/bg/DayNames/4=\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a +FormatData/bg/DayNames/4=четвъртък #bug 2121133 -FormatData/sv/latn.NumberElements/1=\u00a0 +FormatData/sv/latn.NumberElements/1=  #bug 6208712 -LocaleNames/zh/tw=\u5951\u7ef4\u8bed +LocaleNames/zh/tw=契维语 #bug 6277696 #zh_SG, id, id_ID, en_MT, mt_MT, en_PH, el, el_CY, ms, ms_MY #zh_SG -FormatData/zh_SG/DayAbbreviations/0=\u5468\u65e5 -FormatData/zh_SG/DayAbbreviations/1=\u5468\u4e00 -FormatData/zh_SG/DayAbbreviations/2=\u5468\u4e8c -FormatData/zh_SG/DayAbbreviations/3=\u5468\u4e09 -FormatData/zh_SG/DayAbbreviations/4=\u5468\u56db -FormatData/zh_SG/DayAbbreviations/5=\u5468\u4e94 -FormatData/zh_SG/DayAbbreviations/6=\u5468\u516d +FormatData/zh_SG/DayAbbreviations/0=周日 +FormatData/zh_SG/DayAbbreviations/1=周一 +FormatData/zh_SG/DayAbbreviations/2=周二 +FormatData/zh_SG/DayAbbreviations/3=周三 +FormatData/zh_SG/DayAbbreviations/4=周四 +FormatData/zh_SG/DayAbbreviations/5=周五 +FormatData/zh_SG/DayAbbreviations/6=周六 FormatData/zh_SG/latn.NumberPatterns/0=#,##0.### -FormatData/zh_SG/latn.NumberPatterns/1=\u00a4#,##0.00 +FormatData/zh_SG/latn.NumberPatterns/1=¤#,##0.00 FormatData/zh_SG/latn.NumberPatterns/2=#,##0% CurrencyNames/zh_SG/SGD=$ FormatData/zh_SG/TimePatterns/0=zzzz ah:mm:ss FormatData/zh_SG/TimePatterns/1=z ah:mm:ss FormatData/zh_SG/TimePatterns/2=ah:mm:ss FormatData/zh_SG/TimePatterns/3=ah:mm -FormatData/zh_SG/DatePatterns/0=y\u5e74M\u6708d\u65e5EEEE -FormatData/zh_SG/DatePatterns/1=y\u5e74M\u6708d\u65e5 -FormatData/zh_SG/DatePatterns/2=y\u5e74M\u6708d\u65e5 +FormatData/zh_SG/DatePatterns/0=y年M月d日EEEE +FormatData/zh_SG/DatePatterns/1=y年M月d日 +FormatData/zh_SG/DatePatterns/2=y年M月d日 FormatData/zh_SG/DatePatterns/3=dd/MM/yy FormatData/zh_SG/DateTimePatterns/0={1} {0} -LocaleNames/zh_SG/ae=\u963f\u7ef4\u65af\u5854\u8bed -LocaleNames/zh_SG/ak=\u963f\u80af\u8bed -LocaleNames/zh_SG/cr=\u514b\u91cc\u8bed -LocaleNames/zh_SG/cu=\u6559\u4f1a\u65af\u62c9\u592b\u8bed -LocaleNames/zh_SG/ff=\u5bcc\u62c9\u8bed -LocaleNames/zh_SG/gv=\u9a6c\u6069\u8bed -LocaleNames/zh_SG/ig=\u4f0a\u535a\u8bed -LocaleNames/zh_SG/ii=\u56db\u5ddd\u5f5d\u8bed -LocaleNames/zh_SG/ko=\u97e9\u8bed -LocaleNames/zh_SG/kw=\u5eb7\u6c83\u5c14\u8bed -LocaleNames/zh_SG/lg=\u5362\u5e72\u8fbe\u8bed -LocaleNames/zh_SG/li=\u6797\u5821\u8bed -LocaleNames/zh_SG/lu=\u9c81\u5df4\u52a0\u4e39\u52a0\u8bed -LocaleNames/zh_SG/nd=\u5317\u6069\u5fb7\u8d1d\u52d2\u8bed -LocaleNames/zh_SG/nr=\u5357\u6069\u5fb7\u8d1d\u52d2\u8bed -LocaleNames/zh_SG/sc=\u8428\u4e01\u8bed -LocaleNames/zh_SG/ty=\u5854\u5e0c\u63d0\u8bed -LocaleNames/zh_SG/AS=\u7f8e\u5c5e\u8428\u6469\u4e9a -LocaleNames/zh_SG/AU=\u6fb3\u5927\u5229\u4e9a -LocaleNames/zh_SG/BD=\u5b5f\u52a0\u62c9\u56fd -LocaleNames/zh_SG/BV=\u5e03\u97e6\u5c9b -LocaleNames/zh_SG/BZ=\u4f2f\u5229\u5179 -LocaleNames/zh_SG/CZ=\u6377\u514b -LocaleNames/zh_SG/ER=\u5384\u7acb\u7279\u91cc\u4e9a -LocaleNames/zh_SG/FK=\u798f\u514b\u5170\u7fa4\u5c9b -LocaleNames/zh_SG/FM=\u5bc6\u514b\u7f57\u5c3c\u897f\u4e9a -LocaleNames/zh_SG/GS=\u5357\u4e54\u6cbb\u4e9a\u548c\u5357\u6851\u5a01\u5947\u7fa4\u5c9b -LocaleNames/zh_SG/GW=\u51e0\u5185\u4e9a\u6bd4\u7ecd -LocaleNames/zh_SG/HK=\u4e2d\u56fd\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a -LocaleNames/zh_SG/HM=\u8d6b\u5fb7\u5c9b\u548c\u9ea6\u514b\u5510\u7eb3\u7fa4\u5c9b -LocaleNames/zh_SG/ID=\u5370\u5ea6\u5c3c\u897f\u4e9a -LocaleNames/zh_SG/KR=\u97e9\u56fd -LocaleNames/zh_SG/LA=\u8001\u631d -LocaleNames/zh_SG/MK=\u5317\u9a6c\u5176\u987f -LocaleNames/zh_SG/MO=\u4e2d\u56fd\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a -LocaleNames/zh_SG/MP=\u5317\u9a6c\u91cc\u4e9a\u7eb3\u7fa4\u5c9b -LocaleNames/zh_SG/NU=\u7ebd\u57c3 -LocaleNames/zh_SG/NZ=\u65b0\u897f\u5170 -LocaleNames/zh_SG/PF=\u6cd5\u5c5e\u6ce2\u5229\u5c3c\u897f\u4e9a -LocaleNames/zh_SG/PM=\u5723\u76ae\u57c3\u5c14\u548c\u5bc6\u514b\u9686\u7fa4\u5c9b -LocaleNames/zh_SG/PN=\u76ae\u7279\u51ef\u6069\u7fa4\u5c9b -LocaleNames/zh_SG/PR=\u6ce2\u591a\u9ece\u5404 -LocaleNames/zh_SG/PS=\u5df4\u52d2\u65af\u5766\u9886\u571f -LocaleNames/zh_SG/RE=\u7559\u5c3c\u6c6a -LocaleNames/zh_SG/SA=\u6c99\u7279\u963f\u62c9\u4f2f -LocaleNames/zh_SG/SH=\u5723\u8d6b\u52d2\u62ff -LocaleNames/zh_SG/SJ=\u65af\u74e6\u5c14\u5df4\u548c\u626c\u9a6c\u5ef6 -LocaleNames/zh_SG/SL=\u585e\u62c9\u5229\u6602 -LocaleNames/zh_SG/TC=\u7279\u514b\u65af\u548c\u51ef\u79d1\u65af\u7fa4\u5c9b -LocaleNames/zh_SG/TK=\u6258\u514b\u52b3 -LocaleNames/zh_SG/TW=\u53f0\u6e7e -LocaleNames/zh_SG/UM=\u7f8e\u56fd\u672c\u571f\u5916\u5c0f\u5c9b\u5c7f -LocaleNames/zh_SG/WF=\u74e6\u5229\u65af\u548c\u5bcc\u56fe\u7eb3 -LocaleNames/zh_SG/WS=\u8428\u6469\u4e9a -LocaleNames/zh_SG/YT=\u9a6c\u7ea6\u7279 +LocaleNames/zh_SG/ae=阿维斯塔语 +LocaleNames/zh_SG/ak=阿肯语 +LocaleNames/zh_SG/cr=克里语 +LocaleNames/zh_SG/cu=教会斯拉夫语 +LocaleNames/zh_SG/ff=富拉语 +LocaleNames/zh_SG/gv=马恩语 +LocaleNames/zh_SG/ig=伊博语 +LocaleNames/zh_SG/ii=四川彝语 +LocaleNames/zh_SG/ko=韩语 +LocaleNames/zh_SG/kw=康沃尔语 +LocaleNames/zh_SG/lg=卢干达语 +LocaleNames/zh_SG/li=林堡语 +LocaleNames/zh_SG/lu=鲁巴加丹加语 +LocaleNames/zh_SG/nd=北恩德贝勒语 +LocaleNames/zh_SG/nr=南恩德贝勒语 +LocaleNames/zh_SG/sc=萨丁语 +LocaleNames/zh_SG/ty=塔希提语 +LocaleNames/zh_SG/AS=美属萨摩亚 +LocaleNames/zh_SG/AU=澳大利亚 +LocaleNames/zh_SG/BD=孟加拉国 +LocaleNames/zh_SG/BV=布韦岛 +LocaleNames/zh_SG/BZ=伯利兹 +LocaleNames/zh_SG/CZ=捷克 +LocaleNames/zh_SG/ER=厄立特里亚 +LocaleNames/zh_SG/FK=福克兰群岛 +LocaleNames/zh_SG/FM=密克罗尼西亚 +LocaleNames/zh_SG/GS=南乔治亚和南桑威奇群岛 +LocaleNames/zh_SG/GW=几内亚比绍 +LocaleNames/zh_SG/HK=中国香港特别行政区 +LocaleNames/zh_SG/HM=赫德岛和麦克唐纳群岛 +LocaleNames/zh_SG/ID=印度尼西亚 +LocaleNames/zh_SG/KR=韩国 +LocaleNames/zh_SG/LA=老挝 +LocaleNames/zh_SG/MK=北马其顿 +LocaleNames/zh_SG/MO=中国澳门特别行政区 +LocaleNames/zh_SG/MP=北马里亚纳群岛 +LocaleNames/zh_SG/NU=纽埃 +LocaleNames/zh_SG/NZ=新西兰 +LocaleNames/zh_SG/PF=法属波利尼西亚 +LocaleNames/zh_SG/PM=圣皮埃尔和密克隆群岛 +LocaleNames/zh_SG/PN=皮特凯恩群岛 +LocaleNames/zh_SG/PR=波多黎各 +LocaleNames/zh_SG/PS=巴勒斯坦领土 +LocaleNames/zh_SG/RE=留尼汪 +LocaleNames/zh_SG/SA=沙特阿拉伯 +LocaleNames/zh_SG/SH=圣赫勒拿 +LocaleNames/zh_SG/SJ=斯瓦尔巴和扬马延 +LocaleNames/zh_SG/SL=塞拉利昂 +LocaleNames/zh_SG/TC=特克斯和凯科斯群岛 +LocaleNames/zh_SG/TK=托克劳 +LocaleNames/zh_SG/TW=台湾 +LocaleNames/zh_SG/UM=美国本土外小岛屿 +LocaleNames/zh_SG/WF=瓦利斯和富图纳 +LocaleNames/zh_SG/WS=萨摩亚 +LocaleNames/zh_SG/YT=马约特 #en_SG FormatData/en_SG/latn.NumberPatterns/0=#,##0.### -FormatData/en_SG/latn.NumberPatterns/1=\u00a4#,##0.00 +FormatData/en_SG/latn.NumberPatterns/1=¤#,##0.00 FormatData/en_SG/latn.NumberPatterns/2=#,##0% CurrencyNames/en_SG/SGD=$ LocaleNames/en_SG/kj=Kuanyama @@ -2532,14 +2532,14 @@ LocaleNames/en_SG/rm=Romansh LocaleNames/en_SG/to=Tongan LocaleNames/en_SG/CC=Cocos (Keeling) Islands -LocaleNames/en_SG/CI=C\u00f4te d\u2019Ivoire +LocaleNames/en_SG/CI=Côte d’Ivoire LocaleNames/en_SG/GS=South Georgia & South Sandwich Islands LocaleNames/en_SG/HM=Heard & McDonald Islands LocaleNames/en_SG/KN=St Kitts & Nevis LocaleNames/en_SG/PM=St Pierre & Miquelon LocaleNames/en_SG/PS=Palestinian Territories LocaleNames/en_SG/SJ=Svalbard & Jan Mayen -LocaleNames/en_SG/ST=S\u00e3o Tom\u00e9 & Pr\u00edncipe +LocaleNames/en_SG/ST=São Tomé & Príncipe LocaleNames/en_SG/TC=Turks & Caicos Islands LocaleNames/en_SG/TL=Timor-Leste LocaleNames/en_SG/VC=St Vincent & the Grenadines @@ -2587,7 +2587,7 @@ FormatData/in/Eras/0=SM FormatData/in/Eras/1=M FormatData/in/latn.NumberPatterns/0=#,##0.### -FormatData/in/latn.NumberPatterns/1=\u00a4#,##0.00 +FormatData/in/latn.NumberPatterns/1=¤#,##0.00 FormatData/in/latn.NumberPatterns/2=#,##0% FormatData/in/latn.NumberElements/0=, FormatData/in/latn.NumberElements/1=. @@ -2597,8 +2597,8 @@ FormatData/in/latn.NumberElements/5=# FormatData/in/latn.NumberElements/6=- FormatData/in/latn.NumberElements/7=E -FormatData/in/latn.NumberElements/8=\u2030 -FormatData/in/latn.NumberElements/9=\u221e +FormatData/in/latn.NumberElements/8=‰ +FormatData/in/latn.NumberElements/9=∞ FormatData/in/latn.NumberElements/10=NaN FormatData/in/TimePatterns/0=HH.mm.ss zzzz FormatData/in/TimePatterns/1=HH.mm.ss z @@ -2621,7 +2621,7 @@ FormatData/in_ID/DateTimePatterns/0={1} {0} #en_MT FormatData/en_MT/latn.NumberPatterns/0=#,##0.### -FormatData/en_MT/latn.NumberPatterns/1=\u00a4#,##0.00 +FormatData/en_MT/latn.NumberPatterns/1=¤#,##0.00 FormatData/en_MT/latn.NumberPatterns/2=#,##0% FormatData/en_MT/TimePatterns/0=HH:mm:ss zzzz FormatData/en_MT/TimePatterns/1=HH:mm:ss z @@ -2632,7 +2632,7 @@ FormatData/en_MT/DatePatterns/2=dd MMM y FormatData/en_MT/DatePatterns/3=dd/MM/y FormatData/en_MT/DateTimePatterns/0={1}, {0} -CurrencyNames/en_MT/EUR=\u20ac +CurrencyNames/en_MT/EUR=€ LocaleNames/en_MT/kj=Kuanyama LocaleNames/en_MT/kl=Kalaallisut LocaleNames/en_MT/ny=Nyanja @@ -2642,31 +2642,31 @@ LocaleNames/en_MT/rm=Romansh LocaleNames/en_MT/to=Tongan LocaleNames/en_MT/CC=Cocos (Keeling) Islands -LocaleNames/en_MT/CI=C\u00f4te d\u2019Ivoire +LocaleNames/en_MT/CI=Côte d’Ivoire LocaleNames/en_MT/GS=South Georgia & South Sandwich Islands LocaleNames/en_MT/HM=Heard & McDonald Islands LocaleNames/en_MT/KN=St Kitts & Nevis LocaleNames/en_MT/PM=St Pierre & Miquelon LocaleNames/en_MT/PS=Palestinian Territories LocaleNames/en_MT/SJ=Svalbard & Jan Mayen -LocaleNames/en_MT/ST=S\u00e3o Tom\u00e9 & Pr\u00edncipe +LocaleNames/en_MT/ST=São Tomé & Príncipe LocaleNames/en_MT/TC=Turks & Caicos Islands LocaleNames/en_MT/TL=Timor-Leste LocaleNames/en_MT/VC=St Vincent & the Grenadines LocaleNames/en_MT/WF=Wallis & Futuna #mt_MT FormatData/mt_MT/latn.NumberPatterns/0=#,##0.### -FormatData/mt_MT/latn.NumberPatterns/1=\u00a4#,##0.00 +FormatData/mt_MT/latn.NumberPatterns/1=¤#,##0.00 FormatData/mt_MT/latn.NumberPatterns/2=#,##0% -CurrencyNames/mt_MT/EUR=\u20ac +CurrencyNames/mt_MT/EUR=€ #en_PH FormatData/en_PH/latn.NumberPatterns/0=#,##0.### -FormatData/en_PH/latn.NumberPatterns/1=\u00a4#,##0.00 +FormatData/en_PH/latn.NumberPatterns/1=¤#,##0.00 FormatData/en_PH/latn.NumberPatterns/2=#,##0% -FormatData/en_PH/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/en_PH/TimePatterns/1=h:mm:ss\u202fa z -FormatData/en_PH/TimePatterns/2=h:mm:ss\u202fa -FormatData/en_PH/TimePatterns/3=h:mm\u202fa +FormatData/en_PH/TimePatterns/0=h:mm:ss a zzzz +FormatData/en_PH/TimePatterns/1=h:mm:ss a z +FormatData/en_PH/TimePatterns/2=h:mm:ss a +FormatData/en_PH/TimePatterns/3=h:mm a FormatData/en_PH/DatePatterns/0=EEEE, MMMM d, y FormatData/en_PH/DatePatterns/1=MMMM d, y FormatData/en_PH/DatePatterns/2=MMM d, y @@ -2681,56 +2681,56 @@ LocaleNames/en_PH/rm=Romansh LocaleNames/en_PH/to=Tongan LocaleNames/en_PH/CC=Cocos (Keeling) Islands -LocaleNames/en_PH/CI=C\u00f4te d\u2019Ivoire +LocaleNames/en_PH/CI=Côte d’Ivoire LocaleNames/en_PH/GS=South Georgia & South Sandwich Islands LocaleNames/en_PH/HM=Heard & McDonald Islands LocaleNames/en_PH/KN=St. Kitts & Nevis LocaleNames/en_PH/PM=St. Pierre & Miquelon LocaleNames/en_PH/PS=Palestinian Territories LocaleNames/en_PH/SJ=Svalbard & Jan Mayen -LocaleNames/en_PH/ST=S\u00e3o Tom\u00e9 & Pr\u00edncipe +LocaleNames/en_PH/ST=São Tomé & Príncipe #el -FormatData/el/standalone.MonthNames/0=\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/1=\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/2=\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/3=\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/4=\u039c\u03ac\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/5=\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/6=\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/7=\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2 -FormatData/el/standalone.MonthNames/8=\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/9=\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/10=\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 -FormatData/el/standalone.MonthNames/11=\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2 +FormatData/el/standalone.MonthNames/0=Ιανουάριος +FormatData/el/standalone.MonthNames/1=Φεβρουάριος +FormatData/el/standalone.MonthNames/2=Μάρτιος +FormatData/el/standalone.MonthNames/3=Απρίλιος +FormatData/el/standalone.MonthNames/4=Μάιος +FormatData/el/standalone.MonthNames/5=Ιούνιος +FormatData/el/standalone.MonthNames/6=Ιούλιος +FormatData/el/standalone.MonthNames/7=Αύγουστος +FormatData/el/standalone.MonthNames/8=Σεπτέμβριος +FormatData/el/standalone.MonthNames/9=Οκτώβριος +FormatData/el/standalone.MonthNames/10=Νοέμβριος +FormatData/el/standalone.MonthNames/11=Δεκέμβριος FormatData/el/standalone.MonthNames/12= -FormatData/el/MonthAbbreviations/0=\u0399\u03b1\u03bd -FormatData/el/MonthAbbreviations/1=\u03a6\u03b5\u03b2 -FormatData/el/MonthAbbreviations/2=\u039c\u03b1\u03c1 -FormatData/el/MonthAbbreviations/3=\u0391\u03c0\u03c1 -FormatData/el/MonthAbbreviations/4=\u039c\u03b1\u0390 -FormatData/el/MonthAbbreviations/5=\u0399\u03bf\u03c5\u03bd -FormatData/el/MonthAbbreviations/6=\u0399\u03bf\u03c5\u03bb -FormatData/el/MonthAbbreviations/7=\u0391\u03c5\u03b3 -FormatData/el/MonthAbbreviations/8=\u03a3\u03b5\u03c0 -FormatData/el/MonthAbbreviations/9=\u039f\u03ba\u03c4 -FormatData/el/MonthAbbreviations/10=\u039d\u03bf\u03b5 -FormatData/el/MonthAbbreviations/11=\u0394\u03b5\u03ba -FormatData/el/DayNames/0=\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae -FormatData/el/DayNames/1=\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1 -FormatData/el/DayNames/2=\u03a4\u03c1\u03af\u03c4\u03b7 -FormatData/el/DayNames/3=\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7 -FormatData/el/DayNames/4=\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7 -FormatData/el/DayNames/5=\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae -FormatData/el/DayNames/6=\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf -FormatData/el/DayAbbreviations/0=\u039a\u03c5\u03c1 -FormatData/el/DayAbbreviations/1=\u0394\u03b5\u03c5 -FormatData/el/DayAbbreviations/2=\u03a4\u03c1\u03af -FormatData/el/DayAbbreviations/3=\u03a4\u03b5\u03c4 -FormatData/el/DayAbbreviations/4=\u03a0\u03ad\u03bc -FormatData/el/DayAbbreviations/5=\u03a0\u03b1\u03c1 -FormatData/el/DayAbbreviations/6=\u03a3\u03ac\u03b2 -FormatData/el/AmPmMarkers/0=\u03c0.\u03bc. -FormatData/el/AmPmMarkers/1=\u03bc.\u03bc. +FormatData/el/MonthAbbreviations/0=Ιαν +FormatData/el/MonthAbbreviations/1=Φεβ +FormatData/el/MonthAbbreviations/2=Μαρ +FormatData/el/MonthAbbreviations/3=Απρ +FormatData/el/MonthAbbreviations/4=Μαΐ +FormatData/el/MonthAbbreviations/5=Ιουν +FormatData/el/MonthAbbreviations/6=Ιουλ +FormatData/el/MonthAbbreviations/7=Αυγ +FormatData/el/MonthAbbreviations/8=Σεπ +FormatData/el/MonthAbbreviations/9=Οκτ +FormatData/el/MonthAbbreviations/10=Νοε +FormatData/el/MonthAbbreviations/11=Δεκ +FormatData/el/DayNames/0=Κυριακή +FormatData/el/DayNames/1=Δευτέρα +FormatData/el/DayNames/2=Τρίτη +FormatData/el/DayNames/3=Τετάρτη +FormatData/el/DayNames/4=Πέμπτη +FormatData/el/DayNames/5=Παρασκευή +FormatData/el/DayNames/6=Σάββατο +FormatData/el/DayAbbreviations/0=Κυρ +FormatData/el/DayAbbreviations/1=Δευ +FormatData/el/DayAbbreviations/2=Τρί +FormatData/el/DayAbbreviations/3=Τετ +FormatData/el/DayAbbreviations/4=Πέμ +FormatData/el/DayAbbreviations/5=Παρ +FormatData/el/DayAbbreviations/6=Σάβ +FormatData/el/AmPmMarkers/0=π.μ. +FormatData/el/AmPmMarkers/1=μ.μ. FormatData/el/latn.NumberElements/0=, FormatData/el/latn.NumberElements/1=. FormatData/el/latn.NumberElements/2=; @@ -2739,353 +2739,353 @@ FormatData/el/latn.NumberElements/5=# FormatData/el/latn.NumberElements/6=- FormatData/el/latn.NumberElements/7=e -FormatData/el/latn.NumberElements/8=\u2030 -FormatData/el/latn.NumberElements/9=\u221e +FormatData/el/latn.NumberElements/8=‰ +FormatData/el/latn.NumberElements/9=∞ FormatData/el/latn.NumberElements/10=NaN -FormatData/el/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/el/TimePatterns/1=h:mm:ss\u202fa z -FormatData/el/TimePatterns/2=h:mm:ss\u202fa -FormatData/el/TimePatterns/3=h:mm\u202fa +FormatData/el/TimePatterns/0=h:mm:ss a zzzz +FormatData/el/TimePatterns/1=h:mm:ss a z +FormatData/el/TimePatterns/2=h:mm:ss a +FormatData/el/TimePatterns/3=h:mm a FormatData/el/DatePatterns/0=EEEE d MMMM y FormatData/el/DatePatterns/1=d MMMM y FormatData/el/DatePatterns/2=d MMM y FormatData/el/DatePatterns/3=d/M/yy FormatData/el/DateTimePatterns/0={1} - {0} -LocaleNames/el/GR=\u0395\u03bb\u03bb\u03ac\u03b4\u03b1 +LocaleNames/el/GR=Ελλάδα #el_CY #bug 6483191 -FormatData/el_CY/MonthNames/0=\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/1=\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/2=\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/3=\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/4=\u039c\u03b1\u0390\u03bf\u03c5 -FormatData/el_CY/MonthNames/5=\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/6=\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/7=\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5 -FormatData/el_CY/MonthNames/8=\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/9=\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/10=\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5 -FormatData/el_CY/MonthNames/11=\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5 +FormatData/el_CY/MonthNames/0=Ιανουαρίου +FormatData/el_CY/MonthNames/1=Φεβρουαρίου +FormatData/el_CY/MonthNames/2=Μαρτίου +FormatData/el_CY/MonthNames/3=Απριλίου +FormatData/el_CY/MonthNames/4=Μαΐου +FormatData/el_CY/MonthNames/5=Ιουνίου +FormatData/el_CY/MonthNames/6=Ιουλίου +FormatData/el_CY/MonthNames/7=Αυγούστου +FormatData/el_CY/MonthNames/8=Σεπτεμβρίου +FormatData/el_CY/MonthNames/9=Οκτωβρίου +FormatData/el_CY/MonthNames/10=Νοεμβρίου +FormatData/el_CY/MonthNames/11=Δεκεμβρίου FormatData/el_CY/MonthNames/12= -FormatData/el_CY/AmPmMarkers/0=\u03c0.\u03bc. -FormatData/el_CY/AmPmMarkers/1=\u03bc.\u03bc. -FormatData/el_CY/Eras/0=\u03c0.\u03a7. -FormatData/el_CY/Eras/1=\u03bc.\u03a7. +FormatData/el_CY/AmPmMarkers/0=π.μ. +FormatData/el_CY/AmPmMarkers/1=μ.μ. +FormatData/el_CY/Eras/0=π.Χ. +FormatData/el_CY/Eras/1=μ.Χ. FormatData/el_CY/latn.NumberPatterns/0=#,##0.### -FormatData/el_CY/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 +FormatData/el_CY/latn.NumberPatterns/1=#,##0.00 ¤ FormatData/el_CY/latn.NumberPatterns/2=#,##0% -FormatData/el_CY/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/el_CY/TimePatterns/1=h:mm:ss\u202fa z -FormatData/el_CY/TimePatterns/2=h:mm:ss\u202fa -FormatData/el_CY/TimePatterns/3=h:mm\u202fa +FormatData/el_CY/TimePatterns/0=h:mm:ss a zzzz +FormatData/el_CY/TimePatterns/1=h:mm:ss a z +FormatData/el_CY/TimePatterns/2=h:mm:ss a +FormatData/el_CY/TimePatterns/3=h:mm a FormatData/el_CY/DatePatterns/0=EEEE d MMMM y FormatData/el_CY/DatePatterns/1=d MMMM y FormatData/el_CY/DatePatterns/2=d MMM y FormatData/el_CY/DatePatterns/3=d/M/yy FormatData/el_CY/DateTimePatterns/0={1} - {0} -LocaleNames/el_CY/ar=\u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el_CY/be=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03b9\u03ba\u03ac -LocaleNames/el_CY/bg=\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03b9\u03ba\u03ac -LocaleNames/el_CY/bo=\u0398\u03b9\u03b2\u03b5\u03c4\u03b9\u03b1\u03bd\u03ac -LocaleNames/el_CY/bs=\u0392\u03bf\u03c3\u03bd\u03b9\u03b1\u03ba\u03ac -LocaleNames/el_CY/bn=\u0392\u03b5\u03b3\u03b3\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/ca=\u039a\u03b1\u03c4\u03b1\u03bb\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/co=\u039a\u03bf\u03c1\u03c3\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/cs=\u03a4\u03c3\u03b5\u03c7\u03b9\u03ba\u03ac -LocaleNames/el_CY/cy=\u039f\u03c5\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/da=\u0394\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/de=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/el=\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/en=\u0391\u03b3\u03b3\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/es=\u0399\u03c3\u03c0\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/et=\u0395\u03c3\u03b8\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/eu=\u0392\u03b1\u03c3\u03ba\u03b9\u03ba\u03ac -LocaleNames/el_CY/fa=\u03a0\u03b5\u03c1\u03c3\u03b9\u03ba\u03ac -LocaleNames/el_CY/fi=\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/fr=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/ga=\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/gd=\u03a3\u03ba\u03c9\u03c4\u03b9\u03ba\u03ac \u039a\u03b5\u03bb\u03c4\u03b9\u03ba\u03ac -LocaleNames/el_CY/he=\u0395\u03b2\u03c1\u03b1\u03ca\u03ba\u03ac -LocaleNames/el_CY/hi=\u03a7\u03af\u03bd\u03c4\u03b9 -LocaleNames/el_CY/hr=\u039a\u03c1\u03bf\u03b1\u03c4\u03b9\u03ba\u03ac -LocaleNames/el_CY/hu=\u039f\u03c5\u03b3\u03b3\u03c1\u03b9\u03ba\u03ac -LocaleNames/el_CY/hy=\u0391\u03c1\u03bc\u03b5\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/id=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03b9\u03b1\u03ba\u03ac -LocaleNames/el_CY/is=\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/it=\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/ja=\u0399\u03b1\u03c0\u03c9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/ka=\u0393\u03b5\u03c9\u03c1\u03b3\u03b9\u03b1\u03bd\u03ac -LocaleNames/el_CY/ko=\u039a\u03bf\u03c1\u03b5\u03b1\u03c4\u03b9\u03ba\u03ac -LocaleNames/el_CY/la=\u039b\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/lt=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/lv=\u039b\u03b5\u03c4\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/mk=\u03a3\u03bb\u03b1\u03b2\u03bf\u03bc\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/mn=\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/mt=\u039c\u03b1\u03bb\u03c4\u03b5\u03b6\u03b9\u03ba\u03ac -LocaleNames/el_CY/nl=\u039f\u03bb\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/no=\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03b9\u03ba\u03ac -LocaleNames/el_CY/pl=\u03a0\u03bf\u03bb\u03c9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/pt=\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el_CY/ro=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/ru=\u03a1\u03c9\u03c3\u03b9\u03ba\u03ac -LocaleNames/el_CY/sk=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03b9\u03ba\u03ac -LocaleNames/el_CY/sl=\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/sq=\u0391\u03bb\u03b2\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/sr=\u03a3\u03b5\u03c1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el_CY/sv=\u03a3\u03bf\u03c5\u03b7\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/th=\u03a4\u03b1\u03ca\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el_CY/tr=\u03a4\u03bf\u03c5\u03c1\u03ba\u03b9\u03ba\u03ac -LocaleNames/el_CY/uk=\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el_CY/vi=\u0392\u03b9\u03b5\u03c4\u03bd\u03b1\u03bc\u03b9\u03ba\u03ac -LocaleNames/el_CY/yi=\u0393\u03af\u03bd\u03c4\u03b9\u03c2 -LocaleNames/el_CY/zh=\u039a\u03b9\u03bd\u03b5\u03b6\u03b9\u03ba\u03ac -LocaleNames/el_CY/AD=\u0391\u03bd\u03b4\u03cc\u03c1\u03b1 -LocaleNames/el_CY/AE=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b1 \u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac \u0395\u03bc\u03b9\u03c1\u03ac\u03c4\u03b1 -LocaleNames/el_CY/AF=\u0391\u03c6\u03b3\u03b1\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/AG=\u0391\u03bd\u03c4\u03af\u03b3\u03ba\u03bf\u03c5\u03b1 \u03ba\u03b1\u03b9 \u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03bf\u03cd\u03bd\u03c4\u03b1 -LocaleNames/el_CY/AI=\u0391\u03bd\u03b3\u03ba\u03bf\u03c5\u03af\u03bb\u03b1 -LocaleNames/el_CY/AL=\u0391\u03bb\u03b2\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/AM=\u0391\u03c1\u03bc\u03b5\u03bd\u03af\u03b1 -LocaleNames/el_CY/AO=\u0391\u03b3\u03ba\u03cc\u03bb\u03b1 -LocaleNames/el_CY/AQ=\u0391\u03bd\u03c4\u03b1\u03c1\u03ba\u03c4\u03b9\u03ba\u03ae -LocaleNames/el_CY/AR=\u0391\u03c1\u03b3\u03b5\u03bd\u03c4\u03b9\u03bd\u03ae -LocaleNames/el_CY/AS=\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u03a3\u03b1\u03bc\u03cc\u03b1 -LocaleNames/el_CY/AT=\u0391\u03c5\u03c3\u03c4\u03c1\u03af\u03b1 -LocaleNames/el_CY/AU=\u0391\u03c5\u03c3\u03c4\u03c1\u03b1\u03bb\u03af\u03b1 -LocaleNames/el_CY/AW=\u0391\u03c1\u03bf\u03cd\u03bc\u03c0\u03b1 -LocaleNames/el_CY/AX=\u039d\u03ae\u03c3\u03bf\u03b9 \u038c\u03bb\u03b1\u03bd\u03c4 -LocaleNames/el_CY/AZ=\u0391\u03b6\u03b5\u03c1\u03bc\u03c0\u03b1\u03ca\u03c4\u03b6\u03ac\u03bd -LocaleNames/el_CY/BA=\u0392\u03bf\u03c3\u03bd\u03af\u03b1 - \u0395\u03c1\u03b6\u03b5\u03b3\u03bf\u03b2\u03af\u03bd\u03b7 -LocaleNames/el_CY/BB=\u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03ad\u03b9\u03bd\u03c4\u03bf\u03c2 -LocaleNames/el_CY/BD=\u039c\u03c0\u03b1\u03bd\u03b3\u03ba\u03bb\u03b1\u03bd\u03c4\u03ad\u03c2 -LocaleNames/el_CY/BE=\u0392\u03ad\u03bb\u03b3\u03b9\u03bf -LocaleNames/el_CY/BF=\u039c\u03c0\u03bf\u03c5\u03c1\u03ba\u03af\u03bd\u03b1 \u03a6\u03ac\u03c3\u03bf -LocaleNames/el_CY/BG=\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03af\u03b1 -LocaleNames/el_CY/BH=\u039c\u03c0\u03b1\u03c7\u03c1\u03ad\u03b9\u03bd -LocaleNames/el_CY/BI=\u039c\u03c0\u03bf\u03c5\u03c1\u03bf\u03cd\u03bd\u03c4\u03b9 -LocaleNames/el_CY/BJ=\u039c\u03c0\u03b5\u03bd\u03af\u03bd -LocaleNames/el_CY/BM=\u0392\u03b5\u03c1\u03bc\u03bf\u03cd\u03b4\u03b5\u03c2 -LocaleNames/el_CY/BN=\u039c\u03c0\u03c1\u03bf\u03c5\u03bd\u03ad\u03b9 -LocaleNames/el_CY/BO=\u0392\u03bf\u03bb\u03b9\u03b2\u03af\u03b1 -LocaleNames/el_CY/BR=\u0392\u03c1\u03b1\u03b6\u03b9\u03bb\u03af\u03b1 -LocaleNames/el_CY/BS=\u039c\u03c0\u03b1\u03c7\u03ac\u03bc\u03b5\u03c2 -LocaleNames/el_CY/BT=\u039c\u03c0\u03bf\u03c5\u03c4\u03ac\u03bd -LocaleNames/el_CY/BV=\u039d\u03ae\u03c3\u03bf\u03c2 \u039c\u03c0\u03bf\u03c5\u03b2\u03ad -LocaleNames/el_CY/BW=\u039c\u03c0\u03bf\u03c4\u03c3\u03bf\u03c5\u03ac\u03bd\u03b1 -LocaleNames/el_CY/BY=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03af\u03b1 -LocaleNames/el_CY/BZ=\u039c\u03c0\u03b5\u03bb\u03af\u03b6 -LocaleNames/el_CY/CA=\u039a\u03b1\u03bd\u03b1\u03b4\u03ac\u03c2 -LocaleNames/el_CY/CC=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03cc\u03ba\u03bf\u03c2 (\u039a\u03af\u03bb\u03b9\u03bd\u03b3\u03ba) -LocaleNames/el_CY/CD=\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039a\u03b9\u03bd\u03c3\u03ac\u03c3\u03b1 -LocaleNames/el_CY/CF=\u039a\u03b5\u03bd\u03c4\u03c1\u03bf\u03b1\u03c6\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1 -LocaleNames/el_CY/CG=\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039c\u03c0\u03c1\u03b1\u03b6\u03b1\u03b2\u03af\u03bb -LocaleNames/el_CY/CH=\u0395\u03bb\u03b2\u03b5\u03c4\u03af\u03b1 -LocaleNames/el_CY/CI=\u0391\u03ba\u03c4\u03ae \u0395\u03bb\u03b5\u03c6\u03b1\u03bd\u03c4\u03bf\u03c3\u03c4\u03bf\u03cd -LocaleNames/el_CY/CK=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03bf\u03c5\u03ba -LocaleNames/el_CY/CL=\u03a7\u03b9\u03bb\u03ae -LocaleNames/el_CY/CM=\u039a\u03b1\u03bc\u03b5\u03c1\u03bf\u03cd\u03bd -LocaleNames/el_CY/CN=\u039a\u03af\u03bd\u03b1 -LocaleNames/el_CY/CO=\u039a\u03bf\u03bb\u03bf\u03bc\u03b2\u03af\u03b1 -LocaleNames/el_CY/CR=\u039a\u03cc\u03c3\u03c4\u03b1 \u03a1\u03af\u03ba\u03b1 -LocaleNames/el_CY/CU=\u039a\u03bf\u03cd\u03b2\u03b1 -LocaleNames/el_CY/CV=\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf \u0391\u03ba\u03c1\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf -LocaleNames/el_CY/CX=\u039d\u03ae\u03c3\u03bf\u03c2 \u03c4\u03c9\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd -LocaleNames/el_CY/CY=\u039a\u03cd\u03c0\u03c1\u03bf\u03c2 -LocaleNames/el_CY/CZ=\u03a4\u03c3\u03b5\u03c7\u03af\u03b1 -LocaleNames/el_CY/DE=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/DJ=\u03a4\u03b6\u03b9\u03bc\u03c0\u03bf\u03c5\u03c4\u03af -LocaleNames/el_CY/DK=\u0394\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/DM=\u039d\u03c4\u03bf\u03bc\u03af\u03bd\u03b9\u03ba\u03b1 -LocaleNames/el_CY/DO=\u0394\u03bf\u03bc\u03b9\u03bd\u03b9\u03ba\u03b1\u03bd\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1 -LocaleNames/el_CY/DZ=\u0391\u03bb\u03b3\u03b5\u03c1\u03af\u03b1 -LocaleNames/el_CY/EC=\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03cc\u03c2 -LocaleNames/el_CY/EE=\u0395\u03c3\u03b8\u03bf\u03bd\u03af\u03b1 -LocaleNames/el_CY/EG=\u0391\u03af\u03b3\u03c5\u03c0\u03c4\u03bf\u03c2 -LocaleNames/el_CY/EH=\u0394\u03c5\u03c4\u03b9\u03ba\u03ae \u03a3\u03b1\u03c7\u03ac\u03c1\u03b1 -LocaleNames/el_CY/ER=\u0395\u03c1\u03c5\u03b8\u03c1\u03b1\u03af\u03b1 -LocaleNames/el_CY/ES=\u0399\u03c3\u03c0\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/ET=\u0391\u03b9\u03b8\u03b9\u03bf\u03c0\u03af\u03b1 -LocaleNames/el_CY/FI=\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/FJ=\u03a6\u03af\u03c4\u03b6\u03b9 -LocaleNames/el_CY/FK=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03cc\u03ba\u03bb\u03b1\u03bd\u03c4 -LocaleNames/el_CY/FM=\u039c\u03b9\u03ba\u03c1\u03bf\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el_CY/FO=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03b5\u03c1\u03cc\u03b5\u03c2 -LocaleNames/el_CY/FR=\u0393\u03b1\u03bb\u03bb\u03af\u03b1 -LocaleNames/el_CY/GA=\u0393\u03ba\u03b1\u03bc\u03c0\u03cc\u03bd -LocaleNames/el_CY/GB=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03bf \u0392\u03b1\u03c3\u03af\u03bb\u03b5\u03b9\u03bf -LocaleNames/el_CY/GD=\u0393\u03c1\u03b5\u03bd\u03ac\u03b4\u03b1 -LocaleNames/el_CY/GE=\u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 -LocaleNames/el_CY/GF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1 -LocaleNames/el_CY/GH=\u0393\u03ba\u03ac\u03bd\u03b1 -LocaleNames/el_CY/GI=\u0393\u03b9\u03b2\u03c1\u03b1\u03bb\u03c4\u03ac\u03c1 -LocaleNames/el_CY/GL=\u0393\u03c1\u03bf\u03b9\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/GM=\u0393\u03ba\u03ac\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el_CY/GN=\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el_CY/GP=\u0393\u03bf\u03c5\u03b1\u03b4\u03b5\u03bb\u03bf\u03cd\u03c0\u03b7 -LocaleNames/el_CY/GQ=\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el_CY/GS=\u039d\u03ae\u03c3\u03bf\u03b9 \u039d\u03cc\u03c4\u03b9\u03b1 \u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 \u03ba\u03b1\u03b9 \u039d\u03cc\u03c4\u03b9\u03b5\u03c2 \u03a3\u03ac\u03bd\u03c4\u03bf\u03c5\u03b9\u03c4\u03c2 -LocaleNames/el_CY/GT=\u0393\u03bf\u03c5\u03b1\u03c4\u03b5\u03bc\u03ac\u03bb\u03b1 -LocaleNames/el_CY/GU=\u0393\u03ba\u03bf\u03c5\u03ac\u03bc -LocaleNames/el_CY/GW=\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 \u039c\u03c0\u03b9\u03c3\u03ac\u03bf\u03c5 -LocaleNames/el_CY/GY=\u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1 -LocaleNames/el_CY/HK=\u03a7\u03bf\u03bd\u03b3\u03ba \u039a\u03bf\u03bd\u03b3\u03ba \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2 -LocaleNames/el_CY/HM=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a7\u03b5\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u039c\u03b1\u03ba\u03bd\u03c4\u03cc\u03bd\u03b1\u03bb\u03bd\u03c4 -LocaleNames/el_CY/HN=\u039f\u03bd\u03b4\u03bf\u03cd\u03c1\u03b1 -LocaleNames/el_CY/HR=\u039a\u03c1\u03bf\u03b1\u03c4\u03af\u03b1 -LocaleNames/el_CY/HT=\u0391\u03ca\u03c4\u03ae -LocaleNames/el_CY/HU=\u039f\u03c5\u03b3\u03b3\u03b1\u03c1\u03af\u03b1 -LocaleNames/el_CY/ID=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el_CY/IE=\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/IL=\u0399\u03c3\u03c1\u03b1\u03ae\u03bb -LocaleNames/el_CY/IN=\u0399\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/IO=\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 \u0399\u03bd\u03b4\u03b9\u03ba\u03bf\u03cd \u03a9\u03ba\u03b5\u03b1\u03bd\u03bf\u03cd -LocaleNames/el_CY/IQ=\u0399\u03c1\u03ac\u03ba -LocaleNames/el_CY/IR=\u0399\u03c1\u03ac\u03bd -LocaleNames/el_CY/IS=\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/IT=\u0399\u03c4\u03b1\u03bb\u03af\u03b1 -LocaleNames/el_CY/JM=\u03a4\u03b6\u03b1\u03bc\u03ac\u03b9\u03ba\u03b1 -LocaleNames/el_CY/JO=\u0399\u03bf\u03c1\u03b4\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/JP=\u0399\u03b1\u03c0\u03c9\u03bd\u03af\u03b1 -LocaleNames/el_CY/KE=\u039a\u03ad\u03bd\u03c5\u03b1 -LocaleNames/el_CY/KG=\u039a\u03b9\u03c1\u03b3\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/KH=\u039a\u03b1\u03bc\u03c0\u03cc\u03c4\u03b6\u03b7 -LocaleNames/el_CY/KI=\u039a\u03b9\u03c1\u03b9\u03bc\u03c0\u03ac\u03c4\u03b9 -LocaleNames/el_CY/KM=\u039a\u03bf\u03bc\u03cc\u03c1\u03b5\u03c2 -LocaleNames/el_CY/KN=\u03a3\u03b5\u03bd \u039a\u03b9\u03c4\u03c2 \u03ba\u03b1\u03b9 \u039d\u03ad\u03b2\u03b9\u03c2 -LocaleNames/el_CY/KP=\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1 -LocaleNames/el_CY/KR=\u039d\u03cc\u03c4\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1 -LocaleNames/el_CY/KW=\u039a\u03bf\u03c5\u03b2\u03ad\u03b9\u03c4 -LocaleNames/el_CY/KY=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03ad\u03b9\u03bc\u03b1\u03bd -LocaleNames/el_CY/KZ=\u039a\u03b1\u03b6\u03b1\u03ba\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/LA=\u039b\u03ac\u03bf\u03c2 -LocaleNames/el_CY/LB=\u039b\u03af\u03b2\u03b1\u03bd\u03bf\u03c2 -LocaleNames/el_CY/LC=\u0391\u03b3\u03af\u03b1 \u039b\u03bf\u03c5\u03ba\u03af\u03b1 -LocaleNames/el_CY/LI=\u039b\u03b9\u03c7\u03c4\u03b5\u03bd\u03c3\u03c4\u03ac\u03b9\u03bd -LocaleNames/el_CY/LK=\u03a3\u03c1\u03b9 \u039b\u03ac\u03bd\u03ba\u03b1 -LocaleNames/el_CY/LR=\u039b\u03b9\u03b2\u03b5\u03c1\u03af\u03b1 -LocaleNames/el_CY/LS=\u039b\u03b5\u03c3\u03cc\u03c4\u03bf -LocaleNames/el_CY/LT=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/LU=\u039b\u03bf\u03c5\u03be\u03b5\u03bc\u03b2\u03bf\u03cd\u03c1\u03b3\u03bf -LocaleNames/el_CY/LV=\u039b\u03b5\u03c4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el_CY/LY=\u039b\u03b9\u03b2\u03cd\u03b7 -LocaleNames/el_CY/MA=\u039c\u03b1\u03c1\u03cc\u03ba\u03bf -LocaleNames/el_CY/MC=\u039c\u03bf\u03bd\u03b1\u03ba\u03cc -LocaleNames/el_CY/MD=\u039c\u03bf\u03bb\u03b4\u03b1\u03b2\u03af\u03b1 -LocaleNames/el_CY/MG=\u039c\u03b1\u03b4\u03b1\u03b3\u03b1\u03c3\u03ba\u03ac\u03c1\u03b7 -LocaleNames/el_CY/MH=\u039d\u03ae\u03c3\u03bf\u03b9 \u039c\u03ac\u03c1\u03c3\u03b1\u03bb -LocaleNames/el_CY/MK=\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el_CY/ML=\u039c\u03ac\u03bb\u03b9 -LocaleNames/el_CY/MM=\u039c\u03b9\u03b1\u03bd\u03bc\u03ac\u03c1 (\u0392\u03b9\u03c1\u03bc\u03b1\u03bd\u03af\u03b1) -LocaleNames/el_CY/MN=\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03af\u03b1 -LocaleNames/el_CY/MO=\u039c\u03b1\u03ba\u03ac\u03bf \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2 -LocaleNames/el_CY/MP=\u039d\u03ae\u03c3\u03bf\u03b9 \u0392\u03cc\u03c1\u03b5\u03b9\u03b5\u03c2 \u039c\u03b1\u03c1\u03b9\u03ac\u03bd\u03b5\u03c2 -LocaleNames/el_CY/MQ=\u039c\u03b1\u03c1\u03c4\u03b9\u03bd\u03af\u03ba\u03b1 -LocaleNames/el_CY/MR=\u039c\u03b1\u03c5\u03c1\u03b9\u03c4\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/MS=\u039c\u03bf\u03bd\u03c3\u03b5\u03c1\u03ac\u03c4 -LocaleNames/el_CY/MT=\u039c\u03ac\u03bb\u03c4\u03b1 -LocaleNames/el_CY/MU=\u039c\u03b1\u03c5\u03c1\u03af\u03ba\u03b9\u03bf\u03c2 -LocaleNames/el_CY/MV=\u039c\u03b1\u03bb\u03b4\u03af\u03b2\u03b5\u03c2 -LocaleNames/el_CY/MW=\u039c\u03b1\u03bb\u03ac\u03bf\u03c5\u03b9 -LocaleNames/el_CY/MX=\u039c\u03b5\u03be\u03b9\u03ba\u03cc -LocaleNames/el_CY/MY=\u039c\u03b1\u03bb\u03b1\u03b9\u03c3\u03af\u03b1 -LocaleNames/el_CY/MZ=\u039c\u03bf\u03b6\u03b1\u03bc\u03b2\u03af\u03ba\u03b7 -LocaleNames/el_CY/NA=\u039d\u03b1\u03bc\u03af\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el_CY/NC=\u039d\u03ad\u03b1 \u039a\u03b1\u03bb\u03b7\u03b4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el_CY/NE=\u039d\u03af\u03b3\u03b7\u03c1\u03b1\u03c2 -LocaleNames/el_CY/NF=\u039d\u03ae\u03c3\u03bf\u03c2 \u039d\u03cc\u03c1\u03c6\u03bf\u03bb\u03ba -LocaleNames/el_CY/NG=\u039d\u03b9\u03b3\u03b7\u03c1\u03af\u03b1 -LocaleNames/el_CY/NI=\u039d\u03b9\u03ba\u03b1\u03c1\u03ac\u03b3\u03bf\u03c5\u03b1 -LocaleNames/el_CY/NL=\u039a\u03ac\u03c4\u03c9 \u03a7\u03ce\u03c1\u03b5\u03c2 -LocaleNames/el_CY/NO=\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03af\u03b1 -LocaleNames/el_CY/NP=\u039d\u03b5\u03c0\u03ac\u03bb -LocaleNames/el_CY/NR=\u039d\u03b1\u03bf\u03c5\u03c1\u03bf\u03cd -LocaleNames/el_CY/NU=\u039d\u03b9\u03bf\u03cd\u03b5 -LocaleNames/el_CY/NZ=\u039d\u03ad\u03b1 \u0396\u03b7\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el_CY/OM=\u039f\u03bc\u03ac\u03bd -LocaleNames/el_CY/PA=\u03a0\u03b1\u03bd\u03b1\u03bc\u03ac\u03c2 -LocaleNames/el_CY/PE=\u03a0\u03b5\u03c1\u03bf\u03cd -LocaleNames/el_CY/PF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u03a0\u03bf\u03bb\u03c5\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el_CY/PG=\u03a0\u03b1\u03c0\u03bf\u03cd\u03b1 \u039d\u03ad\u03b1 \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el_CY/PH=\u03a6\u03b9\u03bb\u03b9\u03c0\u03c0\u03af\u03bd\u03b5\u03c2 -LocaleNames/el_CY/PK=\u03a0\u03b1\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/PL=\u03a0\u03bf\u03bb\u03c9\u03bd\u03af\u03b1 -LocaleNames/el_CY/PM=\u03a3\u03b5\u03bd \u03a0\u03b9\u03b5\u03c1 \u03ba\u03b1\u03b9 \u039c\u03b9\u03ba\u03b5\u03bb\u03cc\u03bd -LocaleNames/el_CY/PN=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a0\u03af\u03c4\u03ba\u03b5\u03c1\u03bd -LocaleNames/el_CY/PR=\u03a0\u03bf\u03c5\u03ad\u03c1\u03c4\u03bf \u03a1\u03af\u03ba\u03bf -LocaleNames/el_CY/PS=\u03a0\u03b1\u03bb\u03b1\u03b9\u03c3\u03c4\u03b9\u03bd\u03b9\u03b1\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 -LocaleNames/el_CY/PT=\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03af\u03b1 -LocaleNames/el_CY/PW=\u03a0\u03b1\u03bb\u03ac\u03bf\u03c5 -LocaleNames/el_CY/PY=\u03a0\u03b1\u03c1\u03b1\u03b3\u03bf\u03c5\u03ac\u03b7 -LocaleNames/el_CY/QA=\u039a\u03b1\u03c4\u03ac\u03c1 -LocaleNames/el_CY/RE=\u03a1\u03b5\u03ca\u03bd\u03b9\u03cc\u03bd -LocaleNames/el_CY/RO=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/RU=\u03a1\u03c9\u03c3\u03af\u03b1 -LocaleNames/el_CY/RW=\u03a1\u03bf\u03c5\u03ac\u03bd\u03c4\u03b1 -LocaleNames/el_CY/SA=\u03a3\u03b1\u03bf\u03c5\u03b4\u03b9\u03ba\u03ae \u0391\u03c1\u03b1\u03b2\u03af\u03b1 -LocaleNames/el_CY/SB=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a3\u03bf\u03bb\u03bf\u03bc\u03ce\u03bd\u03c4\u03bf\u03c2 -LocaleNames/el_CY/SC=\u03a3\u03b5\u03cb\u03c7\u03ad\u03bb\u03bb\u03b5\u03c2 -LocaleNames/el_CY/SD=\u03a3\u03bf\u03c5\u03b4\u03ac\u03bd -LocaleNames/el_CY/SE=\u03a3\u03bf\u03c5\u03b7\u03b4\u03af\u03b1 -LocaleNames/el_CY/SG=\u03a3\u03b9\u03b3\u03ba\u03b1\u03c0\u03bf\u03cd\u03c1\u03b7 -LocaleNames/el_CY/SH=\u0391\u03b3\u03af\u03b1 \u0395\u03bb\u03ad\u03bd\u03b7 -LocaleNames/el_CY/SI=\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03af\u03b1 -LocaleNames/el_CY/SJ=\u03a3\u03b2\u03ac\u03bb\u03bc\u03c0\u03b1\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u0393\u03b9\u03b1\u03bd \u039c\u03b1\u03b3\u03b9\u03ad\u03bd -LocaleNames/el_CY/SK=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03af\u03b1 -LocaleNames/el_CY/SL=\u03a3\u03b9\u03ad\u03c1\u03b1 \u039b\u03b5\u03cc\u03bd\u03b5 -LocaleNames/el_CY/SM=\u0386\u03b3\u03b9\u03bf\u03c2 \u039c\u03b1\u03c1\u03af\u03bd\u03bf\u03c2 -LocaleNames/el_CY/SN=\u03a3\u03b5\u03bd\u03b5\u03b3\u03ac\u03bb\u03b7 -LocaleNames/el_CY/SO=\u03a3\u03bf\u03bc\u03b1\u03bb\u03af\u03b1 -LocaleNames/el_CY/SR=\u03a3\u03bf\u03c5\u03c1\u03b9\u03bd\u03ac\u03bc -LocaleNames/el_CY/ST=\u03a3\u03ac\u03bf \u03a4\u03bf\u03bc\u03ad \u03ba\u03b1\u03b9 \u03a0\u03c1\u03af\u03bd\u03c3\u03b9\u03c0\u03b5 -LocaleNames/el_CY/SV=\u0395\u03bb \u03a3\u03b1\u03bb\u03b2\u03b1\u03b4\u03cc\u03c1 -LocaleNames/el_CY/SY=\u03a3\u03c5\u03c1\u03af\u03b1 -LocaleNames/el_CY/SZ=\u0395\u03c3\u03bf\u03c5\u03b1\u03c4\u03af\u03bd\u03b9 -LocaleNames/el_CY/TC=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a4\u03b5\u03c1\u03ba\u03c2 \u03ba\u03b1\u03b9 \u039a\u03ac\u03b9\u03ba\u03bf\u03c2 -LocaleNames/el_CY/TD=\u03a4\u03c3\u03b1\u03bd\u03c4 -LocaleNames/el_CY/TF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac \u039d\u03cc\u03c4\u03b9\u03b1 \u0395\u03b4\u03ac\u03c6\u03b7 -LocaleNames/el_CY/TG=\u03a4\u03cc\u03b3\u03ba\u03bf -LocaleNames/el_CY/TH=\u03a4\u03b1\u03ca\u03bb\u03ac\u03bd\u03b4\u03b7 -LocaleNames/el_CY/TJ=\u03a4\u03b1\u03c4\u03b6\u03b9\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/TK=\u03a4\u03bf\u03ba\u03b5\u03bb\u03ac\u03bf\u03c5 -LocaleNames/el_CY/TL=\u03a4\u03b9\u03bc\u03cc\u03c1-\u039b\u03ad\u03c3\u03c4\u03b5 -LocaleNames/el_CY/TM=\u03a4\u03bf\u03c5\u03c1\u03ba\u03bc\u03b5\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/TN=\u03a4\u03c5\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el_CY/TO=\u03a4\u03cc\u03bd\u03b3\u03ba\u03b1 -LocaleNames/el_CY/TR=\u03a4\u03bf\u03c5\u03c1\u03ba\u03af\u03b1 -LocaleNames/el_CY/TT=\u03a4\u03c1\u03b9\u03bd\u03b9\u03bd\u03c4\u03ac\u03bd\u03c4 \u03ba\u03b1\u03b9 \u03a4\u03bf\u03bc\u03c0\u03ac\u03b3\u03ba\u03bf -LocaleNames/el_CY/TV=\u03a4\u03bf\u03c5\u03b2\u03b1\u03bb\u03bf\u03cd -LocaleNames/el_CY/TW=\u03a4\u03b1\u03ca\u03b2\u03ac\u03bd -LocaleNames/el_CY/TZ=\u03a4\u03b1\u03bd\u03b6\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/UA=\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03af\u03b1 -LocaleNames/el_CY/UG=\u039f\u03c5\u03b3\u03ba\u03ac\u03bd\u03c4\u03b1 -LocaleNames/el_CY/UM=\u0391\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u039d\u03b7\u03c3\u03af\u03b4\u03b5\u03c2 \u0397\u03a0\u0391 -LocaleNames/el_CY/US=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a0\u03bf\u03bb\u03b9\u03c4\u03b5\u03af\u03b5\u03c2 -LocaleNames/el_CY/UY=\u039f\u03c5\u03c1\u03bf\u03c5\u03b3\u03bf\u03c5\u03ac\u03b7 -LocaleNames/el_CY/UZ=\u039f\u03c5\u03b6\u03bc\u03c0\u03b5\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el_CY/VA=\u0392\u03b1\u03c4\u03b9\u03ba\u03b1\u03bd\u03cc -LocaleNames/el_CY/VC=\u0386\u03b3\u03b9\u03bf\u03c2 \u0392\u03b9\u03ba\u03ad\u03bd\u03c4\u03b9\u03bf\u03c2 \u03ba\u03b1\u03b9 \u0393\u03c1\u03b5\u03bd\u03b1\u03b4\u03af\u03bd\u03b5\u03c2 -LocaleNames/el_CY/VE=\u0392\u03b5\u03bd\u03b5\u03b6\u03bf\u03c5\u03ad\u03bb\u03b1 -LocaleNames/el_CY/VG=\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9 -LocaleNames/el_CY/VI=\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9 -LocaleNames/el_CY/VN=\u0392\u03b9\u03b5\u03c4\u03bd\u03ac\u03bc -LocaleNames/el_CY/VU=\u0392\u03b1\u03bd\u03bf\u03c5\u03ac\u03c4\u03bf\u03c5 -LocaleNames/el_CY/WF=\u0393\u03bf\u03c5\u03ac\u03bb\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03a6\u03bf\u03c5\u03c4\u03bf\u03cd\u03bd\u03b1 -LocaleNames/el_CY/WS=\u03a3\u03b1\u03bc\u03cc\u03b1 -LocaleNames/el_CY/YE=\u03a5\u03b5\u03bc\u03ad\u03bd\u03b7 -LocaleNames/el_CY/YT=\u039c\u03b1\u03b3\u03b9\u03cc\u03c4 -LocaleNames/el_CY/ZA=\u039d\u03cc\u03c4\u03b9\u03b1 \u0391\u03c6\u03c1\u03b9\u03ba\u03ae -LocaleNames/el_CY/ZM=\u0396\u03ac\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el_CY/ZW=\u0396\u03b9\u03bc\u03c0\u03ac\u03bc\u03c0\u03bf\u03c5\u03b5 -CurrencyNames/el_CY/EUR=\u20ac +LocaleNames/el_CY/ar=Αραβικά +LocaleNames/el_CY/be=Λευκορωσικά +LocaleNames/el_CY/bg=Βουλγαρικά +LocaleNames/el_CY/bo=Θιβετιανά +LocaleNames/el_CY/bs=Βοσνιακά +LocaleNames/el_CY/bn=Βεγγαλικά +LocaleNames/el_CY/ca=Καταλανικά +LocaleNames/el_CY/co=Κορσικανικά +LocaleNames/el_CY/cs=Τσεχικά +LocaleNames/el_CY/cy=Ουαλικά +LocaleNames/el_CY/da=Δανικά +LocaleNames/el_CY/de=Γερμανικά +LocaleNames/el_CY/el=Ελληνικά +LocaleNames/el_CY/en=Αγγλικά +LocaleNames/el_CY/es=Ισπανικά +LocaleNames/el_CY/et=Εσθονικά +LocaleNames/el_CY/eu=Βασκικά +LocaleNames/el_CY/fa=Περσικά +LocaleNames/el_CY/fi=Φινλανδικά +LocaleNames/el_CY/fr=Γαλλικά +LocaleNames/el_CY/ga=Ιρλανδικά +LocaleNames/el_CY/gd=Σκωτικά Κελτικά +LocaleNames/el_CY/he=Εβραϊκά +LocaleNames/el_CY/hi=Χίντι +LocaleNames/el_CY/hr=Κροατικά +LocaleNames/el_CY/hu=Ουγγρικά +LocaleNames/el_CY/hy=Αρμενικά +LocaleNames/el_CY/id=Ινδονησιακά +LocaleNames/el_CY/is=Ισλανδικά +LocaleNames/el_CY/it=Ιταλικά +LocaleNames/el_CY/ja=Ιαπωνικά +LocaleNames/el_CY/ka=Γεωργιανά +LocaleNames/el_CY/ko=Κορεατικά +LocaleNames/el_CY/la=Λατινικά +LocaleNames/el_CY/lt=Λιθουανικά +LocaleNames/el_CY/lv=Λετονικά +LocaleNames/el_CY/mk=Σλαβομακεδονικά +LocaleNames/el_CY/mn=Μογγολικά +LocaleNames/el_CY/mt=Μαλτεζικά +LocaleNames/el_CY/nl=Ολλανδικά +LocaleNames/el_CY/no=Νορβηγικά +LocaleNames/el_CY/pl=Πολωνικά +LocaleNames/el_CY/pt=Πορτογαλικά +LocaleNames/el_CY/ro=Ρουμανικά +LocaleNames/el_CY/ru=Ρωσικά +LocaleNames/el_CY/sk=Σλοβακικά +LocaleNames/el_CY/sl=Σλοβενικά +LocaleNames/el_CY/sq=Αλβανικά +LocaleNames/el_CY/sr=Σερβικά +LocaleNames/el_CY/sv=Σουηδικά +LocaleNames/el_CY/th=Ταϊλανδικά +LocaleNames/el_CY/tr=Τουρκικά +LocaleNames/el_CY/uk=Ουκρανικά +LocaleNames/el_CY/vi=Βιετναμικά +LocaleNames/el_CY/yi=Γίντις +LocaleNames/el_CY/zh=Κινεζικά +LocaleNames/el_CY/AD=Ανδόρα +LocaleNames/el_CY/AE=Ηνωμένα Αραβικά Εμιράτα +LocaleNames/el_CY/AF=Αφγανιστάν +LocaleNames/el_CY/AG=Αντίγκουα και Μπαρμπούντα +LocaleNames/el_CY/AI=Ανγκουίλα +LocaleNames/el_CY/AL=Αλβανία +LocaleNames/el_CY/AM=Αρμενία +LocaleNames/el_CY/AO=Αγκόλα +LocaleNames/el_CY/AQ=Ανταρκτική +LocaleNames/el_CY/AR=Αργεντινή +LocaleNames/el_CY/AS=Αμερικανική Σαμόα +LocaleNames/el_CY/AT=Αυστρία +LocaleNames/el_CY/AU=Αυστραλία +LocaleNames/el_CY/AW=Αρούμπα +LocaleNames/el_CY/AX=Νήσοι Όλαντ +LocaleNames/el_CY/AZ=Αζερμπαϊτζάν +LocaleNames/el_CY/BA=Βοσνία - Ερζεγοβίνη +LocaleNames/el_CY/BB=Μπαρμπέιντος +LocaleNames/el_CY/BD=Μπανγκλαντές +LocaleNames/el_CY/BE=Βέλγιο +LocaleNames/el_CY/BF=Μπουρκίνα Φάσο +LocaleNames/el_CY/BG=Βουλγαρία +LocaleNames/el_CY/BH=Μπαχρέιν +LocaleNames/el_CY/BI=Μπουρούντι +LocaleNames/el_CY/BJ=Μπενίν +LocaleNames/el_CY/BM=Βερμούδες +LocaleNames/el_CY/BN=Μπρουνέι +LocaleNames/el_CY/BO=Βολιβία +LocaleNames/el_CY/BR=Βραζιλία +LocaleNames/el_CY/BS=Μπαχάμες +LocaleNames/el_CY/BT=Μπουτάν +LocaleNames/el_CY/BV=Νήσος Μπουβέ +LocaleNames/el_CY/BW=Μποτσουάνα +LocaleNames/el_CY/BY=Λευκορωσία +LocaleNames/el_CY/BZ=Μπελίζ +LocaleNames/el_CY/CA=Καναδάς +LocaleNames/el_CY/CC=Νήσοι Κόκος (Κίλινγκ) +LocaleNames/el_CY/CD=Κονγκό - Κινσάσα +LocaleNames/el_CY/CF=Κεντροαφρικανική Δημοκρατία +LocaleNames/el_CY/CG=Κονγκό - Μπραζαβίλ +LocaleNames/el_CY/CH=Ελβετία +LocaleNames/el_CY/CI=Ακτή Ελεφαντοστού +LocaleNames/el_CY/CK=Νήσοι Κουκ +LocaleNames/el_CY/CL=Χιλή +LocaleNames/el_CY/CM=Καμερούν +LocaleNames/el_CY/CN=Κίνα +LocaleNames/el_CY/CO=Κολομβία +LocaleNames/el_CY/CR=Κόστα Ρίκα +LocaleNames/el_CY/CU=Κούβα +LocaleNames/el_CY/CV=Πράσινο Ακρωτήριο +LocaleNames/el_CY/CX=Νήσος των Χριστουγέννων +LocaleNames/el_CY/CY=Κύπρος +LocaleNames/el_CY/CZ=Τσεχία +LocaleNames/el_CY/DE=Γερμανία +LocaleNames/el_CY/DJ=Τζιμπουτί +LocaleNames/el_CY/DK=Δανία +LocaleNames/el_CY/DM=Ντομίνικα +LocaleNames/el_CY/DO=Δομινικανή Δημοκρατία +LocaleNames/el_CY/DZ=Αλγερία +LocaleNames/el_CY/EC=Ισημερινός +LocaleNames/el_CY/EE=Εσθονία +LocaleNames/el_CY/EG=Αίγυπτος +LocaleNames/el_CY/EH=Δυτική Σαχάρα +LocaleNames/el_CY/ER=Ερυθραία +LocaleNames/el_CY/ES=Ισπανία +LocaleNames/el_CY/ET=Αιθιοπία +LocaleNames/el_CY/FI=Φινλανδία +LocaleNames/el_CY/FJ=Φίτζι +LocaleNames/el_CY/FK=Νήσοι Φόκλαντ +LocaleNames/el_CY/FM=Μικρονησία +LocaleNames/el_CY/FO=Νήσοι Φερόες +LocaleNames/el_CY/FR=Γαλλία +LocaleNames/el_CY/GA=Γκαμπόν +LocaleNames/el_CY/GB=Ηνωμένο Βασίλειο +LocaleNames/el_CY/GD=Γρενάδα +LocaleNames/el_CY/GE=Γεωργία +LocaleNames/el_CY/GF=Γαλλική Γουιάνα +LocaleNames/el_CY/GH=Γκάνα +LocaleNames/el_CY/GI=Γιβραλτάρ +LocaleNames/el_CY/GL=Γροιλανδία +LocaleNames/el_CY/GM=Γκάμπια +LocaleNames/el_CY/GN=Γουινέα +LocaleNames/el_CY/GP=Γουαδελούπη +LocaleNames/el_CY/GQ=Ισημερινή Γουινέα +LocaleNames/el_CY/GS=Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς +LocaleNames/el_CY/GT=Γουατεμάλα +LocaleNames/el_CY/GU=Γκουάμ +LocaleNames/el_CY/GW=Γουινέα Μπισάου +LocaleNames/el_CY/GY=Γουιάνα +LocaleNames/el_CY/HK=Χονγκ Κονγκ ΕΔΠ Κίνας +LocaleNames/el_CY/HM=Νήσοι Χερντ και Μακντόναλντ +LocaleNames/el_CY/HN=Ονδούρα +LocaleNames/el_CY/HR=Κροατία +LocaleNames/el_CY/HT=Αϊτή +LocaleNames/el_CY/HU=Ουγγαρία +LocaleNames/el_CY/ID=Ινδονησία +LocaleNames/el_CY/IE=Ιρλανδία +LocaleNames/el_CY/IL=Ισραήλ +LocaleNames/el_CY/IN=Ινδία +LocaleNames/el_CY/IO=Βρετανικά Εδάφη Ινδικού Ωκεανού +LocaleNames/el_CY/IQ=Ιράκ +LocaleNames/el_CY/IR=Ιράν +LocaleNames/el_CY/IS=Ισλανδία +LocaleNames/el_CY/IT=Ιταλία +LocaleNames/el_CY/JM=Τζαμάικα +LocaleNames/el_CY/JO=Ιορδανία +LocaleNames/el_CY/JP=Ιαπωνία +LocaleNames/el_CY/KE=Κένυα +LocaleNames/el_CY/KG=Κιργιστάν +LocaleNames/el_CY/KH=Καμπότζη +LocaleNames/el_CY/KI=Κιριμπάτι +LocaleNames/el_CY/KM=Κομόρες +LocaleNames/el_CY/KN=Σεν Κιτς και Νέβις +LocaleNames/el_CY/KP=Βόρεια Κορέα +LocaleNames/el_CY/KR=Νότια Κορέα +LocaleNames/el_CY/KW=Κουβέιτ +LocaleNames/el_CY/KY=Νήσοι Κέιμαν +LocaleNames/el_CY/KZ=Καζακστάν +LocaleNames/el_CY/LA=Λάος +LocaleNames/el_CY/LB=Λίβανος +LocaleNames/el_CY/LC=Αγία Λουκία +LocaleNames/el_CY/LI=Λιχτενστάιν +LocaleNames/el_CY/LK=Σρι Λάνκα +LocaleNames/el_CY/LR=Λιβερία +LocaleNames/el_CY/LS=Λεσότο +LocaleNames/el_CY/LT=Λιθουανία +LocaleNames/el_CY/LU=Λουξεμβούργο +LocaleNames/el_CY/LV=Λετονία +LocaleNames/el_CY/LY=Λιβύη +LocaleNames/el_CY/MA=Μαρόκο +LocaleNames/el_CY/MC=Μονακό +LocaleNames/el_CY/MD=Μολδαβία +LocaleNames/el_CY/MG=Μαδαγασκάρη +LocaleNames/el_CY/MH=Νήσοι Μάρσαλ +LocaleNames/el_CY/MK=Βόρεια Μακεδονία +LocaleNames/el_CY/ML=Μάλι +LocaleNames/el_CY/MM=Μιανμάρ (Βιρμανία) +LocaleNames/el_CY/MN=Μογγολία +LocaleNames/el_CY/MO=Μακάο ΕΔΠ Κίνας +LocaleNames/el_CY/MP=Νήσοι Βόρειες Μαριάνες +LocaleNames/el_CY/MQ=Μαρτινίκα +LocaleNames/el_CY/MR=Μαυριτανία +LocaleNames/el_CY/MS=Μονσεράτ +LocaleNames/el_CY/MT=Μάλτα +LocaleNames/el_CY/MU=Μαυρίκιος +LocaleNames/el_CY/MV=Μαλδίβες +LocaleNames/el_CY/MW=Μαλάουι +LocaleNames/el_CY/MX=Μεξικό +LocaleNames/el_CY/MY=Μαλαισία +LocaleNames/el_CY/MZ=Μοζαμβίκη +LocaleNames/el_CY/NA=Ναμίμπια +LocaleNames/el_CY/NC=Νέα Καληδονία +LocaleNames/el_CY/NE=Νίγηρας +LocaleNames/el_CY/NF=Νήσος Νόρφολκ +LocaleNames/el_CY/NG=Νιγηρία +LocaleNames/el_CY/NI=Νικαράγουα +LocaleNames/el_CY/NL=Κάτω Χώρες +LocaleNames/el_CY/NO=Νορβηγία +LocaleNames/el_CY/NP=Νεπάλ +LocaleNames/el_CY/NR=Ναουρού +LocaleNames/el_CY/NU=Νιούε +LocaleNames/el_CY/NZ=Νέα Ζηλανδία +LocaleNames/el_CY/OM=Ομάν +LocaleNames/el_CY/PA=Παναμάς +LocaleNames/el_CY/PE=Περού +LocaleNames/el_CY/PF=Γαλλική Πολυνησία +LocaleNames/el_CY/PG=Παπούα Νέα Γουινέα +LocaleNames/el_CY/PH=Φιλιππίνες +LocaleNames/el_CY/PK=Πακιστάν +LocaleNames/el_CY/PL=Πολωνία +LocaleNames/el_CY/PM=Σεν Πιερ και Μικελόν +LocaleNames/el_CY/PN=Νήσοι Πίτκερν +LocaleNames/el_CY/PR=Πουέρτο Ρίκο +LocaleNames/el_CY/PS=Παλαιστινιακά Εδάφη +LocaleNames/el_CY/PT=Πορτογαλία +LocaleNames/el_CY/PW=Παλάου +LocaleNames/el_CY/PY=Παραγουάη +LocaleNames/el_CY/QA=Κατάρ +LocaleNames/el_CY/RE=Ρεϊνιόν +LocaleNames/el_CY/RO=Ρουμανία +LocaleNames/el_CY/RU=Ρωσία +LocaleNames/el_CY/RW=Ρουάντα +LocaleNames/el_CY/SA=Σαουδική Αραβία +LocaleNames/el_CY/SB=Νήσοι Σολομώντος +LocaleNames/el_CY/SC=Σεϋχέλλες +LocaleNames/el_CY/SD=Σουδάν +LocaleNames/el_CY/SE=Σουηδία +LocaleNames/el_CY/SG=Σιγκαπούρη +LocaleNames/el_CY/SH=Αγία Ελένη +LocaleNames/el_CY/SI=Σλοβενία +LocaleNames/el_CY/SJ=Σβάλμπαρντ και Γιαν Μαγιέν +LocaleNames/el_CY/SK=Σλοβακία +LocaleNames/el_CY/SL=Σιέρα Λεόνε +LocaleNames/el_CY/SM=Άγιος Μαρίνος +LocaleNames/el_CY/SN=Σενεγάλη +LocaleNames/el_CY/SO=Σομαλία +LocaleNames/el_CY/SR=Σουρινάμ +LocaleNames/el_CY/ST=Σάο Τομέ και Πρίνσιπε +LocaleNames/el_CY/SV=Ελ Σαλβαδόρ +LocaleNames/el_CY/SY=Συρία +LocaleNames/el_CY/SZ=Εσουατίνι +LocaleNames/el_CY/TC=Νήσοι Τερκς και Κάικος +LocaleNames/el_CY/TD=Τσαντ +LocaleNames/el_CY/TF=Γαλλικά Νότια Εδάφη +LocaleNames/el_CY/TG=Τόγκο +LocaleNames/el_CY/TH=Ταϊλάνδη +LocaleNames/el_CY/TJ=Τατζικιστάν +LocaleNames/el_CY/TK=Τοκελάου +LocaleNames/el_CY/TL=Τιμόρ-Λέστε +LocaleNames/el_CY/TM=Τουρκμενιστάν +LocaleNames/el_CY/TN=Τυνησία +LocaleNames/el_CY/TO=Τόνγκα +LocaleNames/el_CY/TR=Τουρκία +LocaleNames/el_CY/TT=Τρινιντάντ και Τομπάγκο +LocaleNames/el_CY/TV=Τουβαλού +LocaleNames/el_CY/TW=Ταϊβάν +LocaleNames/el_CY/TZ=Τανζανία +LocaleNames/el_CY/UA=Ουκρανία +LocaleNames/el_CY/UG=Ουγκάντα +LocaleNames/el_CY/UM=Απομακρυσμένες Νησίδες ΗΠΑ +LocaleNames/el_CY/US=Ηνωμένες Πολιτείες +LocaleNames/el_CY/UY=Ουρουγουάη +LocaleNames/el_CY/UZ=Ουζμπεκιστάν +LocaleNames/el_CY/VA=Βατικανό +LocaleNames/el_CY/VC=Άγιος Βικέντιος και Γρεναδίνες +LocaleNames/el_CY/VE=Βενεζουέλα +LocaleNames/el_CY/VG=Βρετανικές Παρθένες Νήσοι +LocaleNames/el_CY/VI=Αμερικανικές Παρθένες Νήσοι +LocaleNames/el_CY/VN=Βιετνάμ +LocaleNames/el_CY/VU=Βανουάτου +LocaleNames/el_CY/WF=Γουάλις και Φουτούνα +LocaleNames/el_CY/WS=Σαμόα +LocaleNames/el_CY/YE=Υεμένη +LocaleNames/el_CY/YT=Μαγιότ +LocaleNames/el_CY/ZA=Νότια Αφρική +LocaleNames/el_CY/ZM=Ζάμπια +LocaleNames/el_CY/ZW=Ζιμπάμπουε +CurrencyNames/el_CY/EUR=€ #ms_MY and ms FormatData/ms_MY/latn.NumberPatterns/0=#,##0.### -FormatData/ms_MY/latn.NumberPatterns/1=\u00a4#,##0.00 +FormatData/ms_MY/latn.NumberPatterns/1=¤#,##0.00 FormatData/ms_MY/latn.NumberPatterns/2=#,##0% -FormatData/ms_MY/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/ms_MY/TimePatterns/1=h:mm:ss\u202fa z -FormatData/ms_MY/TimePatterns/2=h:mm:ss\u202fa -FormatData/ms_MY/TimePatterns/3=h:mm\u202fa +FormatData/ms_MY/TimePatterns/0=h:mm:ss a zzzz +FormatData/ms_MY/TimePatterns/1=h:mm:ss a z +FormatData/ms_MY/TimePatterns/2=h:mm:ss a +FormatData/ms_MY/TimePatterns/3=h:mm a FormatData/ms_MY/DatePatterns/0=EEEE, d MMMM y FormatData/ms_MY/DatePatterns/1=d MMMM y FormatData/ms_MY/DatePatterns/2=d MMM y @@ -3100,7 +3100,7 @@ LocaleNames/ms/CC=Kepulauan Cocos (Keeling) LocaleNames/ms/CD=Congo - Kinshasa LocaleNames/ms/CF=Republik Afrika Tengah -LocaleNames/ms/CI=Cote d\u2019Ivoire +LocaleNames/ms/CI=Cote d’Ivoire LocaleNames/ms/CL=Chile LocaleNames/ms/CM=Cameroon LocaleNames/ms/CN=China @@ -3166,68 +3166,68 @@ FormatData/es_US/Eras/0=a.C. FormatData/es_US/Eras/1=d.C. FormatData/es_US/latn.NumberPatterns/0=#,##0.### -FormatData/es_US/latn.NumberPatterns/1=\u00a4#,##0.00 -FormatData/es_US/latn.NumberPatterns/2=#,##0\u00a0% -FormatData/es_US/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/es_US/TimePatterns/1=h:mm:ss\u202fa z -FormatData/es_US/TimePatterns/2=h:mm:ss\u202fa -FormatData/es_US/TimePatterns/3=h:mm\u202fa +FormatData/es_US/latn.NumberPatterns/1=¤#,##0.00 +FormatData/es_US/latn.NumberPatterns/2=#,##0 % +FormatData/es_US/TimePatterns/0=h:mm:ss a zzzz +FormatData/es_US/TimePatterns/1=h:mm:ss a z +FormatData/es_US/TimePatterns/2=h:mm:ss a +FormatData/es_US/TimePatterns/3=h:mm a FormatData/es_US/DatePatterns/0=EEEE, d 'de' MMMM 'de' y FormatData/es_US/DatePatterns/1=d 'de' MMMM 'de' y FormatData/es_US/DatePatterns/2=d MMM y FormatData/es_US/DatePatterns/3=d/M/y FormatData/es_US/DateTimePatterns/0={1}, {0} LocaleNames/es_US/aa=afar -LocaleNames/es_US/ae=av\u00e9stico +LocaleNames/es_US/ae=avéstico LocaleNames/es_US/ak=akan -LocaleNames/es_US/an=aragon\u00e9s +LocaleNames/es_US/an=aragonés LocaleNames/es_US/av=avar LocaleNames/es_US/ay=aimara LocaleNames/es_US/az=azerbaiyano LocaleNames/es_US/ba=baskir LocaleNames/es_US/bm=bambara -LocaleNames/es_US/bn=bengal\u00ed +LocaleNames/es_US/bn=bengalí LocaleNames/es_US/bs=bosnio LocaleNames/es_US/ce=checheno LocaleNames/es_US/ch=chamorro LocaleNames/es_US/cr=cree -LocaleNames/es_US/cu=eslavo eclesi\u00e1stico +LocaleNames/es_US/cu=eslavo eclesiástico LocaleNames/es_US/cv=chuvasio LocaleNames/es_US/dv=divehi -LocaleNames/es_US/ee=ew\u00e9 +LocaleNames/es_US/ee=ewé LocaleNames/es_US/eu=euskera LocaleNames/es_US/ff=fula -LocaleNames/es_US/fo=fero\u00e9s -LocaleNames/es_US/fy=fris\u00f3n occidental -LocaleNames/es_US/gu=gurayat\u00ed -LocaleNames/es_US/gv=man\u00e9s +LocaleNames/es_US/fo=feroés +LocaleNames/es_US/fy=frisón occidental +LocaleNames/es_US/gu=gurayatí +LocaleNames/es_US/gv=manés LocaleNames/es_US/hi=hindi LocaleNames/es_US/ho=hiri motu LocaleNames/es_US/ht=criollo haitiano LocaleNames/es_US/hz=herero LocaleNames/es_US/ie=interlingue LocaleNames/es_US/ig=igbo -LocaleNames/es_US/ii=yi de Sichu\u00e1n +LocaleNames/es_US/ii=yi de Sichuán LocaleNames/es_US/io=ido -LocaleNames/es_US/jv=javan\u00e9s +LocaleNames/es_US/jv=javanés LocaleNames/es_US/kg=kongo LocaleNames/es_US/ki=kikuyu LocaleNames/es_US/kj=kuanyama LocaleNames/es_US/kk=kazajo LocaleNames/es_US/km=jemer -LocaleNames/es_US/kn=canar\u00e9s +LocaleNames/es_US/kn=canarés LocaleNames/es_US/kr=kanuri LocaleNames/es_US/ks=cachemiro LocaleNames/es_US/ku=kurdo LocaleNames/es_US/kv=komi -LocaleNames/es_US/kw=c\u00f3rnico -LocaleNames/es_US/ky=kirgu\u00eds -LocaleNames/es_US/lb=luxemburgu\u00e9s +LocaleNames/es_US/kw=córnico +LocaleNames/es_US/ky=kirguís +LocaleNames/es_US/lb=luxemburgués LocaleNames/es_US/lg=ganda -LocaleNames/es_US/li=limburgu\u00e9s +LocaleNames/es_US/li=limburgués LocaleNames/es_US/lu=luba-katanga -LocaleNames/es_US/mh=marshal\u00e9s -LocaleNames/es_US/mr=marat\u00ed +LocaleNames/es_US/mh=marshalés +LocaleNames/es_US/mr=maratí LocaleNames/es_US/nb=noruego bokmal LocaleNames/es_US/nd=ndebele del norte LocaleNames/es_US/ng=ndonga @@ -3237,7 +3237,7 @@ LocaleNames/es_US/ny=nyanja LocaleNames/es_US/oc=occitano LocaleNames/es_US/oj=ojibwa -LocaleNames/es_US/os=os\u00e9tico +LocaleNames/es_US/os=osético LocaleNames/es_US/pi=pali LocaleNames/es_US/rm=romanche LocaleNames/es_US/rn=kirundi @@ -3249,7 +3249,7 @@ LocaleNames/es_US/sn=shona LocaleNames/es_US/ss=siswati LocaleNames/es_US/st=sesotho del sur -LocaleNames/es_US/su=sundan\u00e9s +LocaleNames/es_US/su=sundanés LocaleNames/es_US/sw=swahili LocaleNames/es_US/tg=tayiko LocaleNames/es_US/tn=setsuana @@ -3260,7 +3260,7 @@ LocaleNames/es_US/uk=ucraniano LocaleNames/es_US/uz=uzbeko LocaleNames/es_US/ve=venda -LocaleNames/es_US/wa=val\u00f3n +LocaleNames/es_US/wa=valón LocaleNames/es_US/za=zhuang LocaleNames/es_US/BA=Bosnia y Herzegovina LocaleNames/es_US/CC=Islas Cocos @@ -3270,186 +3270,186 @@ LocaleNames/es_US/FK=Islas Malvinas LocaleNames/es_US/HK=RAE de Hong Kong (China) LocaleNames/es_US/KM=Comoras -LocaleNames/es_US/LC=Santa Luc\u00eda +LocaleNames/es_US/LC=Santa Lucía LocaleNames/es_US/LS=Lesoto LocaleNames/es_US/MO=RAE de Macao (China) LocaleNames/es_US/MW=Malaui -LocaleNames/es_US/NL=Pa\u00edses Bajos +LocaleNames/es_US/NL=Países Bajos LocaleNames/es_US/NU=Niue -LocaleNames/es_US/PG=Pap\u00faa Nueva Guinea -LocaleNames/es_US/PK=Pakist\u00e1n +LocaleNames/es_US/PG=Papúa Nueva Guinea +LocaleNames/es_US/PK=Pakistán LocaleNames/es_US/PN=Islas Pitcairn LocaleNames/es_US/PS=Territorios Palestinos LocaleNames/es_US/PW=Palaos -LocaleNames/es_US/RO=Ruman\u00eda -LocaleNames/es_US/SA=Arabia Saud\u00ed +LocaleNames/es_US/RO=Rumanía +LocaleNames/es_US/SA=Arabia Saudí LocaleNames/es_US/SH=Santa Elena LocaleNames/es_US/TF=Territorios Australes Franceses LocaleNames/es_US/TK=Tokelau LocaleNames/es_US/TT=Trinidad y Tobago -LocaleNames/es_US/VI=Islas V\u00edrgenes de EE. UU. +LocaleNames/es_US/VI=Islas Vírgenes de EE. UU. CurrencyNames/es_US/USD=$ #bug 4400849 LocaleNames/pt/aa=afar -LocaleNames/pt/ab=abc\u00e1zio -LocaleNames/pt/ae=av\u00e9stico -LocaleNames/pt/af=afric\u00e2ner -LocaleNames/pt/am=am\u00e1rico -LocaleNames/pt/an=aragon\u00eas -LocaleNames/pt/ar=\u00e1rabe -LocaleNames/pt/as=assam\u00eas -LocaleNames/pt/av=av\u00e1rico -LocaleNames/pt/ay=aimar\u00e1 +LocaleNames/pt/ab=abcázio +LocaleNames/pt/ae=avéstico +LocaleNames/pt/af=africâner +LocaleNames/pt/am=amárico +LocaleNames/pt/an=aragonês +LocaleNames/pt/ar=árabe +LocaleNames/pt/as=assamês +LocaleNames/pt/av=avárico +LocaleNames/pt/ay=aimará LocaleNames/pt/az=azerbaijano LocaleNames/pt/ba=bashkir LocaleNames/pt/be=bielorrusso -LocaleNames/pt/bg=b\u00falgaro -LocaleNames/pt/bi=bislam\u00e1 +LocaleNames/pt/bg=búlgaro +LocaleNames/pt/bi=bislamá LocaleNames/pt/bm=bambara LocaleNames/pt/bn=bengali LocaleNames/pt/bo=tibetano -LocaleNames/pt/br=bret\u00e3o -LocaleNames/pt/bs=b\u00f3snio -LocaleNames/pt/ca=catal\u00e3o +LocaleNames/pt/br=bretão +LocaleNames/pt/bs=bósnio +LocaleNames/pt/ca=catalão LocaleNames/pt/ce=checheno LocaleNames/pt/ch=chamorro LocaleNames/pt/co=corso LocaleNames/pt/cr=cree LocaleNames/pt/cs=tcheco -LocaleNames/pt/cu=eslavo eclesi\u00e1stico +LocaleNames/pt/cu=eslavo eclesiástico LocaleNames/pt/cv=tchuvache -LocaleNames/pt/cy=gal\u00eas -LocaleNames/pt/da=dinamarqu\u00eas -LocaleNames/pt/de=alem\u00e3o +LocaleNames/pt/cy=galês +LocaleNames/pt/da=dinamarquês +LocaleNames/pt/de=alemão LocaleNames/pt/dv=divehi LocaleNames/pt/dz=dzonga LocaleNames/pt/ee=ewe LocaleNames/pt/el=grego -LocaleNames/pt/en=ingl\u00eas +LocaleNames/pt/en=inglês LocaleNames/pt/eo=esperanto LocaleNames/pt/es=espanhol LocaleNames/pt/et=estoniano LocaleNames/pt/eu=basco LocaleNames/pt/fa=persa LocaleNames/pt/ff=fula -LocaleNames/pt/fi=finland\u00eas +LocaleNames/pt/fi=finlandês LocaleNames/pt/fj=fijiano -LocaleNames/pt/fo=fero\u00eas -LocaleNames/pt/fr=franc\u00eas -LocaleNames/pt/fy=fr\u00edsio ocidental -LocaleNames/pt/ga=irland\u00eas -LocaleNames/pt/gd=ga\u00e9lico escoc\u00eas +LocaleNames/pt/fo=feroês +LocaleNames/pt/fr=francês +LocaleNames/pt/fy=frísio ocidental +LocaleNames/pt/ga=irlandês +LocaleNames/pt/gd=gaélico escocês LocaleNames/pt/gl=galego LocaleNames/pt/gn=guarani LocaleNames/pt/gu=guzerate LocaleNames/pt/gv=manx -LocaleNames/pt/ha=hau\u00e7\u00e1 +LocaleNames/pt/ha=hauçá LocaleNames/pt/he=hebraico -LocaleNames/pt/hi=h\u00edndi +LocaleNames/pt/hi=híndi LocaleNames/pt/ho=hiri motu LocaleNames/pt/hr=croata LocaleNames/pt/ht=haitiano -LocaleNames/pt/hu=h\u00fangaro -LocaleNames/pt/hy=arm\u00eanio +LocaleNames/pt/hu=húngaro +LocaleNames/pt/hy=armênio LocaleNames/pt/hz=herero -LocaleNames/pt/ia=interl\u00edngua -LocaleNames/pt/id=indon\u00e9sio +LocaleNames/pt/ia=interlíngua +LocaleNames/pt/id=indonésio LocaleNames/pt/ie=interlingue LocaleNames/pt/ig=igbo LocaleNames/pt/ii=sichuan yi LocaleNames/pt/io=ido -LocaleNames/pt/is=island\u00eas +LocaleNames/pt/is=islandês LocaleNames/pt/it=italiano LocaleNames/pt/iu=inuktitut -LocaleNames/pt/ja=japon\u00eas +LocaleNames/pt/ja=japonês LocaleNames/pt/ka=georgiano -LocaleNames/pt/kg=congol\u00eas +LocaleNames/pt/kg=congolês LocaleNames/pt/ki=quicuio LocaleNames/pt/kj=cuanhama LocaleNames/pt/kk=cazaque -LocaleNames/pt/kl=groenland\u00eas +LocaleNames/pt/kl=groenlandês LocaleNames/pt/km=khmer LocaleNames/pt/kn=canarim LocaleNames/pt/ko=coreano -LocaleNames/pt/kr=can\u00fari +LocaleNames/pt/kr=canúri LocaleNames/pt/ks=caxemira LocaleNames/pt/ku=curdo LocaleNames/pt/kv=komi -LocaleNames/pt/kw=c\u00f3rnico +LocaleNames/pt/kw=córnico LocaleNames/pt/ky=quirguiz LocaleNames/pt/la=latim -LocaleNames/pt/lb=luxemburgu\u00eas +LocaleNames/pt/lb=luxemburguês LocaleNames/pt/lg=luganda -LocaleNames/pt/li=limburgu\u00eas +LocaleNames/pt/li=limburguês LocaleNames/pt/ln=lingala LocaleNames/pt/lo=laosiano LocaleNames/pt/lt=lituano LocaleNames/pt/lu=luba-catanga -LocaleNames/pt/lv=let\u00e3o +LocaleNames/pt/lv=letão LocaleNames/pt/mg=malgaxe -LocaleNames/pt/mh=marshal\u00eas +LocaleNames/pt/mh=marshalês LocaleNames/pt/mi=maori -LocaleNames/pt/mk=maced\u00f4nio +LocaleNames/pt/mk=macedônio LocaleNames/pt/ml=malaiala LocaleNames/pt/mn=mongol LocaleNames/pt/mr=marati LocaleNames/pt/ms=malaio -LocaleNames/pt/mt=malt\u00eas -LocaleNames/pt/my=birman\u00eas +LocaleNames/pt/mt=maltês +LocaleNames/pt/my=birmanês LocaleNames/pt/na=nauruano -LocaleNames/pt/nb=bokm\u00e5l noruegu\u00eas +LocaleNames/pt/nb=bokmål norueguês LocaleNames/pt/nd=ndebele do norte -LocaleNames/pt/ne=nepal\u00eas +LocaleNames/pt/ne=nepalês LocaleNames/pt/ng=dongo -LocaleNames/pt/nl=holand\u00eas -LocaleNames/pt/nn=nynorsk noruegu\u00eas -LocaleNames/pt/no=noruegu\u00eas +LocaleNames/pt/nl=holandês +LocaleNames/pt/nn=nynorsk norueguês +LocaleNames/pt/no=norueguês LocaleNames/pt/nr=ndebele do sul LocaleNames/pt/nv=navajo LocaleNames/pt/ny=nianja -LocaleNames/pt/oc=occit\u00e2nico +LocaleNames/pt/oc=occitânico LocaleNames/pt/oj=ojibwa LocaleNames/pt/om=oromo -LocaleNames/pt/or=ori\u00e1 +LocaleNames/pt/or=oriá LocaleNames/pt/os=osseto LocaleNames/pt/pa=panjabi -LocaleNames/pt/pi=p\u00e1li -LocaleNames/pt/pl=polon\u00eas +LocaleNames/pt/pi=páli +LocaleNames/pt/pl=polonês LocaleNames/pt/ps=pashto -LocaleNames/pt/pt=portugu\u00eas -LocaleNames/pt/qu=qu\u00edchua +LocaleNames/pt/pt=português +LocaleNames/pt/qu=quíchua LocaleNames/pt/rm=romanche LocaleNames/pt/rn=rundi LocaleNames/pt/ro=romeno LocaleNames/pt/ru=russo LocaleNames/pt/rw=quiniaruanda -LocaleNames/pt/sa=s\u00e2nscrito +LocaleNames/pt/sa=sânscrito LocaleNames/pt/sc=sardo LocaleNames/pt/sd=sindi LocaleNames/pt/se=sami setentrional LocaleNames/pt/sg=sango -LocaleNames/pt/si=cingal\u00eas +LocaleNames/pt/si=cingalês LocaleNames/pt/sk=eslovaco LocaleNames/pt/sl=esloveno LocaleNames/pt/so=somali -LocaleNames/pt/sq=alban\u00eas -LocaleNames/pt/sr=s\u00e9rvio -LocaleNames/pt/ss=su\u00e1zi +LocaleNames/pt/sq=albanês +LocaleNames/pt/sr=sérvio +LocaleNames/pt/ss=suázi LocaleNames/pt/st=soto do sul -LocaleNames/pt/su=sundan\u00eas +LocaleNames/pt/su=sundanês LocaleNames/pt/sv=sueco -LocaleNames/pt/sw=sua\u00edli -LocaleNames/pt/ta=t\u00e2mil -LocaleNames/pt/te=t\u00e9lugo +LocaleNames/pt/sw=suaíli +LocaleNames/pt/ta=tâmil +LocaleNames/pt/te=télugo LocaleNames/pt/tg=tadjique -LocaleNames/pt/th=tailand\u00eas -LocaleNames/pt/ti=tigr\u00ednia +LocaleNames/pt/th=tailandês +LocaleNames/pt/ti=tigrínia LocaleNames/pt/tk=turcomeno LocaleNames/pt/tn=tswana -LocaleNames/pt/to=tongan\u00eas +LocaleNames/pt/to=tonganês LocaleNames/pt/tr=turco LocaleNames/pt/ts=tsonga -LocaleNames/pt/tt=t\u00e1rtaro +LocaleNames/pt/tt=tártaro LocaleNames/pt/tw=twi LocaleNames/pt/ty=taitiano LocaleNames/pt/ug=uigur @@ -3459,628 +3459,628 @@ LocaleNames/pt/ve=venda LocaleNames/pt/vi=vietnamita LocaleNames/pt/vo=volapuque -LocaleNames/pt/wa=val\u00e3o +LocaleNames/pt/wa=valão LocaleNames/pt/wo=uolofe LocaleNames/pt/xh=xhosa -LocaleNames/pt/yi=i\u00eddiche -LocaleNames/pt/yo=iorub\u00e1 +LocaleNames/pt/yi=iídiche +LocaleNames/pt/yo=iorubá LocaleNames/pt/za=zhuang -LocaleNames/pt/zh=chin\u00eas +LocaleNames/pt/zh=chinês LocaleNames/pt/zu=zulu -LocaleNames/pt/AE=Emirados \u00c1rabes Unidos -LocaleNames/pt/AF=Afeganist\u00e3o -LocaleNames/pt/AG=Ant\u00edgua e Barbuda -LocaleNames/pt/AL=Alb\u00e2nia -LocaleNames/pt/AM=Arm\u00eania -LocaleNames/pt/AQ=Ant\u00e1rtida +LocaleNames/pt/AE=Emirados Árabes Unidos +LocaleNames/pt/AF=Afeganistão +LocaleNames/pt/AG=Antígua e Barbuda +LocaleNames/pt/AL=Albânia +LocaleNames/pt/AM=Armênia +LocaleNames/pt/AQ=Antártida LocaleNames/pt/AS=Samoa Americana -LocaleNames/pt/AT=\u00c1ustria -LocaleNames/pt/AU=Austr\u00e1lia -LocaleNames/pt/AZ=Azerbaij\u00e3o -LocaleNames/pt/BA=B\u00f3snia e Herzegovina -LocaleNames/pt/BE=B\u00e9lgica +LocaleNames/pt/AT=Áustria +LocaleNames/pt/AU=Austrália +LocaleNames/pt/AZ=Azerbaijão +LocaleNames/pt/BA=Bósnia e Herzegovina +LocaleNames/pt/BE=Bélgica LocaleNames/pt/BF=Burquina Faso -LocaleNames/pt/BG=Bulg\u00e1ria +LocaleNames/pt/BG=Bulgária LocaleNames/pt/BH=Barein LocaleNames/pt/BM=Bermudas -LocaleNames/pt/BO=Bol\u00edvia +LocaleNames/pt/BO=Bolívia LocaleNames/pt/BR=Brasil -LocaleNames/pt/BT=But\u00e3o +LocaleNames/pt/BT=Butão LocaleNames/pt/BV=Ilha Bouvet LocaleNames/pt/BW=Botsuana -LocaleNames/pt/CA=Canad\u00e1 +LocaleNames/pt/CA=Canadá LocaleNames/pt/CC=Ilhas Cocos (Keeling) LocaleNames/pt/CD=Congo - Kinshasa -LocaleNames/pt/CF=Rep\u00fablica Centro-Africana -LocaleNames/pt/CH=Su\u00ed\u00e7a +LocaleNames/pt/CF=República Centro-Africana +LocaleNames/pt/CH=Suíça LocaleNames/pt/CI=Costa do Marfim LocaleNames/pt/CK=Ilhas Cook -LocaleNames/pt/CM=Camar\u00f5es -LocaleNames/pt/CO=Col\u00f4mbia +LocaleNames/pt/CM=Camarões +LocaleNames/pt/CO=Colômbia LocaleNames/pt/CV=Cabo Verde LocaleNames/pt/CX=Ilha Christmas LocaleNames/pt/CY=Chipre -LocaleNames/pt/CZ=Tch\u00e9quia +LocaleNames/pt/CZ=Tchéquia LocaleNames/pt/DE=Alemanha LocaleNames/pt/DJ=Djibuti LocaleNames/pt/DK=Dinamarca -LocaleNames/pt/DO=Rep\u00fablica Dominicana -LocaleNames/pt/DZ=Arg\u00e9lia +LocaleNames/pt/DO=República Dominicana +LocaleNames/pt/DZ=Argélia LocaleNames/pt/EC=Equador -LocaleNames/pt/EE=Est\u00f4nia +LocaleNames/pt/EE=Estônia LocaleNames/pt/EG=Egito LocaleNames/pt/EH=Saara Ocidental LocaleNames/pt/ER=Eritreia LocaleNames/pt/ES=Espanha -LocaleNames/pt/ET=Eti\u00f3pia -LocaleNames/pt/FI=Finl\u00e2ndia +LocaleNames/pt/ET=Etiópia +LocaleNames/pt/FI=Finlândia LocaleNames/pt/FK=Ilhas Malvinas -LocaleNames/pt/FM=Micron\u00e9sia -LocaleNames/pt/FO=Ilhas Faro\u00e9 -LocaleNames/pt/FR=Fran\u00e7a -LocaleNames/pt/GA=Gab\u00e3o +LocaleNames/pt/FM=Micronésia +LocaleNames/pt/FO=Ilhas Faroé +LocaleNames/pt/FR=França +LocaleNames/pt/GA=Gabão LocaleNames/pt/GB=Reino Unido LocaleNames/pt/GD=Granada -LocaleNames/pt/GE=Ge\u00f3rgia +LocaleNames/pt/GE=Geórgia LocaleNames/pt/GF=Guiana Francesa LocaleNames/pt/GH=Gana -LocaleNames/pt/GL=Groenl\u00e2ndia -LocaleNames/pt/GM=G\u00e2mbia -LocaleNames/pt/GN=Guin\u00e9 +LocaleNames/pt/GL=Groenlândia +LocaleNames/pt/GM=Gâmbia +LocaleNames/pt/GN=Guiné LocaleNames/pt/GP=Guadalupe -LocaleNames/pt/GQ=Guin\u00e9 Equatorial -LocaleNames/pt/GR=Gr\u00e9cia -LocaleNames/pt/GS=Ilhas Ge\u00f3rgia do Sul e Sandwich do Sul -LocaleNames/pt/GW=Guin\u00e9-Bissau +LocaleNames/pt/GQ=Guiné Equatorial +LocaleNames/pt/GR=Grécia +LocaleNames/pt/GS=Ilhas Geórgia do Sul e Sandwich do Sul +LocaleNames/pt/GW=Guiné-Bissau LocaleNames/pt/GY=Guiana LocaleNames/pt/HK=Hong Kong, RAE da China LocaleNames/pt/HM=Ilhas Heard e McDonald -LocaleNames/pt/HR=Cro\u00e1cia +LocaleNames/pt/HR=Croácia LocaleNames/pt/HU=Hungria -LocaleNames/pt/ID=Indon\u00e9sia +LocaleNames/pt/ID=Indonésia LocaleNames/pt/IE=Irlanda -LocaleNames/pt/IN=\u00cdndia -LocaleNames/pt/IO=Territ\u00f3rio Brit\u00e2nico do Oceano \u00cdndico +LocaleNames/pt/IN=Índia +LocaleNames/pt/IO=Território Britânico do Oceano Índico LocaleNames/pt/IQ=Iraque -LocaleNames/pt/IR=Ir\u00e3 -LocaleNames/pt/IS=Isl\u00e2ndia -LocaleNames/pt/IT=It\u00e1lia -LocaleNames/pt/JO=Jord\u00e2nia -LocaleNames/pt/JP=Jap\u00e3o -LocaleNames/pt/KE=Qu\u00eania -LocaleNames/pt/KG=Quirguist\u00e3o +LocaleNames/pt/IR=Irã +LocaleNames/pt/IS=Islândia +LocaleNames/pt/IT=Itália +LocaleNames/pt/JO=Jordânia +LocaleNames/pt/JP=Japão +LocaleNames/pt/KE=Quênia +LocaleNames/pt/KG=Quirguistão LocaleNames/pt/KH=Camboja LocaleNames/pt/KI=Quiribati LocaleNames/pt/KM=Comores -LocaleNames/pt/KN=S\u00e3o Crist\u00f3v\u00e3o e N\u00e9vis +LocaleNames/pt/KN=São Cristóvão e Névis LocaleNames/pt/KP=Coreia do Norte LocaleNames/pt/KR=Coreia do Sul LocaleNames/pt/KY=Ilhas Cayman -LocaleNames/pt/KZ=Cazaquist\u00e3o +LocaleNames/pt/KZ=Cazaquistão LocaleNames/pt/LA=Laos -LocaleNames/pt/LB=L\u00edbano -LocaleNames/pt/LC=Santa L\u00facia -LocaleNames/pt/LR=Lib\u00e9ria +LocaleNames/pt/LB=Líbano +LocaleNames/pt/LC=Santa Lúcia +LocaleNames/pt/LR=Libéria LocaleNames/pt/LS=Lesoto -LocaleNames/pt/LT=Litu\u00e2nia +LocaleNames/pt/LT=Lituânia LocaleNames/pt/LU=Luxemburgo -LocaleNames/pt/LV=Let\u00f4nia -LocaleNames/pt/LY=L\u00edbia +LocaleNames/pt/LV=Letônia +LocaleNames/pt/LY=Líbia LocaleNames/pt/MA=Marrocos -LocaleNames/pt/MC=M\u00f4naco -LocaleNames/pt/MD=Mold\u00e1via +LocaleNames/pt/MC=Mônaco +LocaleNames/pt/MD=Moldávia LocaleNames/pt/MH=Ilhas Marshall -LocaleNames/pt/MK=Maced\u00f4nia do Norte -LocaleNames/pt/MM=Mianmar (Birm\u00e2nia) -LocaleNames/pt/MN=Mong\u00f3lia +LocaleNames/pt/MK=Macedônia do Norte +LocaleNames/pt/MM=Mianmar (Birmânia) +LocaleNames/pt/MN=Mongólia LocaleNames/pt/MO=Macau, RAE da China LocaleNames/pt/MP=Ilhas Marianas do Norte LocaleNames/pt/MQ=Martinica -LocaleNames/pt/MR=Maurit\u00e2nia -LocaleNames/pt/MU=Maur\u00edcio +LocaleNames/pt/MR=Mauritânia +LocaleNames/pt/MU=Maurício LocaleNames/pt/MV=Maldivas -LocaleNames/pt/MX=M\u00e9xico -LocaleNames/pt/MY=Mal\u00e1sia -LocaleNames/pt/MZ=Mo\u00e7ambique -LocaleNames/pt/NA=Nam\u00edbia -LocaleNames/pt/NC=Nova Caled\u00f4nia -LocaleNames/pt/NE=N\u00edger +LocaleNames/pt/MX=México +LocaleNames/pt/MY=Malásia +LocaleNames/pt/MZ=Moçambique +LocaleNames/pt/NA=Namíbia +LocaleNames/pt/NC=Nova Caledônia +LocaleNames/pt/NE=Níger LocaleNames/pt/NF=Ilha Norfolk -LocaleNames/pt/NG=Nig\u00e9ria -LocaleNames/pt/NI=Nicar\u00e1gua -LocaleNames/pt/NL=Pa\u00edses Baixos +LocaleNames/pt/NG=Nigéria +LocaleNames/pt/NI=Nicarágua +LocaleNames/pt/NL=Países Baixos LocaleNames/pt/NO=Noruega -LocaleNames/pt/NZ=Nova Zel\u00e2ndia -LocaleNames/pt/OM=Om\u00e3 -LocaleNames/pt/PA=Panam\u00e1 -LocaleNames/pt/PF=Polin\u00e9sia Francesa -LocaleNames/pt/PG=Papua-Nova Guin\u00e9 +LocaleNames/pt/NZ=Nova Zelândia +LocaleNames/pt/OM=Omã +LocaleNames/pt/PA=Panamá +LocaleNames/pt/PF=Polinésia Francesa +LocaleNames/pt/PG=Papua-Nova Guiné LocaleNames/pt/PH=Filipinas -LocaleNames/pt/PK=Paquist\u00e3o -LocaleNames/pt/PL=Pol\u00f4nia -LocaleNames/pt/PM=S\u00e3o Pedro e Miquel\u00e3o +LocaleNames/pt/PK=Paquistão +LocaleNames/pt/PL=Polônia +LocaleNames/pt/PM=São Pedro e Miquelão LocaleNames/pt/PR=Porto Rico -LocaleNames/pt/PS=Territ\u00f3rios palestinos +LocaleNames/pt/PS=Territórios palestinos LocaleNames/pt/PY=Paraguai LocaleNames/pt/QA=Catar -LocaleNames/pt/RE=Reuni\u00e3o -LocaleNames/pt/RO=Rom\u00eania -LocaleNames/pt/RU=R\u00fassia +LocaleNames/pt/RE=Reunião +LocaleNames/pt/RO=Romênia +LocaleNames/pt/RU=Rússia LocaleNames/pt/RW=Ruanda -LocaleNames/pt/SA=Ar\u00e1bia Saudita -LocaleNames/pt/SB=Ilhas Salom\u00e3o -LocaleNames/pt/SD=Sud\u00e3o -LocaleNames/pt/SE=Su\u00e9cia +LocaleNames/pt/SA=Arábia Saudita +LocaleNames/pt/SB=Ilhas Salomão +LocaleNames/pt/SD=Sudão +LocaleNames/pt/SE=Suécia LocaleNames/pt/SG=Singapura LocaleNames/pt/SH=Santa Helena -LocaleNames/pt/SI=Eslov\u00eania +LocaleNames/pt/SI=Eslovênia LocaleNames/pt/SJ=Svalbard e Jan Mayen -LocaleNames/pt/SK=Eslov\u00e1quia +LocaleNames/pt/SK=Eslováquia LocaleNames/pt/SL=Serra Leoa -LocaleNames/pt/SO=Som\u00e1lia -LocaleNames/pt/ST=S\u00e3o Tom\u00e9 e Pr\u00edncipe -LocaleNames/pt/SY=S\u00edria -LocaleNames/pt/SZ=Essuat\u00edni +LocaleNames/pt/SO=Somália +LocaleNames/pt/ST=São Tomé e Príncipe +LocaleNames/pt/SY=Síria +LocaleNames/pt/SZ=Essuatíni LocaleNames/pt/TC=Ilhas Turcas e Caicos LocaleNames/pt/TD=Chade -LocaleNames/pt/TF=Territ\u00f3rios Franceses do Sul -LocaleNames/pt/TH=Tail\u00e2ndia -LocaleNames/pt/TJ=Tadjiquist\u00e3o +LocaleNames/pt/TF=Territórios Franceses do Sul +LocaleNames/pt/TH=Tailândia +LocaleNames/pt/TJ=Tadjiquistão LocaleNames/pt/TL=Timor-Leste -LocaleNames/pt/TM=Turcomenist\u00e3o -LocaleNames/pt/TN=Tun\u00edsia +LocaleNames/pt/TM=Turcomenistão +LocaleNames/pt/TN=Tunísia LocaleNames/pt/TR=Turquia LocaleNames/pt/TT=Trinidad e Tobago -LocaleNames/pt/TZ=Tanz\u00e2nia -LocaleNames/pt/UA=Ucr\u00e2nia +LocaleNames/pt/TZ=Tanzânia +LocaleNames/pt/UA=Ucrânia LocaleNames/pt/UM=Ilhas Menores Distantes dos EUA LocaleNames/pt/US=Estados Unidos LocaleNames/pt/UY=Uruguai -LocaleNames/pt/UZ=Uzbequist\u00e3o +LocaleNames/pt/UZ=Uzbequistão LocaleNames/pt/VA=Cidade do Vaticano -LocaleNames/pt/VC=S\u00e3o Vicente e Granadinas -LocaleNames/pt/VG=Ilhas Virgens Brit\u00e2nicas +LocaleNames/pt/VC=São Vicente e Granadinas +LocaleNames/pt/VG=Ilhas Virgens Britânicas LocaleNames/pt/VI=Ilhas Virgens Americanas -LocaleNames/pt/VN=Vietn\u00e3 +LocaleNames/pt/VN=Vietnã LocaleNames/pt/WF=Wallis e Futuna -LocaleNames/pt/YE=I\u00eamen -LocaleNames/pt/ZA=\u00c1frica do Sul -LocaleNames/pt/ZM=Z\u00e2mbia -LocaleNames/pt/ZW=Zimb\u00e1bue +LocaleNames/pt/YE=Iêmen +LocaleNames/pt/ZA=África do Sul +LocaleNames/pt/ZM=Zâmbia +LocaleNames/pt/ZW=Zimbábue # pt_PT LocaleNames/pt_PT/cs=checo -LocaleNames/pt_PT/et=est\u00f3nio +LocaleNames/pt_PT/et=estónio LocaleNames/pt_PT/pl=polaco LocaleNames/pt_PT/sl=esloveno -LocaleNames/pt_PT/AE=Emirados \u00c1rabes Unidos -LocaleNames/pt_PT/AM=Arm\u00e9nia -LocaleNames/pt_PT/AQ=Ant\u00e1rtida -LocaleNames/pt_PT/AZ=Azerbaij\u00e3o -LocaleNames/pt_PT/BA=B\u00f3snia e Herzegovina +LocaleNames/pt_PT/AE=Emirados Árabes Unidos +LocaleNames/pt_PT/AM=Arménia +LocaleNames/pt_PT/AQ=Antártida +LocaleNames/pt_PT/AZ=Azerbaijão +LocaleNames/pt_PT/BA=Bósnia e Herzegovina LocaleNames/pt_PT/BJ=Benim -LocaleNames/pt_PT/BY=Bielorr\u00fassia -LocaleNames/pt_PT/CM=Camar\u00f5es +LocaleNames/pt_PT/BY=Bielorrússia +LocaleNames/pt_PT/CM=Camarões LocaleNames/pt_PT/CX=Ilha do Natal -LocaleNames/pt_PT/CZ=Ch\u00e9quia -LocaleNames/pt_PT/EE=Est\u00f3nia +LocaleNames/pt_PT/CZ=Chéquia +LocaleNames/pt_PT/EE=Estónia LocaleNames/pt_PT/EG=Egito LocaleNames/pt_PT/EH=Sara Ocidental LocaleNames/pt_PT/ER=Eritreia LocaleNames/pt_PT/FK=Ilhas Falkland -LocaleNames/pt_PT/GL=Gronel\u00e2ndia -LocaleNames/pt_PT/GS=Ilhas Ge\u00f3rgia do Sul e Sandwich do Sul -LocaleNames/pt_PT/GW=Guin\u00e9-Bissau +LocaleNames/pt_PT/GL=Gronelândia +LocaleNames/pt_PT/GS=Ilhas Geórgia do Sul e Sandwich do Sul +LocaleNames/pt_PT/GW=Guiné-Bissau LocaleNames/pt_PT/HK=Hong Kong, RAE da China -LocaleNames/pt_PT/KE=Qu\u00e9nia -LocaleNames/pt_PT/KG=Quirguist\u00e3o -LocaleNames/pt_PT/KN=S\u00e3o Crist\u00f3v\u00e3o e Neves +LocaleNames/pt_PT/KE=Quénia +LocaleNames/pt_PT/KG=Quirguistão +LocaleNames/pt_PT/KN=São Cristóvão e Neves LocaleNames/pt_PT/KP=Coreia do Norte LocaleNames/pt_PT/KR=Coreia do Sul -LocaleNames/pt_PT/KY=Ilhas Caim\u00e3o -LocaleNames/pt_PT/KZ=Cazaquist\u00e3o +LocaleNames/pt_PT/KY=Ilhas Caimão +LocaleNames/pt_PT/KZ=Cazaquistão LocaleNames/pt_PT/LA=Laos -LocaleNames/pt_PT/LV=Let\u00f3nia -LocaleNames/pt_PT/MC=M\u00f3naco -LocaleNames/pt_PT/MD=Mold\u00e1via -LocaleNames/pt_PT/MG=Madag\u00e1scar -LocaleNames/pt_PT/MK=Maced\u00f3nia do Norte +LocaleNames/pt_PT/LV=Letónia +LocaleNames/pt_PT/MC=Mónaco +LocaleNames/pt_PT/MD=Moldávia +LocaleNames/pt_PT/MG=Madagáscar +LocaleNames/pt_PT/MK=Macedónia do Norte LocaleNames/pt_PT/MO=Macau, RAE da China LocaleNames/pt_PT/MP=Ilhas Marianas do Norte -LocaleNames/pt_PT/MU=Maur\u00edcia -LocaleNames/pt_PT/NC=Nova Caled\u00f3nia -LocaleNames/pt_PT/PG=Papua-Nova Guin\u00e9 -LocaleNames/pt_PT/PL=Pol\u00f3nia -LocaleNames/pt_PT/PS=Territ\u00f3rios palestinianos -LocaleNames/pt_PT/RE=Reuni\u00e3o -LocaleNames/pt_PT/RO=Rom\u00e9nia +LocaleNames/pt_PT/MU=Maurícia +LocaleNames/pt_PT/NC=Nova Caledónia +LocaleNames/pt_PT/PG=Papua-Nova Guiné +LocaleNames/pt_PT/PL=Polónia +LocaleNames/pt_PT/PS=Territórios palestinianos +LocaleNames/pt_PT/RE=Reunião +LocaleNames/pt_PT/RO=Roménia LocaleNames/pt_PT/SC=Seicheles LocaleNames/pt_PT/SG=Singapura -LocaleNames/pt_PT/SI=Eslov\u00e9nia -LocaleNames/pt_PT/SM=S\u00e3o Marinho +LocaleNames/pt_PT/SI=Eslovénia +LocaleNames/pt_PT/SM=São Marinho LocaleNames/pt_PT/TC=Ilhas Turcas e Caicos LocaleNames/pt_PT/TD=Chade -LocaleNames/pt_PT/TF=Territ\u00f3rios Austrais Franceses -LocaleNames/pt_PT/TJ=Tajiquist\u00e3o -LocaleNames/pt_PT/TM=Turquemenist\u00e3o +LocaleNames/pt_PT/TF=Territórios Austrais Franceses +LocaleNames/pt_PT/TJ=Tajiquistão +LocaleNames/pt_PT/TM=Turquemenistão LocaleNames/pt_PT/UM=Ilhas Menores Afastadas dos EUA -LocaleNames/pt_PT/UZ=Usbequist\u00e3o +LocaleNames/pt_PT/UZ=Usbequistão LocaleNames/pt_PT/VA=Cidade do Vaticano -LocaleNames/pt_PT/VC=S\u00e3o Vicente e Granadinas -LocaleNames/pt_PT/VG=Ilhas Virgens Brit\u00e2nicas +LocaleNames/pt_PT/VC=São Vicente e Granadinas +LocaleNames/pt_PT/VG=Ilhas Virgens Britânicas LocaleNames/pt_PT/VI=Ilhas Virgens dos EUA LocaleNames/pt_PT/VN=Vietname -LocaleNames/pt_PT/YE=I\u00e9men +LocaleNames/pt_PT/YE=Iémen #bug 6290792 Gaelic support -LocaleNames/ga/ab=Abc\u00e1isis -LocaleNames/ga/ae=Aiv\u00e9istis -LocaleNames/ga/af=Afrac\u00e1inis +LocaleNames/ga/ab=Abcáisis +LocaleNames/ga/ae=Aivéistis +LocaleNames/ga/af=Afracáinis LocaleNames/ga/ar=Araibis LocaleNames/ga/as=Asaimis -LocaleNames/ga/az=Asarbaise\u00e1inis -LocaleNames/ga/ba=Baisc\u00edris -LocaleNames/ga/be=Bealar\u00faisis -LocaleNames/ga/bg=Bulg\u00e1iris -LocaleNames/ga/bn=Beang\u00e1ilis -LocaleNames/ga/bo=Tib\u00e9idis -LocaleNames/ga/br=Briot\u00e1inis +LocaleNames/ga/az=Asarbaiseáinis +LocaleNames/ga/ba=Baiscíris +LocaleNames/ga/be=Bealarúisis +LocaleNames/ga/bg=Bulgáiris +LocaleNames/ga/bn=Beangáilis +LocaleNames/ga/bo=Tibéidis +LocaleNames/ga/br=Briotáinis LocaleNames/ga/bs=Boisnis -LocaleNames/ga/ca=Catal\u00f3inis +LocaleNames/ga/ca=Catalóinis LocaleNames/ga/ce=Seisnis LocaleNames/ga/co=Corsaicis -LocaleNames/ga/cr=Cra\u00eds +LocaleNames/ga/cr=Craís LocaleNames/ga/cs=Seicis LocaleNames/ga/cu=Slavais na hEaglaise LocaleNames/ga/cv=Suvaisis LocaleNames/ga/cy=Breatnais LocaleNames/ga/da=Danmhairgis -LocaleNames/ga/de=Gearm\u00e1inis -LocaleNames/ga/el=Gr\u00e9igis -LocaleNames/ga/en=B\u00e9arla -LocaleNames/ga/es=Sp\u00e1innis -LocaleNames/ga/et=East\u00f3inis +LocaleNames/ga/de=Gearmáinis +LocaleNames/ga/el=Gréigis +LocaleNames/ga/en=Béarla +LocaleNames/ga/es=Spáinnis +LocaleNames/ga/et=Eastóinis LocaleNames/ga/eu=Bascais LocaleNames/ga/fa=Peirsis LocaleNames/ga/fi=Fionlainnis LocaleNames/ga/fj=Fidsis -LocaleNames/ga/fo=Far\u00f3is +LocaleNames/ga/fo=Faróis LocaleNames/ga/fr=Fraincis LocaleNames/ga/fy=Freaslainnis Iartharach LocaleNames/ga/ga=Gaeilge LocaleNames/ga/gd=Gaeilge na hAlban -LocaleNames/ga/gu=G\u00faisear\u00e1itis +LocaleNames/ga/gu=Gúisearáitis LocaleNames/ga/gv=Manainnis LocaleNames/ga/he=Eabhrais -LocaleNames/ga/hi=Hiond\u00fais -LocaleNames/ga/hr=Cr\u00f3itis -LocaleNames/ga/hu=Ung\u00e1iris -LocaleNames/ga/hy=Airm\u00e9inis -LocaleNames/ga/id=Indin\u00e9isis -LocaleNames/ga/is=\u00cdoslainnis -LocaleNames/ga/it=Iod\u00e1ilis -LocaleNames/ga/iu=Ion\u00faitis -LocaleNames/ga/ja=Seap\u00e1inis -LocaleNames/ga/jv=I\u00e1ivis +LocaleNames/ga/hi=Hiondúis +LocaleNames/ga/hr=Cróitis +LocaleNames/ga/hu=Ungáiris +LocaleNames/ga/hy=Airméinis +LocaleNames/ga/id=Indinéisis +LocaleNames/ga/is=Íoslainnis +LocaleNames/ga/it=Iodáilis +LocaleNames/ga/iu=Ionúitis +LocaleNames/ga/ja=Seapáinis +LocaleNames/ga/jv=Iáivis LocaleNames/ga/ka=Seoirsis LocaleNames/ga/kk=Casaicis LocaleNames/ga/kn=Cannadais -LocaleNames/ga/ko=C\u00f3ir\u00e9is -LocaleNames/ga/ks=Caism\u00edris +LocaleNames/ga/ko=Cóiréis +LocaleNames/ga/ks=Caismíris LocaleNames/ga/kw=Coirnis LocaleNames/ga/ky=Cirgisis LocaleNames/ga/la=Laidin LocaleNames/ga/lb=Lucsambuirgis LocaleNames/ga/lo=Laoisis -LocaleNames/ga/lt=Liotu\u00e1inis +LocaleNames/ga/lt=Liotuáinis LocaleNames/ga/lv=Laitvis -LocaleNames/ga/mg=Malag\u00e1isis +LocaleNames/ga/mg=Malagáisis LocaleNames/ga/mi=Maorais -LocaleNames/ga/mk=Macad\u00f3inis -LocaleNames/ga/ml=Mail\u00e9alaimis -LocaleNames/ga/mn=Mong\u00f3ilis +LocaleNames/ga/mk=Macadóinis +LocaleNames/ga/ml=Mailéalaimis +LocaleNames/ga/mn=Mongóilis LocaleNames/ga/mr=Maraitis -LocaleNames/ga/mt=M\u00e1ltais +LocaleNames/ga/mt=Máltais LocaleNames/ga/my=Burmais -LocaleNames/ga/na=N\u00e1r\u00fais -LocaleNames/ga/nb=Bocm\u00e1l +LocaleNames/ga/na=Nárúis +LocaleNames/ga/nb=Bocmál LocaleNames/ga/ne=Neipeailis LocaleNames/ga/nl=Ollainnis LocaleNames/ga/nn=Nua-Ioruais LocaleNames/ga/no=Ioruais -LocaleNames/ga/nv=Navach\u00f3is -LocaleNames/ga/oc=Ocsat\u00e1inis -LocaleNames/ga/os=Ois\u00e9itis -LocaleNames/ga/pa=Puinse\u00e1ibis +LocaleNames/ga/nv=Navachóis +LocaleNames/ga/oc=Ocsatáinis +LocaleNames/ga/os=Oiséitis +LocaleNames/ga/pa=Puinseáibis LocaleNames/ga/pl=Polainnis LocaleNames/ga/ps=Paistis -LocaleNames/ga/pt=Portaing\u00e9ilis +LocaleNames/ga/pt=Portaingéilis LocaleNames/ga/qu=Ceatsuais -LocaleNames/ga/ro=R\u00f3m\u00e1inis -LocaleNames/ga/ru=R\u00faisis +LocaleNames/ga/ro=Rómáinis +LocaleNames/ga/ru=Rúisis LocaleNames/ga/sa=Sanscrait -LocaleNames/ga/sc=Saird\u00ednis +LocaleNames/ga/sc=Sairdínis LocaleNames/ga/sd=Sindis -LocaleNames/ga/se=S\u00e1imis an Tuaiscirt -LocaleNames/ga/sk=Sl\u00f3vaicis -LocaleNames/ga/sl=Sl\u00f3iv\u00e9inis -LocaleNames/ga/sm=Sam\u00f3is -LocaleNames/ga/so=Som\u00e1ilis -LocaleNames/ga/sq=Alb\u00e1inis +LocaleNames/ga/se=Sáimis an Tuaiscirt +LocaleNames/ga/sk=Slóvaicis +LocaleNames/ga/sl=Slóivéinis +LocaleNames/ga/sm=Samóis +LocaleNames/ga/so=Somáilis +LocaleNames/ga/sq=Albáinis LocaleNames/ga/sr=Seirbis LocaleNames/ga/sv=Sualainnis -LocaleNames/ga/sw=Svaha\u00edlis +LocaleNames/ga/sw=Svahaílis LocaleNames/ga/ta=Tamailis -LocaleNames/ga/th=T\u00e9alainnis -LocaleNames/ga/tl=Tag\u00e1laigis +LocaleNames/ga/th=Téalainnis +LocaleNames/ga/tl=Tagálaigis LocaleNames/ga/tr=Tuircis LocaleNames/ga/tt=Tatairis -LocaleNames/ga/ty=Taih\u00edtis -LocaleNames/ga/uk=\u00dacr\u00e1inis -LocaleNames/ga/ur=Urd\u00fais -LocaleNames/ga/uz=\u00daisb\u00e9iceast\u00e1inis -LocaleNames/ga/vi=V\u00edtneaimis -LocaleNames/ga/wa=Vall\u00fanais -LocaleNames/ga/yi=Gi\u00fadais -LocaleNames/ga/zh=S\u00ednis -LocaleNames/ga/zu=S\u00fal\u00fais -LocaleNames/ga/AD=And\u00f3ra -LocaleNames/ga/AE=Aontas na n\u00c9im\u00edr\u00edochta\u00ed Arabacha -LocaleNames/ga/AF=an Afganast\u00e1in -LocaleNames/ga/AG=Antigua agus Barb\u00fada -LocaleNames/ga/AL=an Alb\u00e1in -LocaleNames/ga/AM=an Airm\u00e9in -LocaleNames/ga/AO=Ang\u00f3la +LocaleNames/ga/ty=Taihítis +LocaleNames/ga/uk=Úcráinis +LocaleNames/ga/ur=Urdúis +LocaleNames/ga/uz=Úisbéiceastáinis +LocaleNames/ga/vi=Vítneaimis +LocaleNames/ga/wa=Vallúnais +LocaleNames/ga/yi=Giúdais +LocaleNames/ga/zh=Sínis +LocaleNames/ga/zu=Súlúis +LocaleNames/ga/AD=Andóra +LocaleNames/ga/AE=Aontas na nÉimíríochtaí Arabacha +LocaleNames/ga/AF=an Afganastáin +LocaleNames/ga/AG=Antigua agus Barbúda +LocaleNames/ga/AL=an Albáin +LocaleNames/ga/AM=an Airméin +LocaleNames/ga/AO=Angóla LocaleNames/ga/AQ=Antartaice -LocaleNames/ga/AR=an Airgint\u00edn -LocaleNames/ga/AS=Sam\u00f3 Mheirice\u00e1 +LocaleNames/ga/AR=an Airgintín +LocaleNames/ga/AS=Samó Mheiriceá LocaleNames/ga/AT=an Ostair -LocaleNames/ga/AU=an Astr\u00e1il -LocaleNames/ga/AZ=an Asarbaise\u00e1in -LocaleNames/ga/BA=an Bhoisnia agus an Heirseagaiv\u00e9in -LocaleNames/ga/BB=Barbad\u00f3s -LocaleNames/ga/BD=an Bhanglaid\u00e9is +LocaleNames/ga/AU=an Astráil +LocaleNames/ga/AZ=an Asarbaiseáin +LocaleNames/ga/BA=an Bhoisnia agus an Heirseagaivéin +LocaleNames/ga/BB=Barbadós +LocaleNames/ga/BD=an Bhanglaidéis LocaleNames/ga/BE=an Bheilg -LocaleNames/ga/BF=Buirc\u00edne Fas\u00f3 -LocaleNames/ga/BG=an Bhulg\u00e1ir -LocaleNames/ga/BH=Bair\u00e9in -LocaleNames/ga/BI=an Bhur\u00fain +LocaleNames/ga/BF=Buircíne Fasó +LocaleNames/ga/BG=an Bhulgáir +LocaleNames/ga/BH=Bairéin +LocaleNames/ga/BI=an Bhurúin LocaleNames/ga/BJ=Beinin -LocaleNames/ga/BM=Beirmi\u00fada -LocaleNames/ga/BN=Br\u00fain\u00e9 +LocaleNames/ga/BM=Beirmiúda +LocaleNames/ga/BN=Brúiné LocaleNames/ga/BO=an Bholaiv -LocaleNames/ga/BR=an Bhrasa\u00edl -LocaleNames/ga/BS=na Bah\u00e1ma\u00ed -LocaleNames/ga/BT=an Bh\u00fat\u00e1in -LocaleNames/ga/BV=Oile\u00e1n Bouvet -LocaleNames/ga/BW=an Bhotsu\u00e1in -LocaleNames/ga/BY=an Bhealar\u00fais -LocaleNames/ga/BZ=an Bheil\u00eds +LocaleNames/ga/BR=an Bhrasaíl +LocaleNames/ga/BS=na Bahámaí +LocaleNames/ga/BT=an Bhútáin +LocaleNames/ga/BV=Oileán Bouvet +LocaleNames/ga/BW=an Bhotsuáin +LocaleNames/ga/BY=an Bhealarúis +LocaleNames/ga/BZ=an Bheilís LocaleNames/ga/CA=Ceanada -LocaleNames/ga/CC=Oile\u00e1in Cocos (Keeling) -LocaleNames/ga/CD=Poblacht Dhaonlathach an Chong\u00f3 -LocaleNames/ga/CF=Poblacht na hAfraice L\u00e1ir -LocaleNames/ga/CG=Cong\u00f3-Brazzaville -LocaleNames/ga/CH=an Eilv\u00e9is -LocaleNames/ga/CI=an C\u00f3sta Eabhair -LocaleNames/ga/CK=Oile\u00e1in Cook +LocaleNames/ga/CC=Oileáin Cocos (Keeling) +LocaleNames/ga/CD=Poblacht Dhaonlathach an Chongó +LocaleNames/ga/CF=Poblacht na hAfraice Láir +LocaleNames/ga/CG=Congó-Brazzaville +LocaleNames/ga/CH=an Eilvéis +LocaleNames/ga/CI=an Cósta Eabhair +LocaleNames/ga/CK=Oileáin Cook LocaleNames/ga/CL=an tSile -LocaleNames/ga/CM=Camar\u00fan -LocaleNames/ga/CN=an tS\u00edn -LocaleNames/ga/CO=an Chol\u00f3im -LocaleNames/ga/CR=C\u00f3sta R\u00edce -LocaleNames/ga/CU=C\u00faba +LocaleNames/ga/CM=Camarún +LocaleNames/ga/CN=an tSín +LocaleNames/ga/CO=an Cholóim +LocaleNames/ga/CR=Cósta Ríce +LocaleNames/ga/CU=Cúba LocaleNames/ga/CV=Rinn Verde -LocaleNames/ga/CX=Oile\u00e1n na Nollag +LocaleNames/ga/CX=Oileán na Nollag LocaleNames/ga/CY=an Chipir LocaleNames/ga/CZ=an tSeicia -LocaleNames/ga/DE=an Ghearm\u00e1in +LocaleNames/ga/DE=an Ghearmáin LocaleNames/ga/DK=an Danmhairg LocaleNames/ga/DM=Doiminice LocaleNames/ga/DO=an Phoblacht Dhoiminiceach -LocaleNames/ga/DZ=an Ailg\u00e9ir -LocaleNames/ga/EC=Eacuad\u00f3r -LocaleNames/ga/EE=an East\u00f3in -LocaleNames/ga/EG=an \u00c9igipt -LocaleNames/ga/EH=an Sah\u00e1ra Thiar -LocaleNames/ga/ES=an Sp\u00e1inn -LocaleNames/ga/ET=an Aet\u00f3ip +LocaleNames/ga/DZ=an Ailgéir +LocaleNames/ga/EC=Eacuadór +LocaleNames/ga/EE=an Eastóin +LocaleNames/ga/EG=an Éigipt +LocaleNames/ga/EH=an Sahára Thiar +LocaleNames/ga/ES=an Spáinn +LocaleNames/ga/ET=an Aetóip LocaleNames/ga/FI=an Fhionlainn -LocaleNames/ga/FJ=Fids\u00ed -LocaleNames/ga/FK=Oile\u00e1in Fh\u00e1clainne -LocaleNames/ga/FM=an Mhicrin\u00e9is -LocaleNames/ga/FO=Oile\u00e1in Fhar\u00f3 +LocaleNames/ga/FJ=Fidsí +LocaleNames/ga/FK=Oileáin Fháclainne +LocaleNames/ga/FM=an Mhicrinéis +LocaleNames/ga/FO=Oileáin Fharó LocaleNames/ga/FR=an Fhrainc -LocaleNames/ga/GA=an Ghab\u00fain -LocaleNames/ga/GB=an R\u00edocht Aontaithe +LocaleNames/ga/GA=an Ghabúin +LocaleNames/ga/GB=an Ríocht Aontaithe LocaleNames/ga/GE=an tSeoirsia -LocaleNames/ga/GF=Gu\u00e1in na Fraince -LocaleNames/ga/GH=G\u00e1na -LocaleNames/ga/GI=Giobr\u00e1ltar +LocaleNames/ga/GF=Guáin na Fraince +LocaleNames/ga/GH=Gána +LocaleNames/ga/GI=Giobráltar LocaleNames/ga/GL=an Ghraonlainn LocaleNames/ga/GM=an Ghaimbia LocaleNames/ga/GN=an Ghuine -LocaleNames/ga/GP=Guadal\u00faip -LocaleNames/ga/GQ=an Ghuine Mhe\u00e1nchiorclach -LocaleNames/ga/GR=an Ghr\u00e9ig -LocaleNames/ga/GS=an tSeoirsia Theas agus Oile\u00e1in Sandwich Theas +LocaleNames/ga/GP=Guadalúip +LocaleNames/ga/GQ=an Ghuine Mheánchiorclach +LocaleNames/ga/GR=an Ghréig +LocaleNames/ga/GS=an tSeoirsia Theas agus Oileáin Sandwich Theas LocaleNames/ga/GT=Guatamala LocaleNames/ga/GW=Guine Bissau -LocaleNames/ga/GY=an Ghu\u00e1in -LocaleNames/ga/HM=Oile\u00e1n Heard agus Oile\u00e1in McDonald -LocaleNames/ga/HN=Hond\u00faras -LocaleNames/ga/HR=an Chr\u00f3it -LocaleNames/ga/HT=H\u00e1\u00edt\u00ed -LocaleNames/ga/HU=an Ung\u00e1ir -LocaleNames/ga/ID=an Indin\u00e9is -LocaleNames/ga/IE=\u00c9ire +LocaleNames/ga/GY=an Ghuáin +LocaleNames/ga/HM=Oileán Heard agus Oileáin McDonald +LocaleNames/ga/HN=Hondúras +LocaleNames/ga/HR=an Chróit +LocaleNames/ga/HT=Háítí +LocaleNames/ga/HU=an Ungáir +LocaleNames/ga/ID=an Indinéis +LocaleNames/ga/IE=Éire LocaleNames/ga/IL=Iosrael LocaleNames/ga/IN=an India -LocaleNames/ga/IO=Cr\u00edoch Aig\u00e9an Indiach na Breataine -LocaleNames/ga/IQ=an Iar\u00e1ic -LocaleNames/ga/IR=an Iar\u00e1in -LocaleNames/ga/IS=an \u00cdoslainn -LocaleNames/ga/IT=an Iod\u00e1il -LocaleNames/ga/JM=Iam\u00e1ice -LocaleNames/ga/JO=an Iord\u00e1in -LocaleNames/ga/JP=an tSeap\u00e1in -LocaleNames/ga/KE=an Ch\u00e9inia -LocaleNames/ga/KG=an Chirgeast\u00e1in -LocaleNames/ga/KH=an Chamb\u00f3id +LocaleNames/ga/IO=Críoch Aigéan Indiach na Breataine +LocaleNames/ga/IQ=an Iaráic +LocaleNames/ga/IR=an Iaráin +LocaleNames/ga/IS=an Íoslainn +LocaleNames/ga/IT=an Iodáil +LocaleNames/ga/JM=Iamáice +LocaleNames/ga/JO=an Iordáin +LocaleNames/ga/JP=an tSeapáin +LocaleNames/ga/KE=an Chéinia +LocaleNames/ga/KG=an Chirgeastáin +LocaleNames/ga/KH=an Chambóid LocaleNames/ga/KI=Ciribeas -LocaleNames/ga/KM=Oile\u00e1in Chom\u00f3ra -LocaleNames/ga/KN=San Cr\u00edost\u00f3ir-Nimheas -LocaleNames/ga/KP=an Ch\u00f3ir\u00e9 Thuaidh -LocaleNames/ga/KR=an Ch\u00f3ir\u00e9 Theas -LocaleNames/ga/KW=Cu\u00e1it -LocaleNames/ga/KY=Oile\u00e1in Cayman -LocaleNames/ga/KZ=an Chasacst\u00e1in -LocaleNames/ga/LB=an Liob\u00e1in -LocaleNames/ga/LI=Lichtinst\u00e9in -LocaleNames/ga/LK=Sr\u00ed Lanca -LocaleNames/ga/LR=an Lib\u00e9ir -LocaleNames/ga/LS=Leos\u00f3ta -LocaleNames/ga/LT=an Liotu\u00e1in +LocaleNames/ga/KM=Oileáin Chomóra +LocaleNames/ga/KN=San Críostóir-Nimheas +LocaleNames/ga/KP=an Chóiré Thuaidh +LocaleNames/ga/KR=an Chóiré Theas +LocaleNames/ga/KW=Cuáit +LocaleNames/ga/KY=Oileáin Cayman +LocaleNames/ga/KZ=an Chasacstáin +LocaleNames/ga/LB=an Liobáin +LocaleNames/ga/LI=Lichtinstéin +LocaleNames/ga/LK=Srí Lanca +LocaleNames/ga/LR=an Libéir +LocaleNames/ga/LS=Leosóta +LocaleNames/ga/LT=an Liotuáin LocaleNames/ga/LU=Lucsamburg LocaleNames/ga/LV=an Laitvia LocaleNames/ga/LY=an Libia -LocaleNames/ga/MA=Marac\u00f3 -LocaleNames/ga/MC=Monac\u00f3 -LocaleNames/ga/MD=an Mhold\u00f3iv -LocaleNames/ga/MH=Oile\u00e1in Marshall -LocaleNames/ga/MK=an Mhacad\u00f3in Thuaidh -LocaleNames/ga/ML=Mail\u00ed +LocaleNames/ga/MA=Maracó +LocaleNames/ga/MC=Monacó +LocaleNames/ga/MD=an Mholdóiv +LocaleNames/ga/MH=Oileáin Marshall +LocaleNames/ga/MK=an Mhacadóin Thuaidh +LocaleNames/ga/ML=Mailí LocaleNames/ga/MM=Maenmar (Burma) -LocaleNames/ga/MN=an Mhong\u00f3il -LocaleNames/ga/MP=na hOile\u00e1in Mh\u00e1irianacha Thuaidh -LocaleNames/ga/MR=an Mh\u00e1rat\u00e1in +LocaleNames/ga/MN=an Mhongóil +LocaleNames/ga/MP=na hOileáin Mháirianacha Thuaidh +LocaleNames/ga/MR=an Mháratáin LocaleNames/ga/MS=Montsarat -LocaleNames/ga/MT=M\u00e1lta -LocaleNames/ga/MU=Oile\u00e1n Mhuir\u00eds -LocaleNames/ga/MV=Oile\u00e1in Mhaild\u00edve -LocaleNames/ga/MW=an Mhal\u00e1iv +LocaleNames/ga/MT=Málta +LocaleNames/ga/MU=Oileán Mhuirís +LocaleNames/ga/MV=Oileáin Mhaildíve +LocaleNames/ga/MW=an Mhaláiv LocaleNames/ga/MX=Meicsiceo LocaleNames/ga/MY=an Mhalaeisia -LocaleNames/ga/MZ=M\u00f3saimb\u00edc +LocaleNames/ga/MZ=Mósaimbíc LocaleNames/ga/NA=an Namaib -LocaleNames/ga/NC=an Nua-Chalad\u00f3in -LocaleNames/ga/NE=an N\u00edgir -LocaleNames/ga/NF=Oile\u00e1n Norfolk -LocaleNames/ga/NG=an Nig\u00e9ir +LocaleNames/ga/NC=an Nua-Chaladóin +LocaleNames/ga/NE=an Nígir +LocaleNames/ga/NF=Oileán Norfolk +LocaleNames/ga/NG=an Nigéir LocaleNames/ga/NI=Nicearagua -LocaleNames/ga/NL=an \u00cdsilt\u00edr +LocaleNames/ga/NL=an Ísiltír LocaleNames/ga/NO=an Iorua LocaleNames/ga/NP=Neipeal -LocaleNames/ga/NR=N\u00e1r\u00fa -LocaleNames/ga/NZ=an Nua-Sh\u00e9alainn -LocaleNames/ga/PE=Peiri\u00fa -LocaleNames/ga/PF=Polain\u00e9is na Fraince +LocaleNames/ga/NR=Nárú +LocaleNames/ga/NZ=an Nua-Shéalainn +LocaleNames/ga/PE=Peiriú +LocaleNames/ga/PF=Polainéis na Fraince LocaleNames/ga/PG=Nua-Ghuine Phapua -LocaleNames/ga/PH=na hOile\u00e1in Fhilip\u00edneacha -LocaleNames/ga/PK=an Phacast\u00e1in +LocaleNames/ga/PH=na hOileáin Fhilipíneacha +LocaleNames/ga/PK=an Phacastáin LocaleNames/ga/PL=an Pholainn LocaleNames/ga/PM=San Pierre agus Miquelon -LocaleNames/ga/PR=P\u00f3rt\u00f3 R\u00edce -LocaleNames/ga/PS=na Cr\u00edocha Palaist\u00edneacha -LocaleNames/ga/PT=an Phortaing\u00e9il +LocaleNames/ga/PR=Pórtó Ríce +LocaleNames/ga/PS=na Críocha Palaistíneacha +LocaleNames/ga/PT=an Phortaingéil LocaleNames/ga/PY=Paragua LocaleNames/ga/QA=Catar -LocaleNames/ga/RE=La R\u00e9union -LocaleNames/ga/RO=an R\u00f3m\u00e1in -LocaleNames/ga/RU=an R\u00fais +LocaleNames/ga/RE=La Réunion +LocaleNames/ga/RO=an Rómáin +LocaleNames/ga/RU=an Rúis LocaleNames/ga/RW=Ruanda -LocaleNames/ga/SA=an Araib Sh\u00e1dach -LocaleNames/ga/SB=Oile\u00e1in Sholaimh -LocaleNames/ga/SC=na S\u00e9is\u00e9il -LocaleNames/ga/SD=an tS\u00fad\u00e1in +LocaleNames/ga/SA=an Araib Shádach +LocaleNames/ga/SB=Oileáin Sholaimh +LocaleNames/ga/SC=na Séiséil +LocaleNames/ga/SD=an tSúdáin LocaleNames/ga/SE=an tSualainn -LocaleNames/ga/SG=Singeap\u00f3r -LocaleNames/ga/SH=San H\u00e9ilin -LocaleNames/ga/SI=an tSl\u00f3iv\u00e9in +LocaleNames/ga/SG=Singeapór +LocaleNames/ga/SH=San Héilin +LocaleNames/ga/SI=an tSlóivéin LocaleNames/ga/SJ=Svalbard agus Jan Mayen -LocaleNames/ga/SK=an tSl\u00f3vaic +LocaleNames/ga/SK=an tSlóvaic LocaleNames/ga/SL=Siarra Leon -LocaleNames/ga/SM=San Mair\u00edne -LocaleNames/ga/SN=an tSeineag\u00e1il -LocaleNames/ga/SO=an tSom\u00e1il +LocaleNames/ga/SM=San Mairíne +LocaleNames/ga/SN=an tSeineagáil +LocaleNames/ga/SO=an tSomáil LocaleNames/ga/SR=Suranam -LocaleNames/ga/ST=S\u00e3o Tom\u00e9 agus Pr\u00edncipe -LocaleNames/ga/SV=an tSalvad\u00f3ir +LocaleNames/ga/ST=São Tomé agus Príncipe +LocaleNames/ga/SV=an tSalvadóir LocaleNames/ga/SY=an tSiria -LocaleNames/ga/SZ=eSuait\u00edn\u00ed -LocaleNames/ga/TC=Oile\u00e1in na dTurcach agus Caicos +LocaleNames/ga/SZ=eSuaitíní +LocaleNames/ga/TC=Oileáin na dTurcach agus Caicos LocaleNames/ga/TD=Sead -LocaleNames/ga/TF=Cr\u00edocha Francacha Dheisceart an Domhain -LocaleNames/ga/TG=T\u00f3ga -LocaleNames/ga/TH=an T\u00e9alainn -LocaleNames/ga/TJ=an T\u00e1ids\u00edceast\u00e1in -LocaleNames/ga/TK=T\u00f3cal\u00e1 -LocaleNames/ga/TL=T\u00edom\u00f3r Thoir -LocaleNames/ga/TM=an Tuircm\u00e9anast\u00e1in -LocaleNames/ga/TN=an T\u00fain\u00e9is +LocaleNames/ga/TF=Críocha Francacha Dheisceart an Domhain +LocaleNames/ga/TG=Tóga +LocaleNames/ga/TH=an Téalainn +LocaleNames/ga/TJ=an Táidsíceastáin +LocaleNames/ga/TK=Tócalá +LocaleNames/ga/TL=Tíomór Thoir +LocaleNames/ga/TM=an Tuircméanastáin +LocaleNames/ga/TN=an Túinéis LocaleNames/ga/TR=an Tuirc -LocaleNames/ga/TT=Oile\u00e1n na Tr\u00edon\u00f3ide agus Tob\u00e1ga -LocaleNames/ga/TV=T\u00faval\u00fa -LocaleNames/ga/TW=an T\u00e9av\u00e1in -LocaleNames/ga/TZ=an Tans\u00e1in -LocaleNames/ga/UA=an \u00dacr\u00e1in -LocaleNames/ga/UM=Oile\u00e1in Imeallacha S.A.M. -LocaleNames/ga/US=St\u00e1it Aontaithe Mheirice\u00e1 +LocaleNames/ga/TT=Oileán na Tríonóide agus Tobága +LocaleNames/ga/TV=Túvalú +LocaleNames/ga/TW=an Téaváin +LocaleNames/ga/TZ=an Tansáin +LocaleNames/ga/UA=an Úcráin +LocaleNames/ga/UM=Oileáin Imeallacha S.A.M. +LocaleNames/ga/US=Stáit Aontaithe Mheiriceá LocaleNames/ga/UY=Uragua -LocaleNames/ga/UZ=an \u00daisb\u00e9iceast\u00e1in -LocaleNames/ga/VA=Cathair na Vatac\u00e1ine -LocaleNames/ga/VC=San Uinseann agus na Grean\u00e1id\u00edn\u00ed -LocaleNames/ga/VE=Veinis\u00e9ala -LocaleNames/ga/VG=Oile\u00e1in Bhriotanacha na Maighdean -LocaleNames/ga/VI=Oile\u00e1in Mheirice\u00e1nacha na Maighdean -LocaleNames/ga/VN=V\u00edtneam -LocaleNames/ga/VU=Vanuat\u00fa -LocaleNames/ga/WF=Vail\u00eds agus Fut\u00fana -LocaleNames/ga/WS=Sam\u00f3 -LocaleNames/ga/YE=\u00c9imin +LocaleNames/ga/UZ=an Úisbéiceastáin +LocaleNames/ga/VA=Cathair na Vatacáine +LocaleNames/ga/VC=San Uinseann agus na Greanáidíní +LocaleNames/ga/VE=Veiniséala +LocaleNames/ga/VG=Oileáin Bhriotanacha na Maighdean +LocaleNames/ga/VI=Oileáin Mheiriceánacha na Maighdean +LocaleNames/ga/VN=Vítneam +LocaleNames/ga/VU=Vanuatú +LocaleNames/ga/WF=Vailís agus Futúna +LocaleNames/ga/WS=Samó +LocaleNames/ga/YE=Éimin LocaleNames/ga/ZA=an Afraic Theas LocaleNames/ga/ZM=an tSaimbia # bug #6277696 -FormatData/sr/MonthNames/0=\u0458\u0430\u043d\u0443\u0430\u0440 -FormatData/sr/MonthNames/1=\u0444\u0435\u0431\u0440\u0443\u0430\u0440 -FormatData/sr/MonthNames/2=\u043c\u0430\u0440\u0442 -FormatData/sr/MonthNames/3=\u0430\u043f\u0440\u0438\u043b -FormatData/sr/MonthNames/4=\u043c\u0430\u0458 -FormatData/sr/MonthNames/5=\u0458\u0443\u043d -FormatData/sr/MonthNames/6=\u0458\u0443\u043b -FormatData/sr/MonthNames/7=\u0430\u0432\u0433\u0443\u0441\u0442 -FormatData/sr/MonthNames/8=\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440 -FormatData/sr/MonthNames/9=\u043e\u043a\u0442\u043e\u0431\u0430\u0440 -FormatData/sr/MonthNames/10=\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440 -FormatData/sr/MonthNames/11=\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440 -FormatData/sr/MonthAbbreviations/0=\u0458\u0430\u043d -FormatData/sr/MonthAbbreviations/1=\u0444\u0435\u0431 -FormatData/sr/MonthAbbreviations/2=\u043c\u0430\u0440 -FormatData/sr/MonthAbbreviations/3=\u0430\u043f\u0440 -FormatData/sr/MonthAbbreviations/4=\u043c\u0430\u0458 -FormatData/sr/MonthAbbreviations/5=\u0458\u0443\u043d -FormatData/sr/MonthAbbreviations/6=\u0458\u0443\u043b -FormatData/sr/MonthAbbreviations/7=\u0430\u0432\u0433 -FormatData/sr/MonthAbbreviations/8=\u0441\u0435\u043f -FormatData/sr/MonthAbbreviations/9=\u043e\u043a\u0442 -FormatData/sr/MonthAbbreviations/10=\u043d\u043e\u0432 -FormatData/sr/MonthAbbreviations/11=\u0434\u0435\u0446 -FormatData/sr/DayNames/0=\u043d\u0435\u0434\u0435\u0459\u0430 -FormatData/sr/DayNames/1=\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a -FormatData/sr/DayNames/2=\u0443\u0442\u043e\u0440\u0430\u043a -FormatData/sr/DayNames/3=\u0441\u0440\u0435\u0434\u0430 -FormatData/sr/DayNames/4=\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a -FormatData/sr/DayNames/5=\u043f\u0435\u0442\u0430\u043a -FormatData/sr/DayNames/6=\u0441\u0443\u0431\u043e\u0442\u0430 -FormatData/sr/DayAbbreviations/0=\u043d\u0435\u0434 -FormatData/sr/DayAbbreviations/1=\u043f\u043e\u043d -FormatData/sr/DayAbbreviations/2=\u0443\u0442\u043e -FormatData/sr/DayAbbreviations/3=\u0441\u0440\u0435 -FormatData/sr/DayAbbreviations/4=\u0447\u0435\u0442 -FormatData/sr/DayAbbreviations/5=\u043f\u0435\u0442 -FormatData/sr/DayAbbreviations/6=\u0441\u0443\u0431 -FormatData/sr/Eras/0=\u043f. \u043d. \u0435. -FormatData/sr/Eras/1=\u043d. \u0435. +FormatData/sr/MonthNames/0=јануар +FormatData/sr/MonthNames/1=фебруар +FormatData/sr/MonthNames/2=март +FormatData/sr/MonthNames/3=април +FormatData/sr/MonthNames/4=мај +FormatData/sr/MonthNames/5=јун +FormatData/sr/MonthNames/6=јул +FormatData/sr/MonthNames/7=август +FormatData/sr/MonthNames/8=септембар +FormatData/sr/MonthNames/9=октобар +FormatData/sr/MonthNames/10=новембар +FormatData/sr/MonthNames/11=децембар +FormatData/sr/MonthAbbreviations/0=јан +FormatData/sr/MonthAbbreviations/1=феб +FormatData/sr/MonthAbbreviations/2=мар +FormatData/sr/MonthAbbreviations/3=апр +FormatData/sr/MonthAbbreviations/4=мај +FormatData/sr/MonthAbbreviations/5=јун +FormatData/sr/MonthAbbreviations/6=јул +FormatData/sr/MonthAbbreviations/7=авг +FormatData/sr/MonthAbbreviations/8=сеп +FormatData/sr/MonthAbbreviations/9=окт +FormatData/sr/MonthAbbreviations/10=нов +FormatData/sr/MonthAbbreviations/11=дец +FormatData/sr/DayNames/0=недеља +FormatData/sr/DayNames/1=понедељак +FormatData/sr/DayNames/2=уторак +FormatData/sr/DayNames/3=среда +FormatData/sr/DayNames/4=четвртак +FormatData/sr/DayNames/5=петак +FormatData/sr/DayNames/6=субота +FormatData/sr/DayAbbreviations/0=нед +FormatData/sr/DayAbbreviations/1=пон +FormatData/sr/DayAbbreviations/2=уто +FormatData/sr/DayAbbreviations/3=сре +FormatData/sr/DayAbbreviations/4=чет +FormatData/sr/DayAbbreviations/5=пет +FormatData/sr/DayAbbreviations/6=суб +FormatData/sr/Eras/0=п. н. е. +FormatData/sr/Eras/1=н. е. FormatData/sr/latn.NumberPatterns/0=#,##0.### -FormatData/sr/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 +FormatData/sr/latn.NumberPatterns/1=#,##0.00 ¤ FormatData/sr/latn.NumberPatterns/2=#,##0% FormatData/sr/latn.NumberElements/0=, FormatData/sr/latn.NumberElements/1=. @@ -4090,8 +4090,8 @@ FormatData/sr/latn.NumberElements/5=# FormatData/sr/latn.NumberElements/6=- FormatData/sr/latn.NumberElements/7=E -FormatData/sr/latn.NumberElements/8=\u2030 -FormatData/sr/latn.NumberElements/9=\u221e +FormatData/sr/latn.NumberElements/8=‰ +FormatData/sr/latn.NumberElements/9=∞ FormatData/sr/latn.NumberElements/10=NaN FormatData/sr/TimePatterns/0=HH:mm:ss zzzz FormatData/sr/TimePatterns/1=HH:mm:ss z @@ -4102,610 +4102,610 @@ FormatData/sr/DatePatterns/2=d. M. y. FormatData/sr/DatePatterns/3=d.M.yy. FormatData/sr/DateTimePatterns/0={1} {0} -LocaleNames/sr/af=\u0430\u0444\u0440\u0438\u043a\u0430\u043d\u0441 -LocaleNames/sr/ar=\u0430\u0440\u0430\u043f\u0441\u043a\u0438 -LocaleNames/sr/be=\u0431\u0435\u043b\u043e\u0440\u0443\u0441\u043a\u0438 -LocaleNames/sr/bg=\u0431\u0443\u0433\u0430\u0440\u0441\u043a\u0438 -LocaleNames/sr/br=\u0431\u0440\u0435\u0442\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/ca=\u043a\u0430\u0442\u0430\u043b\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/co=\u043a\u043e\u0440\u0437\u0438\u043a\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/cs=\u0447\u0435\u0448\u043a\u0438 -LocaleNames/sr/da=\u0434\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/de=\u043d\u0435\u043c\u0430\u0447\u043a\u0438 -LocaleNames/sr/el=\u0433\u0440\u0447\u043a\u0438 -LocaleNames/sr/en=\u0435\u043d\u0433\u043b\u0435\u0441\u043a\u0438 -LocaleNames/sr/eo=\u0435\u0441\u043f\u0435\u0440\u0430\u043d\u0442\u043e -LocaleNames/sr/es=\u0448\u043f\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/et=\u0435\u0441\u0442\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/eu=\u0431\u0430\u0441\u043a\u0438\u0458\u0441\u043a\u0438 -LocaleNames/sr/fa=\u043f\u0435\u0440\u0441\u0438\u0458\u0441\u043a\u0438 -LocaleNames/sr/fi=\u0444\u0438\u043d\u0441\u043a\u0438 -LocaleNames/sr/fr=\u0444\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0438 -LocaleNames/sr/ga=\u0438\u0440\u0441\u043a\u0438 -LocaleNames/sr/he=\u0445\u0435\u0431\u0440\u0435\u0458\u0441\u043a\u0438 -LocaleNames/sr/hi=\u0445\u0438\u043d\u0434\u0438 -LocaleNames/sr/hr=\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438 -LocaleNames/sr/hu=\u043c\u0430\u0452\u0430\u0440\u0441\u043a\u0438 -LocaleNames/sr/hy=\u0458\u0435\u0440\u043c\u0435\u043d\u0441\u043a\u0438 -LocaleNames/sr/id=\u0438\u043d\u0434\u043e\u043d\u0435\u0436\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/is=\u0438\u0441\u043b\u0430\u043d\u0434\u0441\u043a\u0438 -LocaleNames/sr/it=\u0438\u0442\u0430\u043b\u0438\u0458\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/ja=\u0458\u0430\u043f\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/ka=\u0433\u0440\u0443\u0437\u0438\u0458\u0441\u043a\u0438 -LocaleNames/sr/km=\u043a\u043c\u0435\u0440\u0441\u043a\u0438 -LocaleNames/sr/ko=\u043a\u043e\u0440\u0435\u0458\u0441\u043a\u0438 -LocaleNames/sr/ku=\u043a\u0443\u0440\u0434\u0441\u043a\u0438 -LocaleNames/sr/ky=\u043a\u0438\u0440\u0433\u0438\u0441\u043a\u0438 -LocaleNames/sr/la=\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438 -LocaleNames/sr/lt=\u043b\u0438\u0442\u0432\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/lv=\u043b\u0435\u0442\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/mk=\u043c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438 -LocaleNames/sr/mn=\u043c\u043e\u043d\u0433\u043e\u043b\u0441\u043a\u0438 -LocaleNames/sr/my=\u0431\u0443\u0440\u043c\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/nl=\u0445\u043e\u043b\u0430\u043d\u0434\u0441\u043a\u0438 -LocaleNames/sr/no=\u043d\u043e\u0440\u0432\u0435\u0448\u043a\u0438 -LocaleNames/sr/pl=\u043f\u043e\u0459\u0441\u043a\u0438 -LocaleNames/sr/pt=\u043f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0441\u043a\u0438 -LocaleNames/sr/rm=\u0440\u043e\u043c\u0430\u043d\u0448 -LocaleNames/sr/ro=\u0440\u0443\u043c\u0443\u043d\u0441\u043a\u0438 -LocaleNames/sr/ru=\u0440\u0443\u0441\u043a\u0438 -LocaleNames/sr/sa=\u0441\u0430\u043d\u0441\u043a\u0440\u0438\u0442 -LocaleNames/sr/sk=\u0441\u043b\u043e\u0432\u0430\u0447\u043a\u0438 -LocaleNames/sr/sl=\u0441\u043b\u043e\u0432\u0435\u043d\u0430\u0447\u043a\u0438 -LocaleNames/sr/sq=\u0430\u043b\u0431\u0430\u043d\u0441\u043a\u0438 -LocaleNames/sr/sr=\u0441\u0440\u043f\u0441\u043a\u0438 -LocaleNames/sr/sv=\u0448\u0432\u0435\u0434\u0441\u043a\u0438 -LocaleNames/sr/sw=\u0441\u0432\u0430\u0445\u0438\u043b\u0438 -LocaleNames/sr/tr=\u0442\u0443\u0440\u0441\u043a\u0438 -LocaleNames/sr/uk=\u0443\u043a\u0440\u0430\u0458\u0438\u043d\u0441\u043a\u0438 -LocaleNames/sr/vi=\u0432\u0438\u0458\u0435\u0442\u043d\u0430\u043c\u0441\u043a\u0438 -LocaleNames/sr/yi=\u0458\u0438\u0434\u0438\u0448 -LocaleNames/sr/zh=\u043a\u0438\u043d\u0435\u0441\u043a\u0438 -LocaleNames/sr/AD=\u0410\u043d\u0434\u043e\u0440\u0430 -LocaleNames/sr/AE=\u0423\u0458\u0435\u0434\u0438\u045a\u0435\u043d\u0438 \u0410\u0440\u0430\u043f\u0441\u043a\u0438 \u0415\u043c\u0438\u0440\u0430\u0442\u0438 -LocaleNames/sr/AF=\u0410\u0432\u0433\u0430\u043d\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/AL=\u0410\u043b\u0431\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/AM=\u0408\u0435\u0440\u043c\u0435\u043d\u0438\u0458\u0430 -LocaleNames/sr/AO=\u0410\u043d\u0433\u043e\u043b\u0430 -LocaleNames/sr/AR=\u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0430 -LocaleNames/sr/AT=\u0410\u0443\u0441\u0442\u0440\u0438\u0458\u0430 -LocaleNames/sr/AU=\u0410\u0443\u0441\u0442\u0440\u0430\u043b\u0438\u0458\u0430 -LocaleNames/sr/AW=\u0410\u0440\u0443\u0431\u0430 -LocaleNames/sr/AX=\u041e\u043b\u0430\u043d\u0434\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/AZ=\u0410\u0437\u0435\u0440\u0431\u0435\u0458\u045f\u0430\u043d -LocaleNames/sr/BA=\u0411\u043e\u0441\u043d\u0430 \u0438 \u0425\u0435\u0440\u0446\u0435\u0433\u043e\u0432\u0438\u043d\u0430 -LocaleNames/sr/BB=\u0411\u0430\u0440\u0431\u0430\u0434\u043e\u0441 -LocaleNames/sr/BD=\u0411\u0430\u043d\u0433\u043b\u0430\u0434\u0435\u0448 -LocaleNames/sr/BE=\u0411\u0435\u043b\u0433\u0438\u0458\u0430 -LocaleNames/sr/BF=\u0411\u0443\u0440\u043a\u0438\u043d\u0430 \u0424\u0430\u0441\u043e -LocaleNames/sr/BG=\u0411\u0443\u0433\u0430\u0440\u0441\u043a\u0430 -LocaleNames/sr/BH=\u0411\u0430\u0445\u0440\u0435\u0438\u043d -LocaleNames/sr/BI=\u0411\u0443\u0440\u0443\u043d\u0434\u0438 -LocaleNames/sr/BJ=\u0411\u0435\u043d\u0438\u043d -LocaleNames/sr/BM=\u0411\u0435\u0440\u043c\u0443\u0434\u0430 -LocaleNames/sr/BN=\u0411\u0440\u0443\u043d\u0435\u0458 -LocaleNames/sr/BO=\u0411\u043e\u043b\u0438\u0432\u0438\u0458\u0430 -LocaleNames/sr/BR=\u0411\u0440\u0430\u0437\u0438\u043b -LocaleNames/sr/BS=\u0411\u0430\u0445\u0430\u043c\u0438 -LocaleNames/sr/BT=\u0411\u0443\u0442\u0430\u043d -LocaleNames/sr/BV=\u041e\u0441\u0442\u0440\u0432\u043e \u0411\u0443\u0432\u0435 -LocaleNames/sr/BW=\u0411\u043e\u0446\u0432\u0430\u043d\u0430 -LocaleNames/sr/BY=\u0411\u0435\u043b\u043e\u0440\u0443\u0441\u0438\u0458\u0430 -LocaleNames/sr/BZ=\u0411\u0435\u043b\u0438\u0437\u0435 -LocaleNames/sr/CA=\u041a\u0430\u043d\u0430\u0434\u0430 -LocaleNames/sr/CC=\u041a\u043e\u043a\u043e\u0441\u043e\u0432\u0430 (\u041a\u0438\u043b\u0438\u043d\u0433\u043e\u0432\u0430) \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/CD=\u041a\u043e\u043d\u0433\u043e - \u041a\u0438\u043d\u0448\u0430\u0441\u0430 -LocaleNames/sr/CF=\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u043d\u043e\u0430\u0444\u0440\u0438\u0447\u043a\u0430 \u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 -LocaleNames/sr/CG=\u041a\u043e\u043d\u0433\u043e - \u0411\u0440\u0430\u0437\u0430\u0432\u0438\u043b -LocaleNames/sr/CH=\u0428\u0432\u0430\u0458\u0446\u0430\u0440\u0441\u043a\u0430 -LocaleNames/sr/CI=\u041e\u0431\u0430\u043b\u0430 \u0421\u043b\u043e\u043d\u043e\u0432\u0430\u0447\u0435 (\u041a\u043e\u0442 \u0434\u2019\u0418\u0432\u043e\u0430\u0440) -LocaleNames/sr/CL=\u0427\u0438\u043b\u0435 -LocaleNames/sr/CM=\u041a\u0430\u043c\u0435\u0440\u0443\u043d -LocaleNames/sr/CN=\u041a\u0438\u043d\u0430 -LocaleNames/sr/CO=\u041a\u043e\u043b\u0443\u043c\u0431\u0438\u0458\u0430 -LocaleNames/sr/CR=\u041a\u043e\u0441\u0442\u0430\u0440\u0438\u043a\u0430 -LocaleNames/sr/CU=\u041a\u0443\u0431\u0430 -LocaleNames/sr/CV=\u0417\u0435\u043b\u0435\u043d\u043e\u0440\u0442\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/CX=\u0411\u043e\u0436\u0438\u045b\u043d\u043e \u041e\u0441\u0442\u0440\u0432\u043e -LocaleNames/sr/CY=\u041a\u0438\u043f\u0430\u0440 -LocaleNames/sr/CZ=\u0427\u0435\u0448\u043a\u0430 -LocaleNames/sr/DE=\u041d\u0435\u043c\u0430\u0447\u043a\u0430 -LocaleNames/sr/DJ=\u040f\u0438\u0431\u0443\u0442\u0438 -LocaleNames/sr/DK=\u0414\u0430\u043d\u0441\u043a\u0430 -LocaleNames/sr/DM=\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430 -LocaleNames/sr/DO=\u0414\u043e\u043c\u0438\u043d\u0438\u043a\u0430\u043d\u0441\u043a\u0430 \u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 -LocaleNames/sr/DZ=\u0410\u043b\u0436\u0438\u0440 -LocaleNames/sr/EC=\u0415\u043a\u0432\u0430\u0434\u043e\u0440 -LocaleNames/sr/EE=\u0415\u0441\u0442\u043e\u043d\u0438\u0458\u0430 -LocaleNames/sr/EG=\u0415\u0433\u0438\u043f\u0430\u0442 -LocaleNames/sr/EH=\u0417\u0430\u043f\u0430\u0434\u043d\u0430 \u0421\u0430\u0445\u0430\u0440\u0430 -LocaleNames/sr/ER=\u0415\u0440\u0438\u0442\u0440\u0435\u0458\u0430 -LocaleNames/sr/ES=\u0428\u043f\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/ET=\u0415\u0442\u0438\u043e\u043f\u0438\u0458\u0430 -LocaleNames/sr/FI=\u0424\u0438\u043d\u0441\u043a\u0430 -LocaleNames/sr/FJ=\u0424\u0438\u045f\u0438 -LocaleNames/sr/FK=\u0424\u043e\u043a\u043b\u0430\u043d\u0434\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/FM=\u041c\u0438\u043a\u0440\u043e\u043d\u0435\u0437\u0438\u0458\u0430 -LocaleNames/sr/FO=\u0424\u0430\u0440\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/FR=\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0430 -LocaleNames/sr/GA=\u0413\u0430\u0431\u043e\u043d -LocaleNames/sr/GB=\u0423\u0458\u0435\u0434\u0438\u045a\u0435\u043d\u043e \u041a\u0440\u0430\u0459\u0435\u0432\u0441\u0442\u0432\u043e -LocaleNames/sr/GD=\u0413\u0440\u0435\u043d\u0430\u0434\u0430 -LocaleNames/sr/GE=\u0413\u0440\u0443\u0437\u0438\u0458\u0430 -LocaleNames/sr/GF=\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0430 \u0413\u0432\u0430\u0458\u0430\u043d\u0430 -LocaleNames/sr/GH=\u0413\u0430\u043d\u0430 -LocaleNames/sr/GI=\u0413\u0438\u0431\u0440\u0430\u043b\u0442\u0430\u0440 -LocaleNames/sr/GL=\u0413\u0440\u0435\u043d\u043b\u0430\u043d\u0434 -LocaleNames/sr/GM=\u0413\u0430\u043c\u0431\u0438\u0458\u0430 -LocaleNames/sr/GN=\u0413\u0432\u0438\u043d\u0435\u0458\u0430 -LocaleNames/sr/GP=\u0413\u0432\u0430\u0434\u0435\u043b\u0443\u043f -LocaleNames/sr/GQ=\u0415\u043a\u0432\u0430\u0442\u043e\u0440\u0438\u0458\u0430\u043b\u043d\u0430 \u0413\u0432\u0438\u043d\u0435\u0458\u0430 -LocaleNames/sr/GR=\u0413\u0440\u0447\u043a\u0430 -LocaleNames/sr/GS=\u0408\u0443\u0436\u043d\u0430 \u040f\u043e\u0440\u045f\u0438\u0458\u0430 \u0438 \u0408\u0443\u0436\u043d\u0430 \u0421\u0435\u043d\u0434\u0432\u0438\u0447\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/GT=\u0413\u0432\u0430\u0442\u0435\u043c\u0430\u043b\u0430 -LocaleNames/sr/GU=\u0413\u0443\u0430\u043c -LocaleNames/sr/GW=\u0413\u0432\u0438\u043d\u0435\u0458\u0430-\u0411\u0438\u0441\u0430\u043e -LocaleNames/sr/GY=\u0413\u0432\u0430\u0458\u0430\u043d\u0430 -LocaleNames/sr/HK=\u0421\u0410\u0420 \u0425\u043e\u043d\u0433\u043a\u043e\u043d\u0433 (\u041a\u0438\u043d\u0430) -LocaleNames/sr/HM=\u041e\u0441\u0442\u0440\u0432\u043e \u0425\u0435\u0440\u0434 \u0438 \u041c\u0435\u043a\u0434\u043e\u043d\u0430\u043b\u0434\u043e\u0432\u0430 \u043e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/HN=\u0425\u043e\u043d\u0434\u0443\u0440\u0430\u0441 -LocaleNames/sr/HR=\u0425\u0440\u0432\u0430\u0442\u0441\u043a\u0430 -LocaleNames/sr/HT=\u0425\u0430\u0438\u0442\u0438 -LocaleNames/sr/HU=\u041c\u0430\u0452\u0430\u0440\u0441\u043a\u0430 -LocaleNames/sr/ID=\u0418\u043d\u0434\u043e\u043d\u0435\u0437\u0438\u0458\u0430 -LocaleNames/sr/IE=\u0418\u0440\u0441\u043a\u0430 -LocaleNames/sr/IL=\u0418\u0437\u0440\u0430\u0435\u043b -LocaleNames/sr/IN=\u0418\u043d\u0434\u0438\u0458\u0430 -LocaleNames/sr/IQ=\u0418\u0440\u0430\u043a -LocaleNames/sr/IR=\u0418\u0440\u0430\u043d -LocaleNames/sr/IS=\u0418\u0441\u043b\u0430\u043d\u0434 -LocaleNames/sr/IT=\u0418\u0442\u0430\u043b\u0438\u0458\u0430 -LocaleNames/sr/JM=\u0408\u0430\u043c\u0430\u0458\u043a\u0430 -LocaleNames/sr/JO=\u0408\u043e\u0440\u0434\u0430\u043d -LocaleNames/sr/JP=\u0408\u0430\u043f\u0430\u043d -LocaleNames/sr/KE=\u041a\u0435\u043d\u0438\u0458\u0430 -LocaleNames/sr/KG=\u041a\u0438\u0440\u0433\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/KH=\u041a\u0430\u043c\u0431\u043e\u045f\u0430 -LocaleNames/sr/KI=\u041a\u0438\u0440\u0438\u0431\u0430\u0442\u0438 -LocaleNames/sr/KM=\u041a\u043e\u043c\u043e\u0440\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/KN=\u0421\u0435\u043d\u0442 \u041a\u0438\u0442\u0441 \u0438 \u041d\u0435\u0432\u0438\u0441 -LocaleNames/sr/KP=\u0421\u0435\u0432\u0435\u0440\u043d\u0430 \u041a\u043e\u0440\u0435\u0458\u0430 -LocaleNames/sr/KR=\u0408\u0443\u0436\u043d\u0430 \u041a\u043e\u0440\u0435\u0458\u0430 -LocaleNames/sr/KW=\u041a\u0443\u0432\u0430\u0458\u0442 -LocaleNames/sr/KY=\u041a\u0430\u0458\u043c\u0430\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/KZ=\u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d -LocaleNames/sr/LA=\u041b\u0430\u043e\u0441 -LocaleNames/sr/LB=\u041b\u0438\u0431\u0430\u043d -LocaleNames/sr/LC=\u0421\u0432\u0435\u0442\u0430 \u041b\u0443\u0446\u0438\u0458\u0430 -LocaleNames/sr/LI=\u041b\u0438\u0445\u0442\u0435\u043d\u0448\u0442\u0430\u0458\u043d -LocaleNames/sr/LK=\u0428\u0440\u0438 \u041b\u0430\u043d\u043a\u0430 -LocaleNames/sr/LR=\u041b\u0438\u0431\u0435\u0440\u0438\u0458\u0430 -LocaleNames/sr/LS=\u041b\u0435\u0441\u043e\u0442\u043e -LocaleNames/sr/LT=\u041b\u0438\u0442\u0432\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/LU=\u041b\u0443\u043a\u0441\u0435\u043c\u0431\u0443\u0440\u0433 -LocaleNames/sr/LV=\u041b\u0435\u0442\u043e\u043d\u0438\u0458\u0430 -LocaleNames/sr/LY=\u041b\u0438\u0431\u0438\u0458\u0430 -LocaleNames/sr/MA=\u041c\u0430\u0440\u043e\u043a\u043e -LocaleNames/sr/MC=\u041c\u043e\u043d\u0430\u043a\u043e -LocaleNames/sr/MD=\u041c\u043e\u043b\u0434\u0430\u0432\u0438\u0458\u0430 -LocaleNames/sr/MG=\u041c\u0430\u0434\u0430\u0433\u0430\u0441\u043a\u0430\u0440 -LocaleNames/sr/MH=\u041c\u0430\u0440\u0448\u0430\u043b\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/MK=\u0421\u0435\u0432\u0435\u0440\u043d\u0430 \u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0438\u0458\u0430 -LocaleNames/sr/ML=\u041c\u0430\u043b\u0438 -LocaleNames/sr/MM=\u041c\u0438\u0458\u0430\u043d\u043c\u0430\u0440 (\u0411\u0443\u0440\u043c\u0430) -LocaleNames/sr/MN=\u041c\u043e\u043d\u0433\u043e\u043b\u0438\u0458\u0430 -LocaleNames/sr/MO=\u0421\u0410\u0420 \u041c\u0430\u043a\u0430\u043e (\u041a\u0438\u043d\u0430) -LocaleNames/sr/MP=\u0421\u0435\u0432\u0435\u0440\u043d\u0430 \u041c\u0430\u0440\u0438\u0458\u0430\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/MQ=\u041c\u0430\u0440\u0442\u0438\u043d\u0438\u043a -LocaleNames/sr/MR=\u041c\u0430\u0443\u0440\u0438\u0442\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/MS=\u041c\u043e\u043d\u0441\u0435\u0440\u0430\u0442 -LocaleNames/sr/MT=\u041c\u0430\u043b\u0442\u0430 -LocaleNames/sr/MU=\u041c\u0430\u0443\u0440\u0438\u0446\u0438\u0458\u0443\u0441 -LocaleNames/sr/MV=\u041c\u0430\u043b\u0434\u0438\u0432\u0438 -LocaleNames/sr/MW=\u041c\u0430\u043b\u0430\u0432\u0438 -LocaleNames/sr/MX=\u041c\u0435\u043a\u0441\u0438\u043a\u043e -LocaleNames/sr/MY=\u041c\u0430\u043b\u0435\u0437\u0438\u0458\u0430 -LocaleNames/sr/MZ=\u041c\u043e\u0437\u0430\u043c\u0431\u0438\u043a -LocaleNames/sr/NA=\u041d\u0430\u043c\u0438\u0431\u0438\u0458\u0430 -LocaleNames/sr/NC=\u041d\u043e\u0432\u0430 \u041a\u0430\u043b\u0435\u0434\u043e\u043d\u0438\u0458\u0430 -LocaleNames/sr/NE=\u041d\u0438\u0433\u0435\u0440 -LocaleNames/sr/NF=\u041e\u0441\u0442\u0440\u0432\u043e \u041d\u043e\u0440\u0444\u043e\u043a -LocaleNames/sr/NG=\u041d\u0438\u0433\u0435\u0440\u0438\u0458\u0430 -LocaleNames/sr/NI=\u041d\u0438\u043a\u0430\u0440\u0430\u0433\u0432\u0430 -LocaleNames/sr/NL=\u0425\u043e\u043b\u0430\u043d\u0434\u0438\u0458\u0430 -LocaleNames/sr/NO=\u041d\u043e\u0440\u0432\u0435\u0448\u043a\u0430 -LocaleNames/sr/NP=\u041d\u0435\u043f\u0430\u043b -LocaleNames/sr/NR=\u041d\u0430\u0443\u0440\u0443 -LocaleNames/sr/NU=\u041d\u0438\u0443\u0435 -LocaleNames/sr/NZ=\u041d\u043e\u0432\u0438 \u0417\u0435\u043b\u0430\u043d\u0434 -LocaleNames/sr/OM=\u041e\u043c\u0430\u043d -LocaleNames/sr/PA=\u041f\u0430\u043d\u0430\u043c\u0430 -LocaleNames/sr/PE=\u041f\u0435\u0440\u0443 -LocaleNames/sr/PF=\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0430 \u041f\u043e\u043b\u0438\u043d\u0435\u0437\u0438\u0458\u0430 -LocaleNames/sr/PG=\u041f\u0430\u043f\u0443\u0430 \u041d\u043e\u0432\u0430 \u0413\u0432\u0438\u043d\u0435\u0458\u0430 -LocaleNames/sr/PH=\u0424\u0438\u043b\u0438\u043f\u0438\u043d\u0438 -LocaleNames/sr/PK=\u041f\u0430\u043a\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/PL=\u041f\u043e\u0459\u0441\u043a\u0430 -LocaleNames/sr/PM=\u0421\u0435\u043d \u041f\u0458\u0435\u0440 \u0438 \u041c\u0438\u043a\u0435\u043b\u043e\u043d -LocaleNames/sr/PN=\u041f\u0438\u0442\u043a\u0435\u0440\u043d -LocaleNames/sr/PR=\u041f\u043e\u0440\u0442\u043e\u0440\u0438\u043a\u043e -LocaleNames/sr/PS=\u041f\u0430\u043b\u0435\u0441\u0442\u0438\u043d\u0441\u043a\u0435 \u0442\u0435\u0440\u0438\u0442\u043e\u0440\u0438\u0458\u0435 -LocaleNames/sr/PT=\u041f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0438\u0458\u0430 -LocaleNames/sr/PW=\u041f\u0430\u043b\u0430\u0443 -LocaleNames/sr/PY=\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0458 -LocaleNames/sr/QA=\u041a\u0430\u0442\u0430\u0440 -LocaleNames/sr/RE=\u0420\u0435\u0438\u043d\u0438\u043e\u043d -LocaleNames/sr/RO=\u0420\u0443\u043c\u0443\u043d\u0438\u0458\u0430 -LocaleNames/sr/RU=\u0420\u0443\u0441\u0438\u0458\u0430 -LocaleNames/sr/RW=\u0420\u0443\u0430\u043d\u0434\u0430 -LocaleNames/sr/SA=\u0421\u0430\u0443\u0434\u0438\u0458\u0441\u043a\u0430 \u0410\u0440\u0430\u0431\u0438\u0458\u0430 -LocaleNames/sr/SB=\u0421\u043e\u043b\u043e\u043c\u043e\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/SC=\u0421\u0435\u0458\u0448\u0435\u043b\u0438 -LocaleNames/sr/SD=\u0421\u0443\u0434\u0430\u043d -LocaleNames/sr/SE=\u0428\u0432\u0435\u0434\u0441\u043a\u0430 -LocaleNames/sr/SG=\u0421\u0438\u043d\u0433\u0430\u043f\u0443\u0440 -LocaleNames/sr/SH=\u0421\u0432\u0435\u0442\u0430 \u0408\u0435\u043b\u0435\u043d\u0430 -LocaleNames/sr/SI=\u0421\u043b\u043e\u0432\u0435\u043d\u0438\u0458\u0430 -LocaleNames/sr/SJ=\u0421\u0432\u0430\u043b\u0431\u0430\u0440\u0434 \u0438 \u0408\u0430\u043d \u041c\u0430\u0458\u0435\u043d -LocaleNames/sr/SK=\u0421\u043b\u043e\u0432\u0430\u0447\u043a\u0430 -LocaleNames/sr/SL=\u0421\u0438\u0458\u0435\u0440\u0430 \u041b\u0435\u043e\u043d\u0435 -LocaleNames/sr/SM=\u0421\u0430\u043d \u041c\u0430\u0440\u0438\u043d\u043e -LocaleNames/sr/SN=\u0421\u0435\u043d\u0435\u0433\u0430\u043b -LocaleNames/sr/SO=\u0421\u043e\u043c\u0430\u043b\u0438\u0458\u0430 -LocaleNames/sr/SR=\u0421\u0443\u0440\u0438\u043d\u0430\u043c -LocaleNames/sr/ST=\u0421\u0430\u043e \u0422\u043e\u043c\u0435 \u0438 \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 -LocaleNames/sr/SV=\u0421\u0430\u043b\u0432\u0430\u0434\u043e\u0440 -LocaleNames/sr/SY=\u0421\u0438\u0440\u0438\u0458\u0430 -LocaleNames/sr/SZ=\u0421\u0432\u0430\u0437\u0438\u043b\u0435\u043d\u0434 -LocaleNames/sr/TC=\u041e\u0441\u0442\u0440\u0432\u0430 \u0422\u0443\u0440\u043a\u0441 \u0438 \u041a\u0430\u0438\u043a\u043e\u0441 -LocaleNames/sr/TD=\u0427\u0430\u0434 -LocaleNames/sr/TF=\u0424\u0440\u0430\u043d\u0446\u0443\u0441\u043a\u0435 \u0408\u0443\u0436\u043d\u0435 \u0422\u0435\u0440\u0438\u0442\u043e\u0440\u0438\u0458\u0435 -LocaleNames/sr/TG=\u0422\u043e\u0433\u043e -LocaleNames/sr/TH=\u0422\u0430\u0458\u043b\u0430\u043d\u0434 -LocaleNames/sr/TJ=\u0422\u0430\u045f\u0438\u043a\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/TK=\u0422\u043e\u043a\u0435\u043b\u0430\u0443 -LocaleNames/sr/TL=\u0422\u0438\u043c\u043e\u0440-\u041b\u0435\u0441\u0442\u0435 (\u0418\u0441\u0442\u043e\u0447\u043d\u0438 \u0422\u0438\u043c\u043e\u0440) -LocaleNames/sr/TM=\u0422\u0443\u0440\u043a\u043c\u0435\u043d\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/TN=\u0422\u0443\u043d\u0438\u0441 -LocaleNames/sr/TO=\u0422\u043e\u043d\u0433\u0430 -LocaleNames/sr/TR=\u0422\u0443\u0440\u0441\u043a\u0430 -LocaleNames/sr/TT=\u0422\u0440\u0438\u043d\u0438\u0434\u0430\u0434 \u0438 \u0422\u043e\u0431\u0430\u0433\u043e -LocaleNames/sr/TV=\u0422\u0443\u0432\u0430\u043b\u0443 -LocaleNames/sr/TW=\u0422\u0430\u0458\u0432\u0430\u043d -LocaleNames/sr/TZ=\u0422\u0430\u043d\u0437\u0430\u043d\u0438\u0458\u0430 -LocaleNames/sr/UA=\u0423\u043a\u0440\u0430\u0458\u0438\u043d\u0430 -LocaleNames/sr/UG=\u0423\u0433\u0430\u043d\u0434\u0430 -LocaleNames/sr/UM=\u0423\u0434\u0430\u0459\u0435\u043d\u0430 \u043e\u0441\u0442\u0440\u0432\u0430 \u0421\u0410\u0414 -LocaleNames/sr/US=\u0421\u0458\u0435\u0434\u0438\u045a\u0435\u043d\u0435 \u0414\u0440\u0436\u0430\u0432\u0435 -LocaleNames/sr/UY=\u0423\u0440\u0443\u0433\u0432\u0430\u0458 -LocaleNames/sr/UZ=\u0423\u0437\u0431\u0435\u043a\u0438\u0441\u0442\u0430\u043d -LocaleNames/sr/VA=\u0412\u0430\u0442\u0438\u043a\u0430\u043d -LocaleNames/sr/VC=\u0421\u0435\u043d\u0442 \u0412\u0438\u043d\u0441\u0435\u043d\u0442 \u0438 \u0413\u0440\u0435\u043d\u0430\u0434\u0438\u043d\u0438 -LocaleNames/sr/VE=\u0412\u0435\u043d\u0435\u0446\u0443\u0435\u043b\u0430 -LocaleNames/sr/VG=\u0411\u0440\u0438\u0442\u0430\u043d\u0441\u043a\u0430 \u0414\u0435\u0432\u0438\u0447\u0430\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/VI=\u0410\u043c\u0435\u0440\u0438\u0447\u043a\u0430 \u0414\u0435\u0432\u0438\u0447\u0430\u043d\u0441\u043a\u0430 \u041e\u0441\u0442\u0440\u0432\u0430 -LocaleNames/sr/VN=\u0412\u0438\u0458\u0435\u0442\u043d\u0430\u043c -LocaleNames/sr/VU=\u0412\u0430\u043d\u0443\u0430\u0442\u0443 -LocaleNames/sr/WF=\u0412\u0430\u043b\u0438\u0441 \u0438 \u0424\u0443\u0442\u0443\u043d\u0430 -LocaleNames/sr/WS=\u0421\u0430\u043c\u043e\u0430 -LocaleNames/sr/YE=\u0408\u0435\u043c\u0435\u043d -LocaleNames/sr/YT=\u041c\u0430\u0458\u043e\u0442 -LocaleNames/sr/ZM=\u0417\u0430\u043c\u0431\u0438\u0458\u0430 -LocaleNames/sr/ZW=\u0417\u0438\u043c\u0431\u0430\u0431\u0432\u0435 -CurrencyNames/sr_CS/EUR=\u20ac +LocaleNames/sr/af=африканс +LocaleNames/sr/ar=арапски +LocaleNames/sr/be=белоруски +LocaleNames/sr/bg=бугарски +LocaleNames/sr/br=бретонски +LocaleNames/sr/ca=каталонски +LocaleNames/sr/co=корзикански +LocaleNames/sr/cs=чешки +LocaleNames/sr/da=дански +LocaleNames/sr/de=немачки +LocaleNames/sr/el=грчки +LocaleNames/sr/en=енглески +LocaleNames/sr/eo=есперанто +LocaleNames/sr/es=шпански +LocaleNames/sr/et=естонски +LocaleNames/sr/eu=баскијски +LocaleNames/sr/fa=персијски +LocaleNames/sr/fi=фински +LocaleNames/sr/fr=француски +LocaleNames/sr/ga=ирски +LocaleNames/sr/he=хебрејски +LocaleNames/sr/hi=хинди +LocaleNames/sr/hr=хрватски +LocaleNames/sr/hu=мађарски +LocaleNames/sr/hy=јерменски +LocaleNames/sr/id=индонежански +LocaleNames/sr/is=исландски +LocaleNames/sr/it=италијански +LocaleNames/sr/ja=јапански +LocaleNames/sr/ka=грузијски +LocaleNames/sr/km=кмерски +LocaleNames/sr/ko=корејски +LocaleNames/sr/ku=курдски +LocaleNames/sr/ky=киргиски +LocaleNames/sr/la=латински +LocaleNames/sr/lt=литвански +LocaleNames/sr/lv=летонски +LocaleNames/sr/mk=македонски +LocaleNames/sr/mn=монголски +LocaleNames/sr/my=бурмански +LocaleNames/sr/nl=холандски +LocaleNames/sr/no=норвешки +LocaleNames/sr/pl=пољски +LocaleNames/sr/pt=португалски +LocaleNames/sr/rm=романш +LocaleNames/sr/ro=румунски +LocaleNames/sr/ru=руски +LocaleNames/sr/sa=санскрит +LocaleNames/sr/sk=словачки +LocaleNames/sr/sl=словеначки +LocaleNames/sr/sq=албански +LocaleNames/sr/sr=српски +LocaleNames/sr/sv=шведски +LocaleNames/sr/sw=свахили +LocaleNames/sr/tr=турски +LocaleNames/sr/uk=украјински +LocaleNames/sr/vi=вијетнамски +LocaleNames/sr/yi=јидиш +LocaleNames/sr/zh=кинески +LocaleNames/sr/AD=Андора +LocaleNames/sr/AE=Уједињени Арапски Емирати +LocaleNames/sr/AF=Авганистан +LocaleNames/sr/AL=Албанија +LocaleNames/sr/AM=Јерменија +LocaleNames/sr/AO=Ангола +LocaleNames/sr/AR=Аргентина +LocaleNames/sr/AT=Аустрија +LocaleNames/sr/AU=Аустралија +LocaleNames/sr/AW=Аруба +LocaleNames/sr/AX=Оландска Острва +LocaleNames/sr/AZ=Азербејџан +LocaleNames/sr/BA=Босна и Херцеговина +LocaleNames/sr/BB=Барбадос +LocaleNames/sr/BD=Бангладеш +LocaleNames/sr/BE=Белгија +LocaleNames/sr/BF=Буркина Фасо +LocaleNames/sr/BG=Бугарска +LocaleNames/sr/BH=Бахреин +LocaleNames/sr/BI=Бурунди +LocaleNames/sr/BJ=Бенин +LocaleNames/sr/BM=Бермуда +LocaleNames/sr/BN=Брунеј +LocaleNames/sr/BO=Боливија +LocaleNames/sr/BR=Бразил +LocaleNames/sr/BS=Бахами +LocaleNames/sr/BT=Бутан +LocaleNames/sr/BV=Острво Буве +LocaleNames/sr/BW=Боцвана +LocaleNames/sr/BY=Белорусија +LocaleNames/sr/BZ=Белизе +LocaleNames/sr/CA=Канада +LocaleNames/sr/CC=Кокосова (Килингова) Острва +LocaleNames/sr/CD=Конго - Киншаса +LocaleNames/sr/CF=Централноафричка Република +LocaleNames/sr/CG=Конго - Бразавил +LocaleNames/sr/CH=Швајцарска +LocaleNames/sr/CI=Обала Слоноваче (Кот д’Ивоар) +LocaleNames/sr/CL=Чиле +LocaleNames/sr/CM=Камерун +LocaleNames/sr/CN=Кина +LocaleNames/sr/CO=Колумбија +LocaleNames/sr/CR=Костарика +LocaleNames/sr/CU=Куба +LocaleNames/sr/CV=Зеленортска Острва +LocaleNames/sr/CX=Божићно Острво +LocaleNames/sr/CY=Кипар +LocaleNames/sr/CZ=Чешка +LocaleNames/sr/DE=Немачка +LocaleNames/sr/DJ=Џибути +LocaleNames/sr/DK=Данска +LocaleNames/sr/DM=Доминика +LocaleNames/sr/DO=Доминиканска Република +LocaleNames/sr/DZ=Алжир +LocaleNames/sr/EC=Еквадор +LocaleNames/sr/EE=Естонија +LocaleNames/sr/EG=Египат +LocaleNames/sr/EH=Западна Сахара +LocaleNames/sr/ER=Еритреја +LocaleNames/sr/ES=Шпанија +LocaleNames/sr/ET=Етиопија +LocaleNames/sr/FI=Финска +LocaleNames/sr/FJ=Фиџи +LocaleNames/sr/FK=Фокландска Острва +LocaleNames/sr/FM=Микронезија +LocaleNames/sr/FO=Фарска Острва +LocaleNames/sr/FR=Француска +LocaleNames/sr/GA=Габон +LocaleNames/sr/GB=Уједињено Краљевство +LocaleNames/sr/GD=Гренада +LocaleNames/sr/GE=Грузија +LocaleNames/sr/GF=Француска Гвајана +LocaleNames/sr/GH=Гана +LocaleNames/sr/GI=Гибралтар +LocaleNames/sr/GL=Гренланд +LocaleNames/sr/GM=Гамбија +LocaleNames/sr/GN=Гвинеја +LocaleNames/sr/GP=Гваделуп +LocaleNames/sr/GQ=Екваторијална Гвинеја +LocaleNames/sr/GR=Грчка +LocaleNames/sr/GS=Јужна Џорџија и Јужна Сендвичка Острва +LocaleNames/sr/GT=Гватемала +LocaleNames/sr/GU=Гуам +LocaleNames/sr/GW=Гвинеја-Бисао +LocaleNames/sr/GY=Гвајана +LocaleNames/sr/HK=САР Хонгконг (Кина) +LocaleNames/sr/HM=Острво Херд и Мекдоналдова острва +LocaleNames/sr/HN=Хондурас +LocaleNames/sr/HR=Хрватска +LocaleNames/sr/HT=Хаити +LocaleNames/sr/HU=Мађарска +LocaleNames/sr/ID=Индонезија +LocaleNames/sr/IE=Ирска +LocaleNames/sr/IL=Израел +LocaleNames/sr/IN=Индија +LocaleNames/sr/IQ=Ирак +LocaleNames/sr/IR=Иран +LocaleNames/sr/IS=Исланд +LocaleNames/sr/IT=Италија +LocaleNames/sr/JM=Јамајка +LocaleNames/sr/JO=Јордан +LocaleNames/sr/JP=Јапан +LocaleNames/sr/KE=Кенија +LocaleNames/sr/KG=Киргистан +LocaleNames/sr/KH=Камбоџа +LocaleNames/sr/KI=Кирибати +LocaleNames/sr/KM=Коморска Острва +LocaleNames/sr/KN=Сент Китс и Невис +LocaleNames/sr/KP=Северна Кореја +LocaleNames/sr/KR=Јужна Кореја +LocaleNames/sr/KW=Кувајт +LocaleNames/sr/KY=Кајманска Острва +LocaleNames/sr/KZ=Казахстан +LocaleNames/sr/LA=Лаос +LocaleNames/sr/LB=Либан +LocaleNames/sr/LC=Света Луција +LocaleNames/sr/LI=Лихтенштајн +LocaleNames/sr/LK=Шри Ланка +LocaleNames/sr/LR=Либерија +LocaleNames/sr/LS=Лесото +LocaleNames/sr/LT=Литванија +LocaleNames/sr/LU=Луксембург +LocaleNames/sr/LV=Летонија +LocaleNames/sr/LY=Либија +LocaleNames/sr/MA=Мароко +LocaleNames/sr/MC=Монако +LocaleNames/sr/MD=Молдавија +LocaleNames/sr/MG=Мадагаскар +LocaleNames/sr/MH=Маршалска Острва +LocaleNames/sr/MK=Северна Македонија +LocaleNames/sr/ML=Мали +LocaleNames/sr/MM=Мијанмар (Бурма) +LocaleNames/sr/MN=Монголија +LocaleNames/sr/MO=САР Макао (Кина) +LocaleNames/sr/MP=Северна Маријанска Острва +LocaleNames/sr/MQ=Мартиник +LocaleNames/sr/MR=Мауританија +LocaleNames/sr/MS=Монсерат +LocaleNames/sr/MT=Малта +LocaleNames/sr/MU=Маурицијус +LocaleNames/sr/MV=Малдиви +LocaleNames/sr/MW=Малави +LocaleNames/sr/MX=Мексико +LocaleNames/sr/MY=Малезија +LocaleNames/sr/MZ=Мозамбик +LocaleNames/sr/NA=Намибија +LocaleNames/sr/NC=Нова Каледонија +LocaleNames/sr/NE=Нигер +LocaleNames/sr/NF=Острво Норфок +LocaleNames/sr/NG=Нигерија +LocaleNames/sr/NI=Никарагва +LocaleNames/sr/NL=Холандија +LocaleNames/sr/NO=Норвешка +LocaleNames/sr/NP=Непал +LocaleNames/sr/NR=Науру +LocaleNames/sr/NU=Ниуе +LocaleNames/sr/NZ=Нови Зеланд +LocaleNames/sr/OM=Оман +LocaleNames/sr/PA=Панама +LocaleNames/sr/PE=Перу +LocaleNames/sr/PF=Француска Полинезија +LocaleNames/sr/PG=Папуа Нова Гвинеја +LocaleNames/sr/PH=Филипини +LocaleNames/sr/PK=Пакистан +LocaleNames/sr/PL=Пољска +LocaleNames/sr/PM=Сен Пјер и Микелон +LocaleNames/sr/PN=Питкерн +LocaleNames/sr/PR=Порторико +LocaleNames/sr/PS=Палестинске територије +LocaleNames/sr/PT=Португалија +LocaleNames/sr/PW=Палау +LocaleNames/sr/PY=Парагвај +LocaleNames/sr/QA=Катар +LocaleNames/sr/RE=Реинион +LocaleNames/sr/RO=Румунија +LocaleNames/sr/RU=Русија +LocaleNames/sr/RW=Руанда +LocaleNames/sr/SA=Саудијска Арабија +LocaleNames/sr/SB=Соломонска Острва +LocaleNames/sr/SC=Сејшели +LocaleNames/sr/SD=Судан +LocaleNames/sr/SE=Шведска +LocaleNames/sr/SG=Сингапур +LocaleNames/sr/SH=Света Јелена +LocaleNames/sr/SI=Словенија +LocaleNames/sr/SJ=Свалбард и Јан Мајен +LocaleNames/sr/SK=Словачка +LocaleNames/sr/SL=Сијера Леоне +LocaleNames/sr/SM=Сан Марино +LocaleNames/sr/SN=Сенегал +LocaleNames/sr/SO=Сомалија +LocaleNames/sr/SR=Суринам +LocaleNames/sr/ST=Сао Томе и Принципе +LocaleNames/sr/SV=Салвадор +LocaleNames/sr/SY=Сирија +LocaleNames/sr/SZ=Свазиленд +LocaleNames/sr/TC=Острва Туркс и Каикос +LocaleNames/sr/TD=Чад +LocaleNames/sr/TF=Француске Јужне Територије +LocaleNames/sr/TG=Того +LocaleNames/sr/TH=Тајланд +LocaleNames/sr/TJ=Таџикистан +LocaleNames/sr/TK=Токелау +LocaleNames/sr/TL=Тимор-Лесте (Источни Тимор) +LocaleNames/sr/TM=Туркменистан +LocaleNames/sr/TN=Тунис +LocaleNames/sr/TO=Тонга +LocaleNames/sr/TR=Турска +LocaleNames/sr/TT=Тринидад и Тобаго +LocaleNames/sr/TV=Тувалу +LocaleNames/sr/TW=Тајван +LocaleNames/sr/TZ=Танзанија +LocaleNames/sr/UA=Украјина +LocaleNames/sr/UG=Уганда +LocaleNames/sr/UM=Удаљена острва САД +LocaleNames/sr/US=Сједињене Државе +LocaleNames/sr/UY=Уругвај +LocaleNames/sr/UZ=Узбекистан +LocaleNames/sr/VA=Ватикан +LocaleNames/sr/VC=Сент Винсент и Гренадини +LocaleNames/sr/VE=Венецуела +LocaleNames/sr/VG=Британска Девичанска Острва +LocaleNames/sr/VI=Америчка Девичанска Острва +LocaleNames/sr/VN=Вијетнам +LocaleNames/sr/VU=Вануату +LocaleNames/sr/WF=Валис и Футуна +LocaleNames/sr/WS=Самоа +LocaleNames/sr/YE=Јемен +LocaleNames/sr/YT=Мајот +LocaleNames/sr/ZM=Замбија +LocaleNames/sr/ZW=Зимбабве +CurrencyNames/sr_CS/EUR=€ # bug 6498742: data is changed -CurrencyNames/sr_BA/BAM=\u041a\u041c +CurrencyNames/sr_BA/BAM=КМ -CurrencyNames/sr_BA/EUR=\u20ac +CurrencyNames/sr_BA/EUR=€ # bug #6351682 Country name for Korean is wrong in Simplified Chinese -LocaleNames/zh/KP=\u671d\u9c9c -LocaleNames/zh/KR=\u97e9\u56fd +LocaleNames/zh/KP=朝鲜 +LocaleNames/zh/KR=韩国 # bug 6379382: Finnish time of day should be formatted as "H.mm.ss", not "hh:mm:ss" FormatData/fi/TimePatterns/0=H.mm.ss zzzz FormatData/fi/TimePatterns/1=H.mm.ss z # bug 6498742: data for IR & ZW changed -LocaleNames/pt_PT/IR=Ir\u00e3o -LocaleNames/pt_PT/ZW=Zimbabu\u00e9 +LocaleNames/pt_PT/IR=Irão +LocaleNames/pt_PT/ZW=Zimbabué -LocaleNames/el/ar=\u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el/be=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03b9\u03ba\u03ac -LocaleNames/el/bg=\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03b9\u03ba\u03ac -LocaleNames/el/bn=\u0392\u03b5\u03b3\u03b3\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/bo=\u0398\u03b9\u03b2\u03b5\u03c4\u03b9\u03b1\u03bd\u03ac -LocaleNames/el/bs=\u0392\u03bf\u03c3\u03bd\u03b9\u03b1\u03ba\u03ac -LocaleNames/el/ca=\u039a\u03b1\u03c4\u03b1\u03bb\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/co=\u039a\u03bf\u03c1\u03c3\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/cs=\u03a4\u03c3\u03b5\u03c7\u03b9\u03ba\u03ac -LocaleNames/el/cy=\u039f\u03c5\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/da=\u0394\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/de=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/el=\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/en=\u0391\u03b3\u03b3\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/es=\u0399\u03c3\u03c0\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/et=\u0395\u03c3\u03b8\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/eu=\u0392\u03b1\u03c3\u03ba\u03b9\u03ba\u03ac -LocaleNames/el/fa=\u03a0\u03b5\u03c1\u03c3\u03b9\u03ba\u03ac -LocaleNames/el/fi=\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/fr=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/ga=\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/gd=\u03a3\u03ba\u03c9\u03c4\u03b9\u03ba\u03ac \u039a\u03b5\u03bb\u03c4\u03b9\u03ba\u03ac -LocaleNames/el/he=\u0395\u03b2\u03c1\u03b1\u03ca\u03ba\u03ac -LocaleNames/el/hi=\u03a7\u03af\u03bd\u03c4\u03b9 -LocaleNames/el/hr=\u039a\u03c1\u03bf\u03b1\u03c4\u03b9\u03ba\u03ac -LocaleNames/el/hu=\u039f\u03c5\u03b3\u03b3\u03c1\u03b9\u03ba\u03ac -LocaleNames/el/hy=\u0391\u03c1\u03bc\u03b5\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/id=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03b9\u03b1\u03ba\u03ac -LocaleNames/el/is=\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/it=\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/ja=\u0399\u03b1\u03c0\u03c9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/ka=\u0393\u03b5\u03c9\u03c1\u03b3\u03b9\u03b1\u03bd\u03ac -LocaleNames/el/ko=\u039a\u03bf\u03c1\u03b5\u03b1\u03c4\u03b9\u03ba\u03ac -LocaleNames/el/la=\u039b\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/lt=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/lv=\u039b\u03b5\u03c4\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/mk=\u03a3\u03bb\u03b1\u03b2\u03bf\u03bc\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/mn=\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/mt=\u039c\u03b1\u03bb\u03c4\u03b5\u03b6\u03b9\u03ba\u03ac -LocaleNames/el/no=\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03b9\u03ba\u03ac -LocaleNames/el/pl=\u03a0\u03bf\u03bb\u03c9\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/pt=\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03b9\u03ba\u03ac -LocaleNames/el/ro=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/ru=\u03a1\u03c9\u03c3\u03b9\u03ba\u03ac -LocaleNames/el/sk=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03b9\u03ba\u03ac -LocaleNames/el/sl=\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/sq=\u0391\u03bb\u03b2\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/sr=\u03a3\u03b5\u03c1\u03b2\u03b9\u03ba\u03ac -LocaleNames/el/sv=\u03a3\u03bf\u03c5\u03b7\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/th=\u03a4\u03b1\u03ca\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac -LocaleNames/el/tr=\u03a4\u03bf\u03c5\u03c1\u03ba\u03b9\u03ba\u03ac -LocaleNames/el/uk=\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03b9\u03ba\u03ac -LocaleNames/el/vi=\u0392\u03b9\u03b5\u03c4\u03bd\u03b1\u03bc\u03b9\u03ba\u03ac -LocaleNames/el/yi=\u0393\u03af\u03bd\u03c4\u03b9\u03c2 -LocaleNames/el/zh=\u039a\u03b9\u03bd\u03b5\u03b6\u03b9\u03ba\u03ac -LocaleNames/el/AD=\u0391\u03bd\u03b4\u03cc\u03c1\u03b1 -LocaleNames/el/AE=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b1 \u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac \u0395\u03bc\u03b9\u03c1\u03ac\u03c4\u03b1 -LocaleNames/el/AF=\u0391\u03c6\u03b3\u03b1\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/AG=\u0391\u03bd\u03c4\u03af\u03b3\u03ba\u03bf\u03c5\u03b1 \u03ba\u03b1\u03b9 \u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03bf\u03cd\u03bd\u03c4\u03b1 -LocaleNames/el/AI=\u0391\u03bd\u03b3\u03ba\u03bf\u03c5\u03af\u03bb\u03b1 -LocaleNames/el/AL=\u0391\u03bb\u03b2\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/AM=\u0391\u03c1\u03bc\u03b5\u03bd\u03af\u03b1 -LocaleNames/el/AO=\u0391\u03b3\u03ba\u03cc\u03bb\u03b1 -LocaleNames/el/AQ=\u0391\u03bd\u03c4\u03b1\u03c1\u03ba\u03c4\u03b9\u03ba\u03ae -LocaleNames/el/AR=\u0391\u03c1\u03b3\u03b5\u03bd\u03c4\u03b9\u03bd\u03ae -LocaleNames/el/AS=\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u03a3\u03b1\u03bc\u03cc\u03b1 -LocaleNames/el/AT=\u0391\u03c5\u03c3\u03c4\u03c1\u03af\u03b1 -LocaleNames/el/AU=\u0391\u03c5\u03c3\u03c4\u03c1\u03b1\u03bb\u03af\u03b1 -LocaleNames/el/AW=\u0391\u03c1\u03bf\u03cd\u03bc\u03c0\u03b1 -LocaleNames/el/AX=\u039d\u03ae\u03c3\u03bf\u03b9 \u038c\u03bb\u03b1\u03bd\u03c4 -LocaleNames/el/AZ=\u0391\u03b6\u03b5\u03c1\u03bc\u03c0\u03b1\u03ca\u03c4\u03b6\u03ac\u03bd -LocaleNames/el/BA=\u0392\u03bf\u03c3\u03bd\u03af\u03b1 - \u0395\u03c1\u03b6\u03b5\u03b3\u03bf\u03b2\u03af\u03bd\u03b7 -LocaleNames/el/BB=\u039c\u03c0\u03b1\u03c1\u03bc\u03c0\u03ad\u03b9\u03bd\u03c4\u03bf\u03c2 -LocaleNames/el/BD=\u039c\u03c0\u03b1\u03bd\u03b3\u03ba\u03bb\u03b1\u03bd\u03c4\u03ad\u03c2 -LocaleNames/el/BE=\u0392\u03ad\u03bb\u03b3\u03b9\u03bf -LocaleNames/el/BF=\u039c\u03c0\u03bf\u03c5\u03c1\u03ba\u03af\u03bd\u03b1 \u03a6\u03ac\u03c3\u03bf -LocaleNames/el/BG=\u0392\u03bf\u03c5\u03bb\u03b3\u03b1\u03c1\u03af\u03b1 -LocaleNames/el/BH=\u039c\u03c0\u03b1\u03c7\u03c1\u03ad\u03b9\u03bd -LocaleNames/el/BI=\u039c\u03c0\u03bf\u03c5\u03c1\u03bf\u03cd\u03bd\u03c4\u03b9 -LocaleNames/el/BJ=\u039c\u03c0\u03b5\u03bd\u03af\u03bd -LocaleNames/el/BM=\u0392\u03b5\u03c1\u03bc\u03bf\u03cd\u03b4\u03b5\u03c2 -LocaleNames/el/BN=\u039c\u03c0\u03c1\u03bf\u03c5\u03bd\u03ad\u03b9 -LocaleNames/el/BO=\u0392\u03bf\u03bb\u03b9\u03b2\u03af\u03b1 -LocaleNames/el/BR=\u0392\u03c1\u03b1\u03b6\u03b9\u03bb\u03af\u03b1 -LocaleNames/el/BS=\u039c\u03c0\u03b1\u03c7\u03ac\u03bc\u03b5\u03c2 -LocaleNames/el/BT=\u039c\u03c0\u03bf\u03c5\u03c4\u03ac\u03bd -LocaleNames/el/BV=\u039d\u03ae\u03c3\u03bf\u03c2 \u039c\u03c0\u03bf\u03c5\u03b2\u03ad -LocaleNames/el/BW=\u039c\u03c0\u03bf\u03c4\u03c3\u03bf\u03c5\u03ac\u03bd\u03b1 -LocaleNames/el/BY=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03af\u03b1 -LocaleNames/el/BZ=\u039c\u03c0\u03b5\u03bb\u03af\u03b6 -LocaleNames/el/CA=\u039a\u03b1\u03bd\u03b1\u03b4\u03ac\u03c2 -LocaleNames/el/CC=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03cc\u03ba\u03bf\u03c2 (\u039a\u03af\u03bb\u03b9\u03bd\u03b3\u03ba) -LocaleNames/el/CD=\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039a\u03b9\u03bd\u03c3\u03ac\u03c3\u03b1 -LocaleNames/el/CF=\u039a\u03b5\u03bd\u03c4\u03c1\u03bf\u03b1\u03c6\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1 -LocaleNames/el/CG=\u039a\u03bf\u03bd\u03b3\u03ba\u03cc - \u039c\u03c0\u03c1\u03b1\u03b6\u03b1\u03b2\u03af\u03bb -LocaleNames/el/CH=\u0395\u03bb\u03b2\u03b5\u03c4\u03af\u03b1 -LocaleNames/el/CI=\u0391\u03ba\u03c4\u03ae \u0395\u03bb\u03b5\u03c6\u03b1\u03bd\u03c4\u03bf\u03c3\u03c4\u03bf\u03cd -LocaleNames/el/CK=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03bf\u03c5\u03ba -LocaleNames/el/CL=\u03a7\u03b9\u03bb\u03ae -LocaleNames/el/CM=\u039a\u03b1\u03bc\u03b5\u03c1\u03bf\u03cd\u03bd -LocaleNames/el/CN=\u039a\u03af\u03bd\u03b1 -LocaleNames/el/CO=\u039a\u03bf\u03bb\u03bf\u03bc\u03b2\u03af\u03b1 -LocaleNames/el/CR=\u039a\u03cc\u03c3\u03c4\u03b1 \u03a1\u03af\u03ba\u03b1 -LocaleNames/el/CU=\u039a\u03bf\u03cd\u03b2\u03b1 -LocaleNames/el/CV=\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf \u0391\u03ba\u03c1\u03c9\u03c4\u03ae\u03c1\u03b9\u03bf -LocaleNames/el/CX=\u039d\u03ae\u03c3\u03bf\u03c2 \u03c4\u03c9\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd -LocaleNames/el/CY=\u039a\u03cd\u03c0\u03c1\u03bf\u03c2 -LocaleNames/el/CZ=\u03a4\u03c3\u03b5\u03c7\u03af\u03b1 -LocaleNames/el/DE=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/DJ=\u03a4\u03b6\u03b9\u03bc\u03c0\u03bf\u03c5\u03c4\u03af -LocaleNames/el/DK=\u0394\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/DM=\u039d\u03c4\u03bf\u03bc\u03af\u03bd\u03b9\u03ba\u03b1 -LocaleNames/el/DO=\u0394\u03bf\u03bc\u03b9\u03bd\u03b9\u03ba\u03b1\u03bd\u03ae \u0394\u03b7\u03bc\u03bf\u03ba\u03c1\u03b1\u03c4\u03af\u03b1 -LocaleNames/el/DZ=\u0391\u03bb\u03b3\u03b5\u03c1\u03af\u03b1 -LocaleNames/el/EC=\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03cc\u03c2 -LocaleNames/el/EE=\u0395\u03c3\u03b8\u03bf\u03bd\u03af\u03b1 -LocaleNames/el/EG=\u0391\u03af\u03b3\u03c5\u03c0\u03c4\u03bf\u03c2 -LocaleNames/el/EH=\u0394\u03c5\u03c4\u03b9\u03ba\u03ae \u03a3\u03b1\u03c7\u03ac\u03c1\u03b1 -LocaleNames/el/ER=\u0395\u03c1\u03c5\u03b8\u03c1\u03b1\u03af\u03b1 -LocaleNames/el/ES=\u0399\u03c3\u03c0\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/ET=\u0391\u03b9\u03b8\u03b9\u03bf\u03c0\u03af\u03b1 -LocaleNames/el/FI=\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/FJ=\u03a6\u03af\u03c4\u03b6\u03b9 -LocaleNames/el/FK=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03cc\u03ba\u03bb\u03b1\u03bd\u03c4 -LocaleNames/el/FM=\u039c\u03b9\u03ba\u03c1\u03bf\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el/FO=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a6\u03b5\u03c1\u03cc\u03b5\u03c2 -LocaleNames/el/FR=\u0393\u03b1\u03bb\u03bb\u03af\u03b1 -LocaleNames/el/GA=\u0393\u03ba\u03b1\u03bc\u03c0\u03cc\u03bd -LocaleNames/el/GB=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03bf \u0392\u03b1\u03c3\u03af\u03bb\u03b5\u03b9\u03bf -LocaleNames/el/GD=\u0393\u03c1\u03b5\u03bd\u03ac\u03b4\u03b1 -LocaleNames/el/GE=\u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 -LocaleNames/el/GF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1 -LocaleNames/el/GH=\u0393\u03ba\u03ac\u03bd\u03b1 -LocaleNames/el/GI=\u0393\u03b9\u03b2\u03c1\u03b1\u03bb\u03c4\u03ac\u03c1 -LocaleNames/el/GL=\u0393\u03c1\u03bf\u03b9\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/GM=\u0393\u03ba\u03ac\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el/GN=\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el/GP=\u0393\u03bf\u03c5\u03b1\u03b4\u03b5\u03bb\u03bf\u03cd\u03c0\u03b7 -LocaleNames/el/GQ=\u0399\u03c3\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ae \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el/GS=\u039d\u03ae\u03c3\u03bf\u03b9 \u039d\u03cc\u03c4\u03b9\u03b1 \u0393\u03b5\u03c9\u03c1\u03b3\u03af\u03b1 \u03ba\u03b1\u03b9 \u039d\u03cc\u03c4\u03b9\u03b5\u03c2 \u03a3\u03ac\u03bd\u03c4\u03bf\u03c5\u03b9\u03c4\u03c2 -LocaleNames/el/GT=\u0393\u03bf\u03c5\u03b1\u03c4\u03b5\u03bc\u03ac\u03bb\u03b1 -LocaleNames/el/GU=\u0393\u03ba\u03bf\u03c5\u03ac\u03bc -LocaleNames/el/GW=\u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 \u039c\u03c0\u03b9\u03c3\u03ac\u03bf\u03c5 -LocaleNames/el/GY=\u0393\u03bf\u03c5\u03b9\u03ac\u03bd\u03b1 -LocaleNames/el/HK=\u03a7\u03bf\u03bd\u03b3\u03ba \u039a\u03bf\u03bd\u03b3\u03ba \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2 -LocaleNames/el/HM=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a7\u03b5\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u039c\u03b1\u03ba\u03bd\u03c4\u03cc\u03bd\u03b1\u03bb\u03bd\u03c4 -LocaleNames/el/HN=\u039f\u03bd\u03b4\u03bf\u03cd\u03c1\u03b1 -LocaleNames/el/HR=\u039a\u03c1\u03bf\u03b1\u03c4\u03af\u03b1 -LocaleNames/el/HT=\u0391\u03ca\u03c4\u03ae -LocaleNames/el/HU=\u039f\u03c5\u03b3\u03b3\u03b1\u03c1\u03af\u03b1 -LocaleNames/el/ID=\u0399\u03bd\u03b4\u03bf\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el/IE=\u0399\u03c1\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/IL=\u0399\u03c3\u03c1\u03b1\u03ae\u03bb -LocaleNames/el/IN=\u0399\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/IO=\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 \u0399\u03bd\u03b4\u03b9\u03ba\u03bf\u03cd \u03a9\u03ba\u03b5\u03b1\u03bd\u03bf\u03cd -LocaleNames/el/IQ=\u0399\u03c1\u03ac\u03ba -LocaleNames/el/IR=\u0399\u03c1\u03ac\u03bd -LocaleNames/el/IS=\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/IT=\u0399\u03c4\u03b1\u03bb\u03af\u03b1 -LocaleNames/el/JM=\u03a4\u03b6\u03b1\u03bc\u03ac\u03b9\u03ba\u03b1 -LocaleNames/el/JO=\u0399\u03bf\u03c1\u03b4\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/JP=\u0399\u03b1\u03c0\u03c9\u03bd\u03af\u03b1 -LocaleNames/el/KE=\u039a\u03ad\u03bd\u03c5\u03b1 -LocaleNames/el/KG=\u039a\u03b9\u03c1\u03b3\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/KH=\u039a\u03b1\u03bc\u03c0\u03cc\u03c4\u03b6\u03b7 -LocaleNames/el/KI=\u039a\u03b9\u03c1\u03b9\u03bc\u03c0\u03ac\u03c4\u03b9 -LocaleNames/el/KM=\u039a\u03bf\u03bc\u03cc\u03c1\u03b5\u03c2 -LocaleNames/el/KN=\u03a3\u03b5\u03bd \u039a\u03b9\u03c4\u03c2 \u03ba\u03b1\u03b9 \u039d\u03ad\u03b2\u03b9\u03c2 -LocaleNames/el/KP=\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1 -LocaleNames/el/KR=\u039d\u03cc\u03c4\u03b9\u03b1 \u039a\u03bf\u03c1\u03ad\u03b1 -LocaleNames/el/KW=\u039a\u03bf\u03c5\u03b2\u03ad\u03b9\u03c4 -LocaleNames/el/KY=\u039d\u03ae\u03c3\u03bf\u03b9 \u039a\u03ad\u03b9\u03bc\u03b1\u03bd -LocaleNames/el/KZ=\u039a\u03b1\u03b6\u03b1\u03ba\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/LA=\u039b\u03ac\u03bf\u03c2 -LocaleNames/el/LB=\u039b\u03af\u03b2\u03b1\u03bd\u03bf\u03c2 -LocaleNames/el/LC=\u0391\u03b3\u03af\u03b1 \u039b\u03bf\u03c5\u03ba\u03af\u03b1 -LocaleNames/el/LI=\u039b\u03b9\u03c7\u03c4\u03b5\u03bd\u03c3\u03c4\u03ac\u03b9\u03bd -LocaleNames/el/LK=\u03a3\u03c1\u03b9 \u039b\u03ac\u03bd\u03ba\u03b1 -LocaleNames/el/LR=\u039b\u03b9\u03b2\u03b5\u03c1\u03af\u03b1 -LocaleNames/el/LS=\u039b\u03b5\u03c3\u03cc\u03c4\u03bf -LocaleNames/el/LT=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/LU=\u039b\u03bf\u03c5\u03be\u03b5\u03bc\u03b2\u03bf\u03cd\u03c1\u03b3\u03bf -LocaleNames/el/LV=\u039b\u03b5\u03c4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el/LY=\u039b\u03b9\u03b2\u03cd\u03b7 -LocaleNames/el/MA=\u039c\u03b1\u03c1\u03cc\u03ba\u03bf -LocaleNames/el/MC=\u039c\u03bf\u03bd\u03b1\u03ba\u03cc -LocaleNames/el/MD=\u039c\u03bf\u03bb\u03b4\u03b1\u03b2\u03af\u03b1 -LocaleNames/el/MG=\u039c\u03b1\u03b4\u03b1\u03b3\u03b1\u03c3\u03ba\u03ac\u03c1\u03b7 -LocaleNames/el/MH=\u039d\u03ae\u03c3\u03bf\u03b9 \u039c\u03ac\u03c1\u03c3\u03b1\u03bb -LocaleNames/el/MK=\u0392\u03cc\u03c1\u03b5\u03b9\u03b1 \u039c\u03b1\u03ba\u03b5\u03b4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el/ML=\u039c\u03ac\u03bb\u03b9 -LocaleNames/el/MM=\u039c\u03b9\u03b1\u03bd\u03bc\u03ac\u03c1 (\u0392\u03b9\u03c1\u03bc\u03b1\u03bd\u03af\u03b1) -LocaleNames/el/MN=\u039c\u03bf\u03b3\u03b3\u03bf\u03bb\u03af\u03b1 -LocaleNames/el/MO=\u039c\u03b1\u03ba\u03ac\u03bf \u0395\u0394\u03a0 \u039a\u03af\u03bd\u03b1\u03c2 -LocaleNames/el/MP=\u039d\u03ae\u03c3\u03bf\u03b9 \u0392\u03cc\u03c1\u03b5\u03b9\u03b5\u03c2 \u039c\u03b1\u03c1\u03b9\u03ac\u03bd\u03b5\u03c2 -LocaleNames/el/MQ=\u039c\u03b1\u03c1\u03c4\u03b9\u03bd\u03af\u03ba\u03b1 -LocaleNames/el/MR=\u039c\u03b1\u03c5\u03c1\u03b9\u03c4\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/MS=\u039c\u03bf\u03bd\u03c3\u03b5\u03c1\u03ac\u03c4 -LocaleNames/el/MT=\u039c\u03ac\u03bb\u03c4\u03b1 -LocaleNames/el/MU=\u039c\u03b1\u03c5\u03c1\u03af\u03ba\u03b9\u03bf\u03c2 -LocaleNames/el/MV=\u039c\u03b1\u03bb\u03b4\u03af\u03b2\u03b5\u03c2 -LocaleNames/el/MW=\u039c\u03b1\u03bb\u03ac\u03bf\u03c5\u03b9 -LocaleNames/el/MX=\u039c\u03b5\u03be\u03b9\u03ba\u03cc -LocaleNames/el/MY=\u039c\u03b1\u03bb\u03b1\u03b9\u03c3\u03af\u03b1 -LocaleNames/el/MZ=\u039c\u03bf\u03b6\u03b1\u03bc\u03b2\u03af\u03ba\u03b7 -LocaleNames/el/NA=\u039d\u03b1\u03bc\u03af\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el/NC=\u039d\u03ad\u03b1 \u039a\u03b1\u03bb\u03b7\u03b4\u03bf\u03bd\u03af\u03b1 -LocaleNames/el/NE=\u039d\u03af\u03b3\u03b7\u03c1\u03b1\u03c2 -LocaleNames/el/NF=\u039d\u03ae\u03c3\u03bf\u03c2 \u039d\u03cc\u03c1\u03c6\u03bf\u03bb\u03ba -LocaleNames/el/NG=\u039d\u03b9\u03b3\u03b7\u03c1\u03af\u03b1 -LocaleNames/el/NI=\u039d\u03b9\u03ba\u03b1\u03c1\u03ac\u03b3\u03bf\u03c5\u03b1 -LocaleNames/el/NL=\u039a\u03ac\u03c4\u03c9 \u03a7\u03ce\u03c1\u03b5\u03c2 -LocaleNames/el/NO=\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03af\u03b1 -LocaleNames/el/NP=\u039d\u03b5\u03c0\u03ac\u03bb -LocaleNames/el/NR=\u039d\u03b1\u03bf\u03c5\u03c1\u03bf\u03cd -LocaleNames/el/NU=\u039d\u03b9\u03bf\u03cd\u03b5 -LocaleNames/el/NZ=\u039d\u03ad\u03b1 \u0396\u03b7\u03bb\u03b1\u03bd\u03b4\u03af\u03b1 -LocaleNames/el/OM=\u039f\u03bc\u03ac\u03bd -LocaleNames/el/PA=\u03a0\u03b1\u03bd\u03b1\u03bc\u03ac\u03c2 -LocaleNames/el/PE=\u03a0\u03b5\u03c1\u03bf\u03cd -LocaleNames/el/PF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ae \u03a0\u03bf\u03bb\u03c5\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el/PG=\u03a0\u03b1\u03c0\u03bf\u03cd\u03b1 \u039d\u03ad\u03b1 \u0393\u03bf\u03c5\u03b9\u03bd\u03ad\u03b1 -LocaleNames/el/PH=\u03a6\u03b9\u03bb\u03b9\u03c0\u03c0\u03af\u03bd\u03b5\u03c2 -LocaleNames/el/PK=\u03a0\u03b1\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/PL=\u03a0\u03bf\u03bb\u03c9\u03bd\u03af\u03b1 -LocaleNames/el/PM=\u03a3\u03b5\u03bd \u03a0\u03b9\u03b5\u03c1 \u03ba\u03b1\u03b9 \u039c\u03b9\u03ba\u03b5\u03bb\u03cc\u03bd -LocaleNames/el/PN=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a0\u03af\u03c4\u03ba\u03b5\u03c1\u03bd -LocaleNames/el/PR=\u03a0\u03bf\u03c5\u03ad\u03c1\u03c4\u03bf \u03a1\u03af\u03ba\u03bf -LocaleNames/el/PS=\u03a0\u03b1\u03bb\u03b1\u03b9\u03c3\u03c4\u03b9\u03bd\u03b9\u03b1\u03ba\u03ac \u0395\u03b4\u03ac\u03c6\u03b7 -LocaleNames/el/PT=\u03a0\u03bf\u03c1\u03c4\u03bf\u03b3\u03b1\u03bb\u03af\u03b1 -LocaleNames/el/PW=\u03a0\u03b1\u03bb\u03ac\u03bf\u03c5 -LocaleNames/el/PY=\u03a0\u03b1\u03c1\u03b1\u03b3\u03bf\u03c5\u03ac\u03b7 -LocaleNames/el/QA=\u039a\u03b1\u03c4\u03ac\u03c1 -LocaleNames/el/RE=\u03a1\u03b5\u03ca\u03bd\u03b9\u03cc\u03bd -LocaleNames/el/RO=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/RU=\u03a1\u03c9\u03c3\u03af\u03b1 -LocaleNames/el/RW=\u03a1\u03bf\u03c5\u03ac\u03bd\u03c4\u03b1 -LocaleNames/el/SA=\u03a3\u03b1\u03bf\u03c5\u03b4\u03b9\u03ba\u03ae \u0391\u03c1\u03b1\u03b2\u03af\u03b1 -LocaleNames/el/SB=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a3\u03bf\u03bb\u03bf\u03bc\u03ce\u03bd\u03c4\u03bf\u03c2 -LocaleNames/el/SC=\u03a3\u03b5\u03cb\u03c7\u03ad\u03bb\u03bb\u03b5\u03c2 -LocaleNames/el/SD=\u03a3\u03bf\u03c5\u03b4\u03ac\u03bd -LocaleNames/el/SE=\u03a3\u03bf\u03c5\u03b7\u03b4\u03af\u03b1 -LocaleNames/el/SG=\u03a3\u03b9\u03b3\u03ba\u03b1\u03c0\u03bf\u03cd\u03c1\u03b7 -LocaleNames/el/SH=\u0391\u03b3\u03af\u03b1 \u0395\u03bb\u03ad\u03bd\u03b7 -LocaleNames/el/SI=\u03a3\u03bb\u03bf\u03b2\u03b5\u03bd\u03af\u03b1 -LocaleNames/el/SJ=\u03a3\u03b2\u03ac\u03bb\u03bc\u03c0\u03b1\u03c1\u03bd\u03c4 \u03ba\u03b1\u03b9 \u0393\u03b9\u03b1\u03bd \u039c\u03b1\u03b3\u03b9\u03ad\u03bd -LocaleNames/el/SK=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03af\u03b1 -LocaleNames/el/SL=\u03a3\u03b9\u03ad\u03c1\u03b1 \u039b\u03b5\u03cc\u03bd\u03b5 -LocaleNames/el/SM=\u0386\u03b3\u03b9\u03bf\u03c2 \u039c\u03b1\u03c1\u03af\u03bd\u03bf\u03c2 -LocaleNames/el/SN=\u03a3\u03b5\u03bd\u03b5\u03b3\u03ac\u03bb\u03b7 -LocaleNames/el/SO=\u03a3\u03bf\u03bc\u03b1\u03bb\u03af\u03b1 -LocaleNames/el/SR=\u03a3\u03bf\u03c5\u03c1\u03b9\u03bd\u03ac\u03bc -LocaleNames/el/ST=\u03a3\u03ac\u03bf \u03a4\u03bf\u03bc\u03ad \u03ba\u03b1\u03b9 \u03a0\u03c1\u03af\u03bd\u03c3\u03b9\u03c0\u03b5 -LocaleNames/el/SV=\u0395\u03bb \u03a3\u03b1\u03bb\u03b2\u03b1\u03b4\u03cc\u03c1 -LocaleNames/el/SY=\u03a3\u03c5\u03c1\u03af\u03b1 -LocaleNames/el/SZ=\u0395\u03c3\u03bf\u03c5\u03b1\u03c4\u03af\u03bd\u03b9 -LocaleNames/el/TC=\u039d\u03ae\u03c3\u03bf\u03b9 \u03a4\u03b5\u03c1\u03ba\u03c2 \u03ba\u03b1\u03b9 \u039a\u03ac\u03b9\u03ba\u03bf\u03c2 -LocaleNames/el/TD=\u03a4\u03c3\u03b1\u03bd\u03c4 -LocaleNames/el/TF=\u0393\u03b1\u03bb\u03bb\u03b9\u03ba\u03ac \u039d\u03cc\u03c4\u03b9\u03b1 \u0395\u03b4\u03ac\u03c6\u03b7 -LocaleNames/el/TG=\u03a4\u03cc\u03b3\u03ba\u03bf -LocaleNames/el/TH=\u03a4\u03b1\u03ca\u03bb\u03ac\u03bd\u03b4\u03b7 -LocaleNames/el/TJ=\u03a4\u03b1\u03c4\u03b6\u03b9\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/TK=\u03a4\u03bf\u03ba\u03b5\u03bb\u03ac\u03bf\u03c5 -LocaleNames/el/TL=\u03a4\u03b9\u03bc\u03cc\u03c1-\u039b\u03ad\u03c3\u03c4\u03b5 -LocaleNames/el/TM=\u03a4\u03bf\u03c5\u03c1\u03ba\u03bc\u03b5\u03bd\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/TN=\u03a4\u03c5\u03bd\u03b7\u03c3\u03af\u03b1 -LocaleNames/el/TO=\u03a4\u03cc\u03bd\u03b3\u03ba\u03b1 -LocaleNames/el/TR=\u03a4\u03bf\u03c5\u03c1\u03ba\u03af\u03b1 -LocaleNames/el/TT=\u03a4\u03c1\u03b9\u03bd\u03b9\u03bd\u03c4\u03ac\u03bd\u03c4 \u03ba\u03b1\u03b9 \u03a4\u03bf\u03bc\u03c0\u03ac\u03b3\u03ba\u03bf -LocaleNames/el/TV=\u03a4\u03bf\u03c5\u03b2\u03b1\u03bb\u03bf\u03cd -LocaleNames/el/TW=\u03a4\u03b1\u03ca\u03b2\u03ac\u03bd -LocaleNames/el/TZ=\u03a4\u03b1\u03bd\u03b6\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/UA=\u039f\u03c5\u03ba\u03c1\u03b1\u03bd\u03af\u03b1 -LocaleNames/el/UG=\u039f\u03c5\u03b3\u03ba\u03ac\u03bd\u03c4\u03b1 -LocaleNames/el/UM=\u0391\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u039d\u03b7\u03c3\u03af\u03b4\u03b5\u03c2 \u0397\u03a0\u0391 -LocaleNames/el/US=\u0397\u03bd\u03c9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a0\u03bf\u03bb\u03b9\u03c4\u03b5\u03af\u03b5\u03c2 -LocaleNames/el/UY=\u039f\u03c5\u03c1\u03bf\u03c5\u03b3\u03bf\u03c5\u03ac\u03b7 -LocaleNames/el/UZ=\u039f\u03c5\u03b6\u03bc\u03c0\u03b5\u03ba\u03b9\u03c3\u03c4\u03ac\u03bd -LocaleNames/el/VA=\u0392\u03b1\u03c4\u03b9\u03ba\u03b1\u03bd\u03cc -LocaleNames/el/VC=\u0386\u03b3\u03b9\u03bf\u03c2 \u0392\u03b9\u03ba\u03ad\u03bd\u03c4\u03b9\u03bf\u03c2 \u03ba\u03b1\u03b9 \u0393\u03c1\u03b5\u03bd\u03b1\u03b4\u03af\u03bd\u03b5\u03c2 -LocaleNames/el/VE=\u0392\u03b5\u03bd\u03b5\u03b6\u03bf\u03c5\u03ad\u03bb\u03b1 -LocaleNames/el/VG=\u0392\u03c1\u03b5\u03c4\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9 -LocaleNames/el/VI=\u0391\u03bc\u03b5\u03c1\u03b9\u03ba\u03b1\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a0\u03b1\u03c1\u03b8\u03ad\u03bd\u03b5\u03c2 \u039d\u03ae\u03c3\u03bf\u03b9 -LocaleNames/el/VN=\u0392\u03b9\u03b5\u03c4\u03bd\u03ac\u03bc -LocaleNames/el/VU=\u0392\u03b1\u03bd\u03bf\u03c5\u03ac\u03c4\u03bf\u03c5 -LocaleNames/el/WF=\u0393\u03bf\u03c5\u03ac\u03bb\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03a6\u03bf\u03c5\u03c4\u03bf\u03cd\u03bd\u03b1 -LocaleNames/el/WS=\u03a3\u03b1\u03bc\u03cc\u03b1 -LocaleNames/el/YE=\u03a5\u03b5\u03bc\u03ad\u03bd\u03b7 -LocaleNames/el/YT=\u039c\u03b1\u03b3\u03b9\u03cc\u03c4 -LocaleNames/el/ZA=\u039d\u03cc\u03c4\u03b9\u03b1 \u0391\u03c6\u03c1\u03b9\u03ba\u03ae -LocaleNames/el/ZM=\u0396\u03ac\u03bc\u03c0\u03b9\u03b1 -LocaleNames/el/ZW=\u0396\u03b9\u03bc\u03c0\u03ac\u03bc\u03c0\u03bf\u03c5\u03b5 +LocaleNames/el/ar=Αραβικά +LocaleNames/el/be=Λευκορωσικά +LocaleNames/el/bg=Βουλγαρικά +LocaleNames/el/bn=Βεγγαλικά +LocaleNames/el/bo=Θιβετιανά +LocaleNames/el/bs=Βοσνιακά +LocaleNames/el/ca=Καταλανικά +LocaleNames/el/co=Κορσικανικά +LocaleNames/el/cs=Τσεχικά +LocaleNames/el/cy=Ουαλικά +LocaleNames/el/da=Δανικά +LocaleNames/el/de=Γερμανικά +LocaleNames/el/el=Ελληνικά +LocaleNames/el/en=Αγγλικά +LocaleNames/el/es=Ισπανικά +LocaleNames/el/et=Εσθονικά +LocaleNames/el/eu=Βασκικά +LocaleNames/el/fa=Περσικά +LocaleNames/el/fi=Φινλανδικά +LocaleNames/el/fr=Γαλλικά +LocaleNames/el/ga=Ιρλανδικά +LocaleNames/el/gd=Σκωτικά Κελτικά +LocaleNames/el/he=Εβραϊκά +LocaleNames/el/hi=Χίντι +LocaleNames/el/hr=Κροατικά +LocaleNames/el/hu=Ουγγρικά +LocaleNames/el/hy=Αρμενικά +LocaleNames/el/id=Ινδονησιακά +LocaleNames/el/is=Ισλανδικά +LocaleNames/el/it=Ιταλικά +LocaleNames/el/ja=Ιαπωνικά +LocaleNames/el/ka=Γεωργιανά +LocaleNames/el/ko=Κορεατικά +LocaleNames/el/la=Λατινικά +LocaleNames/el/lt=Λιθουανικά +LocaleNames/el/lv=Λετονικά +LocaleNames/el/mk=Σλαβομακεδονικά +LocaleNames/el/mn=Μογγολικά +LocaleNames/el/mt=Μαλτεζικά +LocaleNames/el/no=Νορβηγικά +LocaleNames/el/pl=Πολωνικά +LocaleNames/el/pt=Πορτογαλικά +LocaleNames/el/ro=Ρουμανικά +LocaleNames/el/ru=Ρωσικά +LocaleNames/el/sk=Σλοβακικά +LocaleNames/el/sl=Σλοβενικά +LocaleNames/el/sq=Αλβανικά +LocaleNames/el/sr=Σερβικά +LocaleNames/el/sv=Σουηδικά +LocaleNames/el/th=Ταϊλανδικά +LocaleNames/el/tr=Τουρκικά +LocaleNames/el/uk=Ουκρανικά +LocaleNames/el/vi=Βιετναμικά +LocaleNames/el/yi=Γίντις +LocaleNames/el/zh=Κινεζικά +LocaleNames/el/AD=Ανδόρα +LocaleNames/el/AE=Ηνωμένα Αραβικά Εμιράτα +LocaleNames/el/AF=Αφγανιστάν +LocaleNames/el/AG=Αντίγκουα και Μπαρμπούντα +LocaleNames/el/AI=Ανγκουίλα +LocaleNames/el/AL=Αλβανία +LocaleNames/el/AM=Αρμενία +LocaleNames/el/AO=Αγκόλα +LocaleNames/el/AQ=Ανταρκτική +LocaleNames/el/AR=Αργεντινή +LocaleNames/el/AS=Αμερικανική Σαμόα +LocaleNames/el/AT=Αυστρία +LocaleNames/el/AU=Αυστραλία +LocaleNames/el/AW=Αρούμπα +LocaleNames/el/AX=Νήσοι Όλαντ +LocaleNames/el/AZ=Αζερμπαϊτζάν +LocaleNames/el/BA=Βοσνία - Ερζεγοβίνη +LocaleNames/el/BB=Μπαρμπέιντος +LocaleNames/el/BD=Μπανγκλαντές +LocaleNames/el/BE=Βέλγιο +LocaleNames/el/BF=Μπουρκίνα Φάσο +LocaleNames/el/BG=Βουλγαρία +LocaleNames/el/BH=Μπαχρέιν +LocaleNames/el/BI=Μπουρούντι +LocaleNames/el/BJ=Μπενίν +LocaleNames/el/BM=Βερμούδες +LocaleNames/el/BN=Μπρουνέι +LocaleNames/el/BO=Βολιβία +LocaleNames/el/BR=Βραζιλία +LocaleNames/el/BS=Μπαχάμες +LocaleNames/el/BT=Μπουτάν +LocaleNames/el/BV=Νήσος Μπουβέ +LocaleNames/el/BW=Μποτσουάνα +LocaleNames/el/BY=Λευκορωσία +LocaleNames/el/BZ=Μπελίζ +LocaleNames/el/CA=Καναδάς +LocaleNames/el/CC=Νήσοι Κόκος (Κίλινγκ) +LocaleNames/el/CD=Κονγκό - Κινσάσα +LocaleNames/el/CF=Κεντροαφρικανική Δημοκρατία +LocaleNames/el/CG=Κονγκό - Μπραζαβίλ +LocaleNames/el/CH=Ελβετία +LocaleNames/el/CI=Ακτή Ελεφαντοστού +LocaleNames/el/CK=Νήσοι Κουκ +LocaleNames/el/CL=Χιλή +LocaleNames/el/CM=Καμερούν +LocaleNames/el/CN=Κίνα +LocaleNames/el/CO=Κολομβία +LocaleNames/el/CR=Κόστα Ρίκα +LocaleNames/el/CU=Κούβα +LocaleNames/el/CV=Πράσινο Ακρωτήριο +LocaleNames/el/CX=Νήσος των Χριστουγέννων +LocaleNames/el/CY=Κύπρος +LocaleNames/el/CZ=Τσεχία +LocaleNames/el/DE=Γερμανία +LocaleNames/el/DJ=Τζιμπουτί +LocaleNames/el/DK=Δανία +LocaleNames/el/DM=Ντομίνικα +LocaleNames/el/DO=Δομινικανή Δημοκρατία +LocaleNames/el/DZ=Αλγερία +LocaleNames/el/EC=Ισημερινός +LocaleNames/el/EE=Εσθονία +LocaleNames/el/EG=Αίγυπτος +LocaleNames/el/EH=Δυτική Σαχάρα +LocaleNames/el/ER=Ερυθραία +LocaleNames/el/ES=Ισπανία +LocaleNames/el/ET=Αιθιοπία +LocaleNames/el/FI=Φινλανδία +LocaleNames/el/FJ=Φίτζι +LocaleNames/el/FK=Νήσοι Φόκλαντ +LocaleNames/el/FM=Μικρονησία +LocaleNames/el/FO=Νήσοι Φερόες +LocaleNames/el/FR=Γαλλία +LocaleNames/el/GA=Γκαμπόν +LocaleNames/el/GB=Ηνωμένο Βασίλειο +LocaleNames/el/GD=Γρενάδα +LocaleNames/el/GE=Γεωργία +LocaleNames/el/GF=Γαλλική Γουιάνα +LocaleNames/el/GH=Γκάνα +LocaleNames/el/GI=Γιβραλτάρ +LocaleNames/el/GL=Γροιλανδία +LocaleNames/el/GM=Γκάμπια +LocaleNames/el/GN=Γουινέα +LocaleNames/el/GP=Γουαδελούπη +LocaleNames/el/GQ=Ισημερινή Γουινέα +LocaleNames/el/GS=Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς +LocaleNames/el/GT=Γουατεμάλα +LocaleNames/el/GU=Γκουάμ +LocaleNames/el/GW=Γουινέα Μπισάου +LocaleNames/el/GY=Γουιάνα +LocaleNames/el/HK=Χονγκ Κονγκ ΕΔΠ Κίνας +LocaleNames/el/HM=Νήσοι Χερντ και Μακντόναλντ +LocaleNames/el/HN=Ονδούρα +LocaleNames/el/HR=Κροατία +LocaleNames/el/HT=Αϊτή +LocaleNames/el/HU=Ουγγαρία +LocaleNames/el/ID=Ινδονησία +LocaleNames/el/IE=Ιρλανδία +LocaleNames/el/IL=Ισραήλ +LocaleNames/el/IN=Ινδία +LocaleNames/el/IO=Βρετανικά Εδάφη Ινδικού Ωκεανού +LocaleNames/el/IQ=Ιράκ +LocaleNames/el/IR=Ιράν +LocaleNames/el/IS=Ισλανδία +LocaleNames/el/IT=Ιταλία +LocaleNames/el/JM=Τζαμάικα +LocaleNames/el/JO=Ιορδανία +LocaleNames/el/JP=Ιαπωνία +LocaleNames/el/KE=Κένυα +LocaleNames/el/KG=Κιργιστάν +LocaleNames/el/KH=Καμπότζη +LocaleNames/el/KI=Κιριμπάτι +LocaleNames/el/KM=Κομόρες +LocaleNames/el/KN=Σεν Κιτς και Νέβις +LocaleNames/el/KP=Βόρεια Κορέα +LocaleNames/el/KR=Νότια Κορέα +LocaleNames/el/KW=Κουβέιτ +LocaleNames/el/KY=Νήσοι Κέιμαν +LocaleNames/el/KZ=Καζακστάν +LocaleNames/el/LA=Λάος +LocaleNames/el/LB=Λίβανος +LocaleNames/el/LC=Αγία Λουκία +LocaleNames/el/LI=Λιχτενστάιν +LocaleNames/el/LK=Σρι Λάνκα +LocaleNames/el/LR=Λιβερία +LocaleNames/el/LS=Λεσότο +LocaleNames/el/LT=Λιθουανία +LocaleNames/el/LU=Λουξεμβούργο +LocaleNames/el/LV=Λετονία +LocaleNames/el/LY=Λιβύη +LocaleNames/el/MA=Μαρόκο +LocaleNames/el/MC=Μονακό +LocaleNames/el/MD=Μολδαβία +LocaleNames/el/MG=Μαδαγασκάρη +LocaleNames/el/MH=Νήσοι Μάρσαλ +LocaleNames/el/MK=Βόρεια Μακεδονία +LocaleNames/el/ML=Μάλι +LocaleNames/el/MM=Μιανμάρ (Βιρμανία) +LocaleNames/el/MN=Μογγολία +LocaleNames/el/MO=Μακάο ΕΔΠ Κίνας +LocaleNames/el/MP=Νήσοι Βόρειες Μαριάνες +LocaleNames/el/MQ=Μαρτινίκα +LocaleNames/el/MR=Μαυριτανία +LocaleNames/el/MS=Μονσεράτ +LocaleNames/el/MT=Μάλτα +LocaleNames/el/MU=Μαυρίκιος +LocaleNames/el/MV=Μαλδίβες +LocaleNames/el/MW=Μαλάουι +LocaleNames/el/MX=Μεξικό +LocaleNames/el/MY=Μαλαισία +LocaleNames/el/MZ=Μοζαμβίκη +LocaleNames/el/NA=Ναμίμπια +LocaleNames/el/NC=Νέα Καληδονία +LocaleNames/el/NE=Νίγηρας +LocaleNames/el/NF=Νήσος Νόρφολκ +LocaleNames/el/NG=Νιγηρία +LocaleNames/el/NI=Νικαράγουα +LocaleNames/el/NL=Κάτω Χώρες +LocaleNames/el/NO=Νορβηγία +LocaleNames/el/NP=Νεπάλ +LocaleNames/el/NR=Ναουρού +LocaleNames/el/NU=Νιούε +LocaleNames/el/NZ=Νέα Ζηλανδία +LocaleNames/el/OM=Ομάν +LocaleNames/el/PA=Παναμάς +LocaleNames/el/PE=Περού +LocaleNames/el/PF=Γαλλική Πολυνησία +LocaleNames/el/PG=Παπούα Νέα Γουινέα +LocaleNames/el/PH=Φιλιππίνες +LocaleNames/el/PK=Πακιστάν +LocaleNames/el/PL=Πολωνία +LocaleNames/el/PM=Σεν Πιερ και Μικελόν +LocaleNames/el/PN=Νήσοι Πίτκερν +LocaleNames/el/PR=Πουέρτο Ρίκο +LocaleNames/el/PS=Παλαιστινιακά Εδάφη +LocaleNames/el/PT=Πορτογαλία +LocaleNames/el/PW=Παλάου +LocaleNames/el/PY=Παραγουάη +LocaleNames/el/QA=Κατάρ +LocaleNames/el/RE=Ρεϊνιόν +LocaleNames/el/RO=Ρουμανία +LocaleNames/el/RU=Ρωσία +LocaleNames/el/RW=Ρουάντα +LocaleNames/el/SA=Σαουδική Αραβία +LocaleNames/el/SB=Νήσοι Σολομώντος +LocaleNames/el/SC=Σεϋχέλλες +LocaleNames/el/SD=Σουδάν +LocaleNames/el/SE=Σουηδία +LocaleNames/el/SG=Σιγκαπούρη +LocaleNames/el/SH=Αγία Ελένη +LocaleNames/el/SI=Σλοβενία +LocaleNames/el/SJ=Σβάλμπαρντ και Γιαν Μαγιέν +LocaleNames/el/SK=Σλοβακία +LocaleNames/el/SL=Σιέρα Λεόνε +LocaleNames/el/SM=Άγιος Μαρίνος +LocaleNames/el/SN=Σενεγάλη +LocaleNames/el/SO=Σομαλία +LocaleNames/el/SR=Σουρινάμ +LocaleNames/el/ST=Σάο Τομέ και Πρίνσιπε +LocaleNames/el/SV=Ελ Σαλβαδόρ +LocaleNames/el/SY=Συρία +LocaleNames/el/SZ=Εσουατίνι +LocaleNames/el/TC=Νήσοι Τερκς και Κάικος +LocaleNames/el/TD=Τσαντ +LocaleNames/el/TF=Γαλλικά Νότια Εδάφη +LocaleNames/el/TG=Τόγκο +LocaleNames/el/TH=Ταϊλάνδη +LocaleNames/el/TJ=Τατζικιστάν +LocaleNames/el/TK=Τοκελάου +LocaleNames/el/TL=Τιμόρ-Λέστε +LocaleNames/el/TM=Τουρκμενιστάν +LocaleNames/el/TN=Τυνησία +LocaleNames/el/TO=Τόνγκα +LocaleNames/el/TR=Τουρκία +LocaleNames/el/TT=Τρινιντάντ και Τομπάγκο +LocaleNames/el/TV=Τουβαλού +LocaleNames/el/TW=Ταϊβάν +LocaleNames/el/TZ=Τανζανία +LocaleNames/el/UA=Ουκρανία +LocaleNames/el/UG=Ουγκάντα +LocaleNames/el/UM=Απομακρυσμένες Νησίδες ΗΠΑ +LocaleNames/el/US=Ηνωμένες Πολιτείες +LocaleNames/el/UY=Ουρουγουάη +LocaleNames/el/UZ=Ουζμπεκιστάν +LocaleNames/el/VA=Βατικανό +LocaleNames/el/VC=Άγιος Βικέντιος και Γρεναδίνες +LocaleNames/el/VE=Βενεζουέλα +LocaleNames/el/VG=Βρετανικές Παρθένες Νήσοι +LocaleNames/el/VI=Αμερικανικές Παρθένες Νήσοι +LocaleNames/el/VN=Βιετνάμ +LocaleNames/el/VU=Βανουάτου +LocaleNames/el/WF=Γουάλις και Φουτούνα +LocaleNames/el/WS=Σαμόα +LocaleNames/el/YE=Υεμένη +LocaleNames/el/YT=Μαγιότ +LocaleNames/el/ZA=Νότια Αφρική +LocaleNames/el/ZM=Ζάμπια +LocaleNames/el/ZW=Ζιμπάμπουε LocaleNames/en_MT/fy=Western Frisian LocaleNames/en_MT/gl=Galician LocaleNames/en_MT/ps=Pashto -LocaleNames/en_MT/AX=\u00c5land Islands +LocaleNames/en_MT/AX=Åland Islands LocaleNames/en_MT/CD=Congo - Kinshasa LocaleNames/en_MT/CG=Congo - Brazzaville LocaleNames/en_MT/HK=Hong Kong SAR China @@ -4713,7 +4713,7 @@ LocaleNames/en_PH/fy=Western Frisian LocaleNames/en_PH/gl=Galician LocaleNames/en_PH/ps=Pashto -LocaleNames/en_PH/AX=\u00c5land Islands +LocaleNames/en_PH/AX=Åland Islands LocaleNames/en_PH/CD=Congo - Kinshasa LocaleNames/en_PH/CG=Congo - Brazzaville LocaleNames/en_PH/HK=Hong Kong SAR China @@ -4722,7 +4722,7 @@ LocaleNames/en_SG/fy=Western Frisian LocaleNames/en_SG/gl=Galician LocaleNames/en_SG/ps=Pashto -LocaleNames/en_SG/AX=\u00c5land Islands +LocaleNames/en_SG/AX=Åland Islands LocaleNames/en_SG/CD=Congo - Kinshasa LocaleNames/en_SG/CG=Congo - Brazzaville LocaleNames/en_SG/HK=Hong Kong SAR China @@ -4730,53 +4730,53 @@ LocaleNames/es_US/ab=abjasio LocaleNames/es_US/dz=dzongkha LocaleNames/es_US/fj=fiyiano -LocaleNames/es_US/si=cingal\u00e9s -LocaleNames/es_US/ti=tigri\u00f1a -LocaleNames/es_US/vo=volap\u00fck -LocaleNames/es_US/AX=Islas \u00c5land -LocaleNames/es_US/BH=Bar\u00e9in -LocaleNames/es_US/KG=Kirguist\u00e1n -LocaleNames/mt/ab=Abka\u017cjan +LocaleNames/es_US/si=cingalés +LocaleNames/es_US/ti=tigriña +LocaleNames/es_US/vo=volapük +LocaleNames/es_US/AX=Islas Åland +LocaleNames/es_US/BH=Baréin +LocaleNames/es_US/KG=Kirguistán +LocaleNames/mt/ab=Abkażjan LocaleNames/mt/af=Afrikans LocaleNames/mt/am=Amhariku -LocaleNames/mt/ar=G\u0127arbi +LocaleNames/mt/ar=Għarbi LocaleNames/mt/av=Avarik LocaleNames/mt/ay=Aymara -LocaleNames/mt/az=A\u017cerbaj\u0121ani +LocaleNames/mt/az=Ażerbajġani LocaleNames/mt/ba=Bashkir LocaleNames/mt/be=Belarussu LocaleNames/mt/bg=Bulgaru LocaleNames/mt/bo=Tibetjan LocaleNames/mt/br=Breton -LocaleNames/mt/bs=Bo\u017cnijaku +LocaleNames/mt/bs=Bożnijaku LocaleNames/mt/ca=Katalan LocaleNames/mt/ce=Chechen LocaleNames/mt/ch=Chamorro LocaleNames/mt/co=Korsiku LocaleNames/mt/cr=Cree -LocaleNames/mt/cs=\u010aek +LocaleNames/mt/cs=Ċek LocaleNames/mt/cu=Slaviku tal-Knisja LocaleNames/mt/cv=Chuvash LocaleNames/mt/cy=Welsh -LocaleNames/mt/da=Dani\u017c -LocaleNames/mt/de=\u0120ermani\u017c +LocaleNames/mt/da=Daniż +LocaleNames/mt/de=Ġermaniż LocaleNames/mt/dv=Divehi LocaleNames/mt/dz=Dzongkha LocaleNames/mt/el=Grieg -LocaleNames/mt/en=Ingli\u017c +LocaleNames/mt/en=Ingliż LocaleNames/mt/es=Spanjol LocaleNames/mt/et=Estonjan LocaleNames/mt/eu=Bask LocaleNames/mt/fa=Persjan LocaleNames/mt/ff=Fulah -LocaleNames/mt/fi=Finlandi\u017c -LocaleNames/mt/fj=Fi\u0121jan +LocaleNames/mt/fi=Finlandiż +LocaleNames/mt/fj=Fiġjan LocaleNames/mt/fo=Faroese -LocaleNames/mt/fr=Fran\u010bi\u017c +LocaleNames/mt/fr=Franċiż LocaleNames/mt/fy=Frisian tal-Punent -LocaleNames/mt/ga=Irlandi\u017c -LocaleNames/mt/gd=Galliku Sko\u010b\u010bi\u017c -LocaleNames/mt/gl=Gali\u010bjan +LocaleNames/mt/ga=Irlandiż +LocaleNames/mt/gd=Galliku Skoċċiż +LocaleNames/mt/gl=Galiċjan LocaleNames/mt/gn=Guarani LocaleNames/mt/gu=Gujarati LocaleNames/mt/gv=Manx @@ -4785,59 +4785,59 @@ LocaleNames/mt/hi=Hindi LocaleNames/mt/ho=Hiri Motu LocaleNames/mt/hr=Kroat -LocaleNames/mt/hu=Ungeri\u017c +LocaleNames/mt/hu=Ungeriż LocaleNames/mt/hy=Armen LocaleNames/mt/hz=Herero -LocaleNames/mt/id=Indone\u017cjan +LocaleNames/mt/id=Indoneżjan LocaleNames/mt/ik=Inupjak -LocaleNames/mt/is=I\u017clandi\u017c +LocaleNames/mt/is=Iżlandiż LocaleNames/mt/it=Taljan LocaleNames/mt/iu=Inuktitut -LocaleNames/mt/ja=\u0120appuni\u017c -LocaleNames/mt/jv=\u0120avani\u017c -LocaleNames/mt/ka=\u0120or\u0121jan +LocaleNames/mt/ja=Ġappuniż +LocaleNames/mt/jv=Ġavaniż +LocaleNames/mt/ka=Ġorġjan LocaleNames/mt/ki=Kikuju LocaleNames/mt/kj=Kuanyama -LocaleNames/mt/kk=Ka\u017cak +LocaleNames/mt/kk=Każak LocaleNames/mt/kl=Kalallisut LocaleNames/mt/km=Khmer LocaleNames/mt/ko=Korean LocaleNames/mt/ks=Kashmiri LocaleNames/mt/ku=Kurd LocaleNames/mt/kw=Korniku -LocaleNames/mt/ky=Kirgi\u017c -LocaleNames/mt/lb=Lussemburgi\u017c +LocaleNames/mt/ky=Kirgiż +LocaleNames/mt/lb=Lussemburgiż LocaleNames/mt/ln=Lingaljan LocaleNames/mt/lt=Litwan LocaleNames/mt/lv=Latvjan LocaleNames/mt/mg=Malagasy -LocaleNames/mt/mh=Marshalljani\u017c -LocaleNames/mt/mk=Ma\u010bedonjan +LocaleNames/mt/mh=Marshalljaniż +LocaleNames/mt/mk=Maċedonjan LocaleNames/mt/ml=Malayalam LocaleNames/mt/mn=Mongoljan LocaleNames/mt/mr=Marathi LocaleNames/mt/ms=Malay LocaleNames/mt/mt=Malti -LocaleNames/mt/my=Burmi\u017c +LocaleNames/mt/my=Burmiż LocaleNames/mt/na=Naurujan -LocaleNames/mt/nb=Bokmal Norve\u0121i\u017c +LocaleNames/mt/nb=Bokmal Norveġiż LocaleNames/mt/nd=Ndebeli tat-Tramuntana -LocaleNames/mt/ne=Nepali\u017c -LocaleNames/mt/nl=Olandi\u017c -LocaleNames/mt/nn=Ninorsk Norve\u0121i\u017c -LocaleNames/mt/no=Norve\u0121i\u017c +LocaleNames/mt/ne=Nepaliż +LocaleNames/mt/nl=Olandiż +LocaleNames/mt/nn=Ninorsk Norveġiż +LocaleNames/mt/no=Norveġiż LocaleNames/mt/nr=Ndebele tan-Nofsinhar LocaleNames/mt/nv=Navajo LocaleNames/mt/ny=Nyanja -LocaleNames/mt/oc=O\u010b\u010bitan -LocaleNames/mt/oj=O\u0121ibwa +LocaleNames/mt/oc=Oċċitan +LocaleNames/mt/oj=Oġibwa LocaleNames/mt/om=Oromo LocaleNames/mt/or=Odia LocaleNames/mt/os=Ossettiku LocaleNames/mt/pa=Punjabi LocaleNames/mt/pl=Pollakk LocaleNames/mt/ps=Pashto -LocaleNames/mt/pt=Portugi\u017c +LocaleNames/mt/pt=Portugiż LocaleNames/mt/qu=Quechua LocaleNames/mt/rm=Romanz LocaleNames/mt/ro=Rumen @@ -4851,127 +4851,127 @@ LocaleNames/mt/sl=Sloven LocaleNames/mt/sm=Samoan LocaleNames/mt/sn=Shona -LocaleNames/mt/sq=Albani\u017c +LocaleNames/mt/sq=Albaniż LocaleNames/mt/sr=Serb LocaleNames/mt/st=Soto tan-Nofsinhar -LocaleNames/mt/su=Sundani\u017c -LocaleNames/mt/sv=\u017bvedi\u017c +LocaleNames/mt/su=Sundaniż +LocaleNames/mt/sv=Żvediż LocaleNames/mt/sw=Swahili -LocaleNames/mt/tg=Ta\u0121ik -LocaleNames/mt/th=Tajlandi\u017c +LocaleNames/mt/tg=Taġik +LocaleNames/mt/th=Tajlandiż LocaleNames/mt/ti=Tigrinya LocaleNames/mt/tk=Turkmeni LocaleNames/mt/tn=Tswana LocaleNames/mt/to=Tongan LocaleNames/mt/tr=Tork -LocaleNames/mt/ty=Ta\u0127itjan +LocaleNames/mt/ty=Taħitjan LocaleNames/mt/ug=Uyghur LocaleNames/mt/uk=Ukren LocaleNames/mt/uz=Uzbek -LocaleNames/mt/vi=Vjetnami\u017c +LocaleNames/mt/vi=Vjetnamiż LocaleNames/mt/vo=Volapuk LocaleNames/mt/xh=Xhosa LocaleNames/mt/yi=Yiddish LocaleNames/mt/yo=Yoruba LocaleNames/mt/za=Zhuang -LocaleNames/mt/zh=\u010aini\u017c +LocaleNames/mt/zh=Ċiniż LocaleNames/mt/zu=Zulu -LocaleNames/mt/AE=l-Emirati G\u0127arab Mag\u0127quda +LocaleNames/mt/AE=l-Emirati Għarab Magħquda LocaleNames/mt/AF=l-Afganistan LocaleNames/mt/AI=Anguilla LocaleNames/mt/AL=l-Albanija LocaleNames/mt/AM=l-Armenja LocaleNames/mt/AQ=l-Antartika -LocaleNames/mt/AR=l-Ar\u0121entina +LocaleNames/mt/AR=l-Arġentina LocaleNames/mt/AS=is-Samoa Amerikana LocaleNames/mt/AT=l-Awstrija LocaleNames/mt/AU=l-Awstralja -LocaleNames/mt/AZ=l-A\u017cerbaj\u0121an -LocaleNames/mt/BA=il-Bo\u017cnija-\u0126erzegovina +LocaleNames/mt/AZ=l-Ażerbajġan +LocaleNames/mt/BA=il-Bożnija-Ħerzegovina LocaleNames/mt/BD=il-Bangladesh -LocaleNames/mt/BE=il-Bel\u0121ju +LocaleNames/mt/BE=il-Belġju LocaleNames/mt/BG=il-Bulgarija LocaleNames/mt/BH=il-Bahrain LocaleNames/mt/BN=il-Brunei LocaleNames/mt/BO=il-Bolivja -LocaleNames/mt/BR=Il-Bra\u017cil +LocaleNames/mt/BR=Il-Brażil LocaleNames/mt/BS=il-Bahamas LocaleNames/mt/BT=il-Bhutan LocaleNames/mt/BY=il-Belarussja LocaleNames/mt/BZ=il-Belize LocaleNames/mt/CA=il-Kanada -LocaleNames/mt/CC=G\u017cejjer Cocos (Keeling) +LocaleNames/mt/CC=Gżejjer Cocos (Keeling) LocaleNames/mt/CD=ir-Repubblika Demokratika tal-Kongo -LocaleNames/mt/CF=ir-Repubblika \u010aentru-Afrikana +LocaleNames/mt/CF=ir-Repubblika Ċentru-Afrikana LocaleNames/mt/CG=il-Kongo - Brazzaville -LocaleNames/mt/CH=l-I\u017cvizzera +LocaleNames/mt/CH=l-Iżvizzera LocaleNames/mt/CI=il-Kosta tal-Avorju -LocaleNames/mt/CL=i\u010b-\u010aili +LocaleNames/mt/CL=iċ-Ċili LocaleNames/mt/CM=il-Kamerun -LocaleNames/mt/CN=i\u010b-\u010aina +LocaleNames/mt/CN=iċ-Ċina LocaleNames/mt/CO=il-Kolombja LocaleNames/mt/CR=il-Costa Rica LocaleNames/mt/CU=Kuba LocaleNames/mt/CV=Cape Verde -LocaleNames/mt/CY=\u010aipru -LocaleNames/mt/CZ=ir-Repubblika \u010aeka -LocaleNames/mt/DE=il-\u0120ermanja +LocaleNames/mt/CY=Ċipru +LocaleNames/mt/CZ=ir-Repubblika Ċeka +LocaleNames/mt/DE=il-Ġermanja LocaleNames/mt/DJ=il-Djibouti LocaleNames/mt/DK=id-Danimarka LocaleNames/mt/DM=Dominica LocaleNames/mt/DO=ir-Repubblika Dominicana -LocaleNames/mt/DZ=l-Al\u0121erija +LocaleNames/mt/DZ=l-Alġerija LocaleNames/mt/EC=l-Ekwador LocaleNames/mt/EE=l-Estonja -LocaleNames/mt/EG=l-E\u0121ittu -LocaleNames/mt/EH=is-Sa\u0127ara tal-Punent +LocaleNames/mt/EG=l-Eġittu +LocaleNames/mt/EH=is-Saħara tal-Punent LocaleNames/mt/ER=l-Eritrea LocaleNames/mt/ES=Spanja LocaleNames/mt/ET=l-Etjopja LocaleNames/mt/FI=il-Finlandja -LocaleNames/mt/FJ=Fi\u0121i -LocaleNames/mt/FM=il-Mikrone\u017cja -LocaleNames/mt/FO=il-G\u017cejjer Faeroe +LocaleNames/mt/FJ=Fiġi +LocaleNames/mt/FM=il-Mikroneżja +LocaleNames/mt/FO=il-Gżejjer Faeroe LocaleNames/mt/FR=Franza LocaleNames/mt/GB=ir-Renju Unit LocaleNames/mt/GE=il-Georgia -LocaleNames/mt/GF=il-Guyana Fran\u010bi\u017ca +LocaleNames/mt/GF=il-Guyana Franċiża LocaleNames/mt/GH=il-Ghana LocaleNames/mt/GL=Greenland LocaleNames/mt/GM=il-Gambja LocaleNames/mt/GN=il-Guinea LocaleNames/mt/GP=Guadeloupe LocaleNames/mt/GQ=il-Guinea Ekwatorjali -LocaleNames/mt/GR=il-Gre\u010bja -LocaleNames/mt/GS=il-Georgia tan-Nofsinhar u l-G\u017cejjer Sandwich tan-Nofsinhar +LocaleNames/mt/GR=il-Greċja +LocaleNames/mt/GS=il-Georgia tan-Nofsinhar u l-Gżejjer Sandwich tan-Nofsinhar LocaleNames/mt/GT=il-Gwatemala LocaleNames/mt/GU=Guam LocaleNames/mt/GW=il-Guinea-Bissau LocaleNames/mt/GY=il-Guyana -LocaleNames/mt/HK=ir-Re\u0121jun Amministrattiv Spe\u010bjali ta\u2019 Hong Kong tar-Repubblika tal-Poplu ta\u010b-\u010aina -LocaleNames/mt/HM=il-G\u017cejjer Heard u l-G\u017cejjer McDonald +LocaleNames/mt/HK=ir-Reġjun Amministrattiv Speċjali ta’ Hong Kong tar-Repubblika tal-Poplu taċ-Ċina +LocaleNames/mt/HM=il-Gżejjer Heard u l-Gżejjer McDonald LocaleNames/mt/HN=il-Honduras LocaleNames/mt/HR=il-Kroazja LocaleNames/mt/HT=il-Haiti LocaleNames/mt/HU=l-Ungerija -LocaleNames/mt/ID=l-Indone\u017cja +LocaleNames/mt/ID=l-Indoneżja LocaleNames/mt/IE=l-Irlanda -LocaleNames/mt/IL=I\u017crael +LocaleNames/mt/IL=Iżrael LocaleNames/mt/IN=l-Indja -LocaleNames/mt/IS=l-I\u017clanda +LocaleNames/mt/IS=l-Iżlanda LocaleNames/mt/IT=l-Italja -LocaleNames/mt/JM=il-\u0120amajka -LocaleNames/mt/JO=il-\u0120ordan -LocaleNames/mt/JP=il-\u0120appun +LocaleNames/mt/JM=il-Ġamajka +LocaleNames/mt/JO=il-Ġordan +LocaleNames/mt/JP=il-Ġappun LocaleNames/mt/KE=il-Kenja -LocaleNames/mt/KG=il-Kirgi\u017cistan +LocaleNames/mt/KG=il-Kirgiżistan LocaleNames/mt/KH=il-Kambodja LocaleNames/mt/KM=Comoros LocaleNames/mt/KN=Saint Kitts u Nevis -LocaleNames/mt/KP=il-Korea ta\u2019 Fuq -LocaleNames/mt/KR=il-Korea t\u2019Isfel +LocaleNames/mt/KP=il-Korea ta’ Fuq +LocaleNames/mt/KR=il-Korea t’Isfel LocaleNames/mt/KW=il-Kuwajt -LocaleNames/mt/KZ=il-Ka\u017cakistan +LocaleNames/mt/KZ=il-Każakistan LocaleNames/mt/LB=il-Libanu LocaleNames/mt/LC=Saint Lucia LocaleNames/mt/LR=il-Liberja @@ -4984,12 +4984,12 @@ LocaleNames/mt/MC=Monaco LocaleNames/mt/MD=il-Moldova LocaleNames/mt/MG=Madagascar -LocaleNames/mt/MH=G\u017cejjer Marshall -LocaleNames/mt/MK=il-Ma\u010bedonja ta\u2019 Fuq +LocaleNames/mt/MH=Gżejjer Marshall +LocaleNames/mt/MK=il-Maċedonja ta’ Fuq LocaleNames/mt/MM=il-Myanmar/Burma LocaleNames/mt/MN=il-Mongolja -LocaleNames/mt/MO=ir-Re\u0121jun Amministrattiv Spe\u010bjali tal-Macao tar-Repubblika tal-Poplu ta\u010b-\u010aina -LocaleNames/mt/MP=\u0120\u017cejjer Mariana tat-Tramuntana +LocaleNames/mt/MO=ir-Reġjun Amministrattiv Speċjali tal-Macao tar-Repubblika tal-Poplu taċ-Ċina +LocaleNames/mt/MP=Ġżejjer Mariana tat-Tramuntana LocaleNames/mt/MQ=Martinique LocaleNames/mt/MR=il-Mauritania LocaleNames/mt/MU=Mauritius @@ -4997,12 +4997,12 @@ LocaleNames/mt/MY=il-Malasja LocaleNames/mt/MZ=il-Mozambique LocaleNames/mt/NA=in-Namibja -LocaleNames/mt/NE=in-Ni\u0121er -LocaleNames/mt/NG=in-Ni\u0121erja +LocaleNames/mt/NE=in-Niġer +LocaleNames/mt/NG=in-Niġerja LocaleNames/mt/NI=in-Nikaragwa LocaleNames/mt/NL=in-Netherlands -LocaleNames/mt/NO=in-Norve\u0121ja -LocaleNames/mt/PF=Poline\u017cja Fran\u010bi\u017ca +LocaleNames/mt/NO=in-Norveġja +LocaleNames/mt/PF=Polineżja Franċiża LocaleNames/mt/PG=Papua New Guinea LocaleNames/mt/PH=il-Filippini LocaleNames/mt/PL=il-Polonja @@ -5010,28 +5010,28 @@ LocaleNames/mt/PS=it-Territorji Palestinjani LocaleNames/mt/PT=il-Portugall LocaleNames/mt/PY=il-Paragwaj -LocaleNames/mt/RE=R\u00e9union +LocaleNames/mt/RE=Réunion LocaleNames/mt/RO=ir-Rumanija LocaleNames/mt/RU=ir-Russja LocaleNames/mt/SA=l-Arabja Sawdija -LocaleNames/mt/SE=l-I\u017cvezja +LocaleNames/mt/SE=l-Iżvezja LocaleNames/mt/SG=Singapore LocaleNames/mt/SI=is-Slovenja LocaleNames/mt/SJ=Svalbard u Jan Mayen LocaleNames/mt/SK=is-Slovakkja LocaleNames/mt/SO=is-Somalja LocaleNames/mt/SR=is-Suriname -LocaleNames/mt/ST=S\u00e3o Tom\u00e9 u Pr\u00edncipe +LocaleNames/mt/ST=São Tomé u Príncipe LocaleNames/mt/SY=is-Sirja LocaleNames/mt/SZ=l-Eswatini -LocaleNames/mt/TC=il-G\u017cejjer Turks u Caicos -LocaleNames/mt/TD=i\u010b-Chad -LocaleNames/mt/TF=It-Territorji Fran\u010bi\u017ci tan-Nofsinhar +LocaleNames/mt/TC=il-Gżejjer Turks u Caicos +LocaleNames/mt/TD=iċ-Chad +LocaleNames/mt/TF=It-Territorji Franċiżi tan-Nofsinhar LocaleNames/mt/TH=it-Tajlandja -LocaleNames/mt/TJ=it-Ta\u0121ikistan +LocaleNames/mt/TJ=it-Taġikistan LocaleNames/mt/TK=it-Tokelau LocaleNames/mt/TL=Timor Leste -LocaleNames/mt/TN=it-Tune\u017cija +LocaleNames/mt/TN=it-Tuneżija LocaleNames/mt/TR=it-Turkija LocaleNames/mt/TT=Trinidad u Tobago LocaleNames/mt/TW=it-Tajwan @@ -5039,7 +5039,7 @@ LocaleNames/mt/UA=l-Ukrajna LocaleNames/mt/US=l-Istati Uniti LocaleNames/mt/UY=l-Urugwaj -LocaleNames/mt/UZ=l-U\u017cbekistan +LocaleNames/mt/UZ=l-Użbekistan LocaleNames/mt/VA=l-Istat tal-Belt tal-Vatikan LocaleNames/mt/VC=Saint Vincent u l-Grenadini LocaleNames/mt/VE=il-Venezwela @@ -5048,50 +5048,50 @@ LocaleNames/mt/WF=Wallis u Futuna LocaleNames/mt/YE=il-Jemen LocaleNames/mt/YT=Mayotte -LocaleNames/mt/ZA=l-Afrika t\u2019Isfel -LocaleNames/mt/ZM=i\u017c-\u017bambja -LocaleNames/mt/ZW=i\u017c-\u017bimbabwe -LocaleNames/sr/ZA=\u0408\u0443\u0436\u043d\u043e\u0430\u0444\u0440\u0438\u0447\u043a\u0430 \u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 -LocaleNames/zh_SG/bo=\u85cf\u8bed -LocaleNames/zh_SG/gd=\u82cf\u683c\u5170\u76d6\u5c14\u8bed -LocaleNames/zh_SG/ho=\u5e0c\u91cc\u83ab\u56fe\u8bed -LocaleNames/zh_SG/ia=\u56fd\u9645\u8bed -LocaleNames/zh_SG/ie=\u56fd\u9645\u6587\u5b57\uff08E\uff09 -LocaleNames/zh_SG/iu=\u56e0\u7ebd\u7279\u8bed -LocaleNames/zh_SG/kj=\u5bbd\u4e9a\u739b\u8bed -LocaleNames/zh_SG/kn=\u5361\u7eb3\u8fbe\u8bed -LocaleNames/zh_SG/lv=\u62c9\u8131\u7ef4\u4e9a\u8bed -LocaleNames/zh_SG/ny=\u9f50\u5207\u74e6\u8bed -LocaleNames/zh_SG/oc=\u5965\u514b\u8bed -LocaleNames/zh_SG/om=\u5965\u7f57\u83ab\u8bed -LocaleNames/zh_SG/rm=\u7f57\u66fc\u4ec0\u8bed -LocaleNames/zh_SG/sd=\u4fe1\u5fb7\u8bed -LocaleNames/zh_SG/se=\u5317\u65b9\u8428\u7c73\u8bed -LocaleNames/zh_SG/sn=\u7ecd\u7eb3\u8bed -LocaleNames/zh_SG/ss=\u65af\u74e6\u8482\u8bed -LocaleNames/zh_SG/su=\u5dfd\u4ed6\u8bed -LocaleNames/zh_SG/tl=\u4ed6\u52a0\u7984\u8bed -LocaleNames/zh_SG/tn=\u8328\u74e6\u7eb3\u8bed -LocaleNames/zh_SG/ts=\u806a\u52a0\u8bed -LocaleNames/zh_SG/tt=\u9791\u977c\u8bed -LocaleNames/zh_SG/tw=\u5951\u7ef4\u8bed -LocaleNames/zh_SG/wa=\u74e6\u9686\u8bed -LocaleNames/zh_SG/wo=\u6c83\u6d1b\u592b\u8bed -LocaleNames/zh_SG/xh=\u79d1\u8428\u8bed -LocaleNames/zh_SG/za=\u58ee\u8bed -LocaleNames/zh_SG/BA=\u6ce2\u65af\u5c3c\u4e9a\u548c\u9ed1\u585e\u54e5\u7ef4\u90a3 -LocaleNames/zh_SG/CC=\u79d1\u79d1\u65af\uff08\u57fa\u6797\uff09\u7fa4\u5c9b -LocaleNames/zh_SG/CD=\u521a\u679c\uff08\u91d1\uff09 -LocaleNames/zh_SG/CG=\u521a\u679c\uff08\u5e03\uff09 -LocaleNames/zh_SG/DM=\u591a\u7c73\u5c3c\u514b -LocaleNames/zh_SG/KG=\u5409\u5c14\u5409\u65af\u65af\u5766 -LocaleNames/zh_SG/KP=\u671d\u9c9c -LocaleNames/zh_SG/MQ=\u9a6c\u63d0\u5c3c\u514b -LocaleNames/zh_SG/MQ=\u9a6c\u63d0\u5c3c\u514b -LocaleNames/zh_SG/NC=\u65b0\u5580\u91cc\u591a\u5c3c\u4e9a -LocaleNames/zh_SG/TF=\u6cd5\u5c5e\u5357\u90e8\u9886\u5730 -FormatData/es_US/AmPmMarkers/0=a.\u00a0m. -FormatData/es_US/AmPmMarkers/1=p.\u00a0m. +LocaleNames/mt/ZA=l-Afrika t’Isfel +LocaleNames/mt/ZM=iż-Żambja +LocaleNames/mt/ZW=iż-Żimbabwe +LocaleNames/sr/ZA=Јужноафричка Република +LocaleNames/zh_SG/bo=藏语 +LocaleNames/zh_SG/gd=苏格兰盖尔语 +LocaleNames/zh_SG/ho=希里莫图语 +LocaleNames/zh_SG/ia=国际语 +LocaleNames/zh_SG/ie=国际文字(E) +LocaleNames/zh_SG/iu=因纽特语 +LocaleNames/zh_SG/kj=宽亚玛语 +LocaleNames/zh_SG/kn=卡纳达语 +LocaleNames/zh_SG/lv=拉脱维亚语 +LocaleNames/zh_SG/ny=齐切瓦语 +LocaleNames/zh_SG/oc=奥克语 +LocaleNames/zh_SG/om=奥罗莫语 +LocaleNames/zh_SG/rm=罗曼什语 +LocaleNames/zh_SG/sd=信德语 +LocaleNames/zh_SG/se=北方萨米语 +LocaleNames/zh_SG/sn=绍纳语 +LocaleNames/zh_SG/ss=斯瓦蒂语 +LocaleNames/zh_SG/su=巽他语 +LocaleNames/zh_SG/tl=他加禄语 +LocaleNames/zh_SG/tn=茨瓦纳语 +LocaleNames/zh_SG/ts=聪加语 +LocaleNames/zh_SG/tt=鞑靼语 +LocaleNames/zh_SG/tw=契维语 +LocaleNames/zh_SG/wa=瓦隆语 +LocaleNames/zh_SG/wo=沃洛夫语 +LocaleNames/zh_SG/xh=科萨语 +LocaleNames/zh_SG/za=壮语 +LocaleNames/zh_SG/BA=波斯尼亚和黑塞哥维那 +LocaleNames/zh_SG/CC=科科斯(基林)群岛 +LocaleNames/zh_SG/CD=刚果(金) +LocaleNames/zh_SG/CG=刚果(布) +LocaleNames/zh_SG/DM=多米尼克 +LocaleNames/zh_SG/KG=吉尔吉斯斯坦 +LocaleNames/zh_SG/KP=朝鲜 +LocaleNames/zh_SG/MQ=马提尼克 +LocaleNames/zh_SG/MQ=马提尼克 +LocaleNames/zh_SG/NC=新喀里多尼亚 +LocaleNames/zh_SG/TF=法属南部领地 +FormatData/es_US/AmPmMarkers/0=a. m. +FormatData/es_US/AmPmMarkers/1=p. m. FormatData/es_US/latn.NumberElements/0=. FormatData/es_US/latn.NumberElements/1=, FormatData/es_US/latn.NumberElements/2=; @@ -5100,18 +5100,18 @@ FormatData/es_US/latn.NumberElements/5=# FormatData/es_US/latn.NumberElements/6=- FormatData/es_US/latn.NumberElements/7=E -FormatData/es_US/latn.NumberElements/8=\u2030 -FormatData/es_US/latn.NumberElements/9=\u221e +FormatData/es_US/latn.NumberElements/8=‰ +FormatData/es_US/latn.NumberElements/9=∞ FormatData/es_US/latn.NumberElements/10=NaN FormatData/mt/AmPmMarkers/0=AM FormatData/mt/AmPmMarkers/1=PM -FormatData/mt/DatePatterns/0=EEEE, d 'ta'\u2019 MMMM y +FormatData/mt/DatePatterns/0=EEEE, d 'ta'’ MMMM y # bug# 6498742 # make sure that the default en data is used for en_SG : CLDR1.4.1 demoted these data -FormatData/en_SG/TimePatterns/0=h:mm:ss\u202fa zzzz -FormatData/en_SG/TimePatterns/1=h:mm:ss\u202fa z -FormatData/en_SG/TimePatterns/2=h:mm:ss\u202fa -FormatData/en_SG/TimePatterns/3=h:mm\u202fa +FormatData/en_SG/TimePatterns/0=h:mm:ss a zzzz +FormatData/en_SG/TimePatterns/1=h:mm:ss a z +FormatData/en_SG/TimePatterns/2=h:mm:ss a +FormatData/en_SG/TimePatterns/3=h:mm a FormatData/en_SG/DatePatterns/0=EEEE, d MMMM y FormatData/en_SG/DatePatterns/1=d MMMM y FormatData/en_SG/DatePatterns/2=d MMM y @@ -5120,10 +5120,10 @@ # Use approved data FormatData/ms/Eras/0=S.M. FormatData/ms/Eras/1=TM -FormatData/sr_BA/MonthNames/5=\u0458\u0443\u043d -FormatData/sr_BA/MonthNames/6=\u0458\u0443\u043b -FormatData/sr_BA/DayNames/3=\u0441\u0440\u0435\u0434\u0430 -FormatData/sr_BA/DayAbbreviations/3=\u0441\u0440\u0435 +FormatData/sr_BA/MonthNames/5=јун +FormatData/sr_BA/MonthNames/6=јул +FormatData/sr_BA/DayNames/3=среда +FormatData/sr_BA/DayAbbreviations/3=сре FormatData/sr_BA/TimePatterns/0=HH:mm:ss zzzz FormatData/sr_BA/TimePatterns/1=HH:mm:ss z FormatData/sr_BA/TimePatterns/2=HH:mm:ss @@ -5135,31 +5135,31 @@ FormatData/sr_BA/DateTimePatterns/0={1} {0} LocaleNames/pt_BR/ce=checheno LocaleNames/pt_BR/ik=inupiaque -LocaleNames/pt_BR/jv=javan\u00eas +LocaleNames/pt_BR/jv=javanês LocaleNames/pt_BR/nd=ndebele do norte LocaleNames/pt_BR/nr=ndebele do sul LocaleNames/pt_BR/st=soto do sul LocaleNames/pt_BR/AX=Ilhas Aland -LocaleNames/pt_BR/BA=B\u00f3snia e Herzegovina +LocaleNames/pt_BR/BA=Bósnia e Herzegovina LocaleNames/pt_BR/BH=Barein LocaleNames/pt_BR/KP=Coreia do Norte -LocaleNames/pt_BR/MK=Maced\u00f4nia do Norte -LocaleNames/pt_BR/ZW=Zimb\u00e1bue +LocaleNames/pt_BR/MK=Macedônia do Norte +LocaleNames/pt_BR/ZW=Zimbábue LocaleNames/pt_PT/ee=ewe -LocaleNames/pt_PT/fo=fero\u00eas +LocaleNames/pt_PT/fo=feroês LocaleNames/pt_PT/gl=galego -LocaleNames/pt_PT/ha=ha\u00fa\u00e7a -LocaleNames/pt_PT/hy=arm\u00e9nio +LocaleNames/pt_PT/ha=haúça +LocaleNames/pt_PT/hy=arménio LocaleNames/pt_PT/ig=igbo LocaleNames/pt_PT/ki=quicuio -LocaleNames/pt_PT/kl=groneland\u00eas +LocaleNames/pt_PT/kl=gronelandês LocaleNames/pt_PT/km=khmer -LocaleNames/pt_PT/mh=marshal\u00eas -LocaleNames/pt_PT/mk=maced\u00f3nio +LocaleNames/pt_PT/mh=marshalês +LocaleNames/pt_PT/mk=macedónio LocaleNames/pt_PT/nr=ndebele do sul -LocaleNames/pt_PT/os=oss\u00e9tico +LocaleNames/pt_PT/os=ossético LocaleNames/pt_PT/st=sesoto -LocaleNames/pt_PT/ta=t\u00e2mil +LocaleNames/pt_PT/ta=tâmil LocaleNames/pt_PT/AI=Anguila LocaleNames/pt_PT/AX=Alanda @@ -5177,7 +5177,7 @@ LocaleNames/da/da=dansk # bug 6485516 -LocaleNames/fr/GF=Guyane fran\u00e7aise +LocaleNames/fr/GF=Guyane française # bug 6486607 LocaleNames/fr/GY=Guyana @@ -5191,9 +5191,9 @@ FormatData/fr_LU/DateTimePatternChars=GyMdkHmsSEDFwWahKzZ # bug 6547501 -FormatData/fr/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/fr/latn.NumberPatterns/2=#,##0 % # following two lines are also for bug 4494727 -FormatData/fr_CA/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/fr_CA/latn.NumberPatterns/2=#,##0 % FormatData/fr_CH/latn.NumberPatterns/2=#,##0% # bug 4494727 @@ -5207,27 +5207,27 @@ LocaleNames/de/RS=Serbien LocaleNames/es/ME=Montenegro LocaleNames/es/RS=Serbia -LocaleNames/fr/ME=Mont\u00e9n\u00e9gro +LocaleNames/fr/ME=Monténégro LocaleNames/fr/RS=Serbie LocaleNames/it/ME=Montenegro LocaleNames/it/RS=Serbia -LocaleNames/ja/ME=\u30e2\u30f3\u30c6\u30cd\u30b0\u30ed -LocaleNames/ja/RS=\u30bb\u30eb\u30d3\u30a2 -LocaleNames/ko/ME=\ubaac\ud14c\ub124\uadf8\ub85c -LocaleNames/ko/RS=\uc138\ub974\ube44\uc544 +LocaleNames/ja/ME=モンテネグロ +LocaleNames/ja/RS=セルビア +LocaleNames/ko/ME=몬테네그로 +LocaleNames/ko/RS=세르비아 LocaleNames/sv/ME=Montenegro LocaleNames/sv/RS=Serbien -LocaleNames/zh/ME=\u9ed1\u5c71 -LocaleNames/zh/RS=\u585e\u5c14\u7ef4\u4e9a -LocaleNames/zh_TW/ME=\u8499\u7279\u5167\u54e5\u7f85 -LocaleNames/zh_TW/RS=\u585e\u723e\u7dad\u4e9e +LocaleNames/zh/ME=黑山 +LocaleNames/zh/RS=塞尔维亚 +LocaleNames/zh_TW/ME=蒙特內哥羅 +LocaleNames/zh_TW/RS=塞爾維亞 # bug 6531591 -CurrencyNames/ar_SD/SDD=\u062f.\u0633.\u200f -CurrencyNames/ar_SD/SDG=\u062c.\u0633. +CurrencyNames/ar_SD/SDD=د.س.‏ +CurrencyNames/ar_SD/SDG=ج.س. # bug 6531593 -FormatData/is_IS/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 +FormatData/is_IS/latn.NumberPatterns/1=#,##0.00 ¤ # bug 6509039 FormatData/sv/AmPmMarkers/0=fm @@ -5241,7 +5241,7 @@ FormatData/fi/AmPmMarkers/1=ip. # bug 6507067 -TimeZoneNames/zh_TW/Asia\/Taipei/1=\u53f0\u5317\u6a19\u6e96\u6642\u9593 +TimeZoneNames/zh_TW/Asia\/Taipei/1=台北標準時間 TimeZoneNames/zh_TW/Asia\/Taipei/2= # bug 6645271 @@ -5249,10 +5249,10 @@ FormatData/hr_HR/DatePatterns/3=dd. MM. y. # bug 6873931 -CurrencyNames/tr_TR/TRY=\u20ba +CurrencyNames/tr_TR/TRY=₺ #bug 6450945 -FormatData/ro/DayNames/6=s\u00e2mb\u0103t\u0103 +FormatData/ro/DayNames/6=sâmbătă #bug 6645268 LocaleNames/fi/fr=ranska @@ -5261,14 +5261,14 @@ LocaleNames/fi_FI/FR=Ranska # bug 6646611, 6914413 -FormatData/be_BY/MonthNames/10=\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430 -FormatData/be_BY/MonthAbbreviations/10=\u043b\u0456\u0441 +FormatData/be_BY/MonthNames/10=лістапада +FormatData/be_BY/MonthAbbreviations/10=ліс # bug 6645405 -FormatData/hu_HU/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4 +FormatData/hu_HU/latn.NumberPatterns/1=#,##0.00 ¤ # bug 6650730 -FormatData/lt/latn.NumberElements/1=\u00a0 +FormatData/lt/latn.NumberElements/1=  FormatData/lt/DatePatterns/2=y-MM-dd # bug 6573250 @@ -5277,7 +5277,7 @@ # bug 6870908 FormatData/et/MonthNames/0=jaanuar FormatData/et/MonthNames/1=veebruar -FormatData/et/MonthNames/2=m\u00e4rts +FormatData/et/MonthNames/2=märts FormatData/et/MonthNames/3=aprill FormatData/et/MonthNames/4=mai FormatData/et/MonthNames/5=juuni @@ -5289,7 +5289,7 @@ FormatData/et/MonthNames/11=detsember FormatData/et/MonthAbbreviations/0=jaan FormatData/et/MonthAbbreviations/1=veebr -FormatData/et/MonthAbbreviations/2=m\u00e4rts +FormatData/et/MonthAbbreviations/2=märts FormatData/et/MonthAbbreviations/3=apr FormatData/et/MonthAbbreviations/4=mai FormatData/et/MonthAbbreviations/5=juuni @@ -5305,39 +5305,39 @@ LocaleNames/es/av=avar LocaleNames/es/az=azerbaiyano LocaleNames/es/ba=baskir -LocaleNames/es/bn=bengal\u00ed -LocaleNames/es/cu=eslavo eclesi\u00e1stico +LocaleNames/es/bn=bengalí +LocaleNames/es/cu=eslavo eclesiástico LocaleNames/es/dz=dzongkha LocaleNames/es/eu=euskera LocaleNames/es/fa=persa LocaleNames/es/ff=fula LocaleNames/es/fj=fiyiano -LocaleNames/es/fo=fero\u00e9s -LocaleNames/es/fy=fris\u00f3n occidental -LocaleNames/es/gu=guyarat\u00ed -LocaleNames/es/gv=man\u00e9s +LocaleNames/es/fo=feroés +LocaleNames/es/fy=frisón occidental +LocaleNames/es/gu=guyaratí +LocaleNames/es/gv=manés LocaleNames/es/hi=hindi LocaleNames/es/ho=hiri motu LocaleNames/es/ie=interlingue LocaleNames/es/ig=igbo -LocaleNames/es/ii=yi de Sichu\u00e1n +LocaleNames/es/ii=yi de Sichuán LocaleNames/es/ik=inupiaq LocaleNames/es/kg=kongo LocaleNames/es/ki=kikuyu LocaleNames/es/kj=kuanyama LocaleNames/es/kk=kazajo LocaleNames/es/km=jemer -LocaleNames/es/kn=canar\u00e9s +LocaleNames/es/kn=canarés LocaleNames/es/ks=cachemir LocaleNames/es/ku=kurdo -LocaleNames/es/ky=kirgu\u00eds +LocaleNames/es/ky=kirguís LocaleNames/es/lu=luba-katanga -LocaleNames/es/mr=marat\u00ed +LocaleNames/es/mr=maratí LocaleNames/es/nb=noruego bokmal LocaleNames/es/nd=ndebele septentrional LocaleNames/es/nn=noruego nynorsk LocaleNames/es/nr=ndebele meridional -LocaleNames/es/os=os\u00e9tico +LocaleNames/es/os=osético LocaleNames/es/rm=romanche LocaleNames/es/rn=kirundi LocaleNames/es/rw=kinyarwanda @@ -5347,10 +5347,10 @@ LocaleNames/es/sn=shona LocaleNames/es/ss=suazi LocaleNames/es/st=sotho meridional -LocaleNames/es/su=sundan\u00e9s +LocaleNames/es/su=sundanés LocaleNames/es/sw=suajili LocaleNames/es/tg=tayiko -LocaleNames/es/ti=tigri\u00f1a +LocaleNames/es/ti=tigriña LocaleNames/es/tn=setsuana LocaleNames/es/to=tongano LocaleNames/es/tw=twi @@ -5358,7 +5358,7 @@ LocaleNames/es/ug=uigur LocaleNames/es/uk=ucraniano LocaleNames/es/uz=uzbeko -LocaleNames/es/vo=volap\u00fck +LocaleNames/es/vo=volapük LocaleNames/es/za=zhuang # bug 6716626 - language @@ -5407,13 +5407,13 @@ LocaleNames/nl/ff=Fulah LocaleNames/nl/fi=Fins LocaleNames/nl/fj=Fijisch -LocaleNames/nl/fo=Faer\u00f6ers +LocaleNames/nl/fo=Faeröers LocaleNames/nl/fr=Frans LocaleNames/nl/fy=Fries LocaleNames/nl/ga=Iers LocaleNames/nl/gd=Schots-Gaelisch LocaleNames/nl/gl=Galicisch -LocaleNames/nl/gn=Guaran\u00ed +LocaleNames/nl/gn=Guaraní LocaleNames/nl/gu=Gujarati LocaleNames/nl/gv=Manx LocaleNames/nl/ha=Hausa @@ -5421,7 +5421,7 @@ LocaleNames/nl/hi=Hindi LocaleNames/nl/ho=Hiri Motu LocaleNames/nl/hr=Kroatisch -LocaleNames/nl/ht=Ha\u00eftiaans Creools +LocaleNames/nl/ht=Haïtiaans Creools LocaleNames/nl/hu=Hongaars LocaleNames/nl/hy=Armeens LocaleNames/nl/hz=Herero @@ -5472,7 +5472,7 @@ LocaleNames/nl/mt=Maltees LocaleNames/nl/my=Birmaans LocaleNames/nl/na=Nauruaans -LocaleNames/nl/nb=Noors - Bokm\u00e5l +LocaleNames/nl/nb=Noors - Bokmål LocaleNames/nl/nd=Noord-Ndebele LocaleNames/nl/ne=Nepalees LocaleNames/nl/ng=Ndonga @@ -5531,12 +5531,12 @@ LocaleNames/nl/tw=Twi LocaleNames/nl/ty=Tahitiaans LocaleNames/nl/ug=Oeigoers -LocaleNames/nl/uk=Oekra\u00efens +LocaleNames/nl/uk=Oekraïens LocaleNames/nl/ur=Urdu LocaleNames/nl/uz=Oezbeeks LocaleNames/nl/ve=Venda LocaleNames/nl/vi=Vietnamees -LocaleNames/nl/vo=Volap\u00fck +LocaleNames/nl/vo=Volapük LocaleNames/nl/wa=Waals LocaleNames/nl/wo=Wolof LocaleNames/nl/xh=Xhosa @@ -5552,21 +5552,21 @@ LocaleNames/nl/AF=Afghanistan LocaleNames/nl/AG=Antigua en Barbuda LocaleNames/nl/AI=Anguilla -LocaleNames/nl/AL=Albani\u00eb -LocaleNames/nl/AM=Armeni\u00eb +LocaleNames/nl/AL=Albanië +LocaleNames/nl/AM=Armenië LocaleNames/nl/AO=Angola LocaleNames/nl/AQ=Antarctica -LocaleNames/nl/AR=Argentini\u00eb +LocaleNames/nl/AR=Argentinië LocaleNames/nl/AS=Amerikaans-Samoa LocaleNames/nl/AT=Oostenrijk -LocaleNames/nl/AU=Australi\u00eb +LocaleNames/nl/AU=Australië LocaleNames/nl/AW=Aruba -LocaleNames/nl/AX=\u00c5land +LocaleNames/nl/AX=Åland LocaleNames/nl/AZ=Azerbeidzjan -LocaleNames/nl/BA=Bosni\u00eb en Herzegovina +LocaleNames/nl/BA=Bosnië en Herzegovina LocaleNames/nl/BB=Barbados LocaleNames/nl/BD=Bangladesh -LocaleNames/nl/BE=Belgi\u00eb +LocaleNames/nl/BE=België LocaleNames/nl/BF=Burkina Faso LocaleNames/nl/BG=Bulgarije LocaleNames/nl/BH=Bahrein @@ -5575,8 +5575,8 @@ LocaleNames/nl/BM=Bermuda LocaleNames/nl/BN=Brunei LocaleNames/nl/BO=Bolivia -LocaleNames/nl/BR=Brazili\u00eb -LocaleNames/nl/BS=Bahama\u2019s +LocaleNames/nl/BR=Brazilië +LocaleNames/nl/BS=Bahama’s LocaleNames/nl/BT=Bhutan LocaleNames/nl/BV=Bouveteiland LocaleNames/nl/BW=Botswana @@ -5596,10 +5596,10 @@ LocaleNames/nl/CO=Colombia LocaleNames/nl/CR=Costa Rica LocaleNames/nl/CU=Cuba -LocaleNames/nl/CV=Kaapverdi\u00eb +LocaleNames/nl/CV=Kaapverdië LocaleNames/nl/CX=Christmaseiland LocaleNames/nl/CY=Cyprus -LocaleNames/nl/CZ=Tsjechi\u00eb +LocaleNames/nl/CZ=Tsjechië LocaleNames/nl/DE=Duitsland LocaleNames/nl/DJ=Djibouti LocaleNames/nl/DK=Denemarken @@ -5612,17 +5612,17 @@ LocaleNames/nl/EH=Westelijke Sahara LocaleNames/nl/ER=Eritrea LocaleNames/nl/ES=Spanje -LocaleNames/nl/ET=Ethiopi\u00eb +LocaleNames/nl/ET=Ethiopië LocaleNames/nl/FI=Finland LocaleNames/nl/FJ=Fiji LocaleNames/nl/FK=Falklandeilanden LocaleNames/nl/FM=Micronesia -LocaleNames/nl/FO=Faer\u00f6er +LocaleNames/nl/FO=Faeröer LocaleNames/nl/FR=Frankrijk LocaleNames/nl/GA=Gabon LocaleNames/nl/GB=Verenigd Koninkrijk LocaleNames/nl/GD=Grenada -LocaleNames/nl/GE=Georgi\u00eb +LocaleNames/nl/GE=Georgië LocaleNames/nl/GF=Frans-Guyana LocaleNames/nl/GH=Ghana LocaleNames/nl/GI=Gibraltar @@ -5640,23 +5640,23 @@ LocaleNames/nl/HK=Hongkong SAR van China LocaleNames/nl/HM=Heard en McDonaldeilanden LocaleNames/nl/HN=Honduras -LocaleNames/nl/HR=Kroati\u00eb -LocaleNames/nl/HT=Ha\u00efti +LocaleNames/nl/HR=Kroatië +LocaleNames/nl/HT=Haïti LocaleNames/nl/HU=Hongarije -LocaleNames/nl/ID=Indonesi\u00eb +LocaleNames/nl/ID=Indonesië LocaleNames/nl/IE=Ierland -LocaleNames/nl/IL=Isra\u00ebl +LocaleNames/nl/IL=Israël LocaleNames/nl/IN=India LocaleNames/nl/IO=Brits Indische Oceaanterritorium LocaleNames/nl/IQ=Irak LocaleNames/nl/IR=Iran LocaleNames/nl/IS=IJsland -LocaleNames/nl/IT=Itali\u00eb +LocaleNames/nl/IT=Italië LocaleNames/nl/JM=Jamaica -LocaleNames/nl/JO=Jordani\u00eb +LocaleNames/nl/JO=Jordanië LocaleNames/nl/JP=Japan LocaleNames/nl/KE=Kenia -LocaleNames/nl/KG=Kirgizi\u00eb +LocaleNames/nl/KG=Kirgizië LocaleNames/nl/KH=Cambodja LocaleNames/nl/KI=Kiribati LocaleNames/nl/KM=Comoren @@ -5676,31 +5676,31 @@ LocaleNames/nl/LT=Litouwen LocaleNames/nl/LU=Luxemburg LocaleNames/nl/LV=Letland -LocaleNames/nl/LY=Libi\u00eb +LocaleNames/nl/LY=Libië LocaleNames/nl/MA=Marokko LocaleNames/nl/MC=Monaco -LocaleNames/nl/MD=Moldavi\u00eb +LocaleNames/nl/MD=Moldavië LocaleNames/nl/ME=Montenegro LocaleNames/nl/MG=Madagaskar LocaleNames/nl/MH=Marshalleilanden -LocaleNames/nl/MK=Noord-Macedoni\u00eb +LocaleNames/nl/MK=Noord-Macedonië LocaleNames/nl/ML=Mali LocaleNames/nl/MM=Myanmar (Birma) -LocaleNames/nl/MN=Mongoli\u00eb +LocaleNames/nl/MN=Mongolië LocaleNames/nl/MO=Macau SAR van China LocaleNames/nl/MP=Noordelijke Marianen LocaleNames/nl/MQ=Martinique -LocaleNames/nl/MR=Mauritani\u00eb +LocaleNames/nl/MR=Mauritanië LocaleNames/nl/MS=Montserrat LocaleNames/nl/MT=Malta LocaleNames/nl/MU=Mauritius LocaleNames/nl/MV=Maldiven LocaleNames/nl/MW=Malawi LocaleNames/nl/MX=Mexico -LocaleNames/nl/MY=Maleisi\u00eb +LocaleNames/nl/MY=Maleisië LocaleNames/nl/MZ=Mozambique -LocaleNames/nl/NA=Namibi\u00eb -LocaleNames/nl/NC=Nieuw-Caledoni\u00eb +LocaleNames/nl/NA=Namibië +LocaleNames/nl/NC=Nieuw-Caledonië LocaleNames/nl/NE=Niger LocaleNames/nl/NF=Norfolk LocaleNames/nl/NG=Nigeria @@ -5714,7 +5714,7 @@ LocaleNames/nl/OM=Oman LocaleNames/nl/PA=Panama LocaleNames/nl/PE=Peru -LocaleNames/nl/PF=Frans-Polynesi\u00eb +LocaleNames/nl/PF=Frans-Polynesië LocaleNames/nl/PG=Papoea-Nieuw-Guinea LocaleNames/nl/PH=Filipijnen LocaleNames/nl/PK=Pakistan @@ -5727,29 +5727,29 @@ LocaleNames/nl/PW=Palau LocaleNames/nl/PY=Paraguay LocaleNames/nl/QA=Qatar -LocaleNames/nl/RE=R\u00e9union -LocaleNames/nl/RO=Roemeni\u00eb -LocaleNames/nl/RS=Servi\u00eb +LocaleNames/nl/RE=Réunion +LocaleNames/nl/RO=Roemenië +LocaleNames/nl/RS=Servië LocaleNames/nl/RU=Rusland LocaleNames/nl/RW=Rwanda -LocaleNames/nl/SA=Saoedi-Arabi\u00eb +LocaleNames/nl/SA=Saoedi-Arabië LocaleNames/nl/SB=Salomonseilanden LocaleNames/nl/SC=Seychellen LocaleNames/nl/SD=Soedan LocaleNames/nl/SE=Zweden LocaleNames/nl/SG=Singapore LocaleNames/nl/SH=Sint-Helena -LocaleNames/nl/SI=Sloveni\u00eb +LocaleNames/nl/SI=Slovenië LocaleNames/nl/SJ=Spitsbergen en Jan Mayen LocaleNames/nl/SK=Slowakije LocaleNames/nl/SL=Sierra Leone LocaleNames/nl/SM=San Marino LocaleNames/nl/SN=Senegal -LocaleNames/nl/SO=Somali\u00eb +LocaleNames/nl/SO=Somalië LocaleNames/nl/SR=Suriname -LocaleNames/nl/ST=Sao Tom\u00e9 en Principe +LocaleNames/nl/ST=Sao Tomé en Principe LocaleNames/nl/SV=El Salvador -LocaleNames/nl/SY=Syri\u00eb +LocaleNames/nl/SY=Syrië LocaleNames/nl/SZ=Eswatini LocaleNames/nl/TC=Turks- en Caicoseilanden LocaleNames/nl/TD=Tsjaad @@ -5760,14 +5760,14 @@ LocaleNames/nl/TK=Tokelau LocaleNames/nl/TL=Oost-Timor LocaleNames/nl/TM=Turkmenistan -LocaleNames/nl/TN=Tunesi\u00eb +LocaleNames/nl/TN=Tunesië LocaleNames/nl/TO=Tonga LocaleNames/nl/TR=Turkije LocaleNames/nl/TT=Trinidad en Tobago LocaleNames/nl/TV=Tuvalu LocaleNames/nl/TW=Taiwan LocaleNames/nl/TZ=Tanzania -LocaleNames/nl/UA=Oekra\u00efne +LocaleNames/nl/UA=Oekraïne LocaleNames/nl/UG=Oeganda LocaleNames/nl/UM=Kleine afgelegen eilanden van de Verenigde Staten LocaleNames/nl/US=Verenigde Staten @@ -5801,18 +5801,18 @@ FormatData/sr-Latn/DayNames/1=ponedeljak FormatData/sr-Latn-BA/DayNames/2=utorak FormatData/sr-Latn-ME/DayNames/3=srijeda -FormatData/sr-Latn-RS/DayNames/4=\u010detvrtak +FormatData/sr-Latn-RS/DayNames/4=četvrtak # FormatData/sr-Latn/DayAbbreviations/1=pon FormatData/sr-Latn-BA/DayAbbreviations/2=uto FormatData/sr-Latn-ME/DayAbbreviations/3=srijeda -FormatData/sr-Latn-RS/DayAbbreviations/4=\u010det +FormatData/sr-Latn-RS/DayAbbreviations/4=čet # -CurrencyNames/sr-Latn/EUR=\u20ac -CurrencyNames/sr-Latn-BA/EUR=\u20ac +CurrencyNames/sr-Latn/EUR=€ +CurrencyNames/sr-Latn-BA/EUR=€ CurrencyNames/sr-Latn-BA/BAM=KM -CurrencyNames/sr-Latn-ME/EUR=\u20ac -CurrencyNames/sr-Latn-RS/EUR=\u20ac +CurrencyNames/sr-Latn-ME/EUR=€ +CurrencyNames/sr-Latn-RS/EUR=€ # FormatData/sr-Latn/TimePatterns/1=HH:mm:ss z FormatData/sr-Latn-BA/TimePatterns/2=HH:mm:ss @@ -5821,81 +5821,81 @@ # bug 7019267 CurrencyNames/pt/adp=Peseta de Andorra -CurrencyNames/pt/aed=Dirham dos Emirados \u00c1rabes Unidos -CurrencyNames/pt/afa=Afegane (1927\u20132002) -CurrencyNames/pt/afn=Afegane afeg\u00e3o -CurrencyNames/pt/all=Lek alban\u00eas -CurrencyNames/pt/amd=Dram arm\u00eanio +CurrencyNames/pt/aed=Dirham dos Emirados Árabes Unidos +CurrencyNames/pt/afa=Afegane (1927–2002) +CurrencyNames/pt/afn=Afegane afegão +CurrencyNames/pt/all=Lek albanês +CurrencyNames/pt/amd=Dram armênio CurrencyNames/pt/ang=Florim das Antilhas Holandesas CurrencyNames/pt/aoa=Kwanza angolano CurrencyNames/pt/ars=Peso argentino -CurrencyNames/pt/ats=Xelim austr\u00edaco -CurrencyNames/pt/aud=D\u00f3lar australiano +CurrencyNames/pt/ats=Xelim austríaco +CurrencyNames/pt/aud=Dólar australiano CurrencyNames/pt/awg=Florim arubano -CurrencyNames/pt/azm=Manat azerbaijano (1993\u20132006) +CurrencyNames/pt/azm=Manat azerbaijano (1993–2006) CurrencyNames/pt/azn=Manat azeri -CurrencyNames/pt/bam=Marco convers\u00edvel da B\u00f3snia e Herzegovina -CurrencyNames/pt/bbd=D\u00f3lar barbadense +CurrencyNames/pt/bam=Marco conversível da Bósnia e Herzegovina +CurrencyNames/pt/bbd=Dólar barbadense CurrencyNames/pt/bdt=Taka bengali CurrencyNames/pt/bef=Franco belga -CurrencyNames/pt/bgl=Lev forte b\u00falgaro -CurrencyNames/pt/bgn=Lev b\u00falgaro +CurrencyNames/pt/bgl=Lev forte búlgaro +CurrencyNames/pt/bgn=Lev búlgaro CurrencyNames/pt/bhd=Dinar bareinita CurrencyNames/pt/bif=Franco burundiano -CurrencyNames/pt/bmd=D\u00f3lar bermudense -CurrencyNames/pt/bnd=D\u00f3lar bruneano +CurrencyNames/pt/bmd=Dólar bermudense +CurrencyNames/pt/bnd=Dólar bruneano CurrencyNames/pt/bov=Mvdol boliviano CurrencyNames/pt/brl=Real brasileiro -CurrencyNames/pt/bsd=D\u00f3lar bahamense -CurrencyNames/pt/btn=Ngultrum butan\u00eas +CurrencyNames/pt/bsd=Dólar bahamense +CurrencyNames/pt/btn=Ngultrum butanês CurrencyNames/pt/bwp=Pula botsuanesa -CurrencyNames/pt/byb=Rublo novo bielo-russo (1994\u20131999) -CurrencyNames/pt/byr=Rublo bielorrusso (2000\u20132016) -CurrencyNames/pt/bzd=D\u00f3lar belizenho -CurrencyNames/pt/cad=D\u00f3lar canadense -CurrencyNames/pt/cdf=Franco congol\u00eas -CurrencyNames/pt/chf=Franco su\u00ed\u00e7o +CurrencyNames/pt/byb=Rublo novo bielo-russo (1994–1999) +CurrencyNames/pt/byr=Rublo bielorrusso (2000–2016) +CurrencyNames/pt/bzd=Dólar belizenho +CurrencyNames/pt/cad=Dólar canadense +CurrencyNames/pt/cdf=Franco congolês +CurrencyNames/pt/chf=Franco suíço CurrencyNames/pt/clf=Unidades de Fomento chilenas CurrencyNames/pt/clp=Peso chileno -CurrencyNames/pt/cny=Yuan chin\u00eas +CurrencyNames/pt/cny=Yuan chinês CurrencyNames/pt/cop=Peso colombiano -CurrencyNames/pt/crc=Col\u00f3n costarriquenho -CurrencyNames/pt/csd=Dinar s\u00e9rvio (2002\u20132006) +CurrencyNames/pt/crc=Colón costarriquenho +CurrencyNames/pt/csd=Dinar sérvio (2002–2006) CurrencyNames/pt/cup=Peso cubano CurrencyNames/pt/cve=Escudo cabo-verdiano CurrencyNames/pt/cyp=Libra cipriota CurrencyNames/pt/czk=Coroa tcheca -CurrencyNames/pt/dem=Marco alem\u00e3o +CurrencyNames/pt/dem=Marco alemão CurrencyNames/pt/djf=Franco djiboutiano CurrencyNames/pt/dkk=Coroa dinamarquesa CurrencyNames/pt/dop=Peso dominicano CurrencyNames/pt/dzd=Dinar argelino CurrencyNames/pt/eek=Coroa estoniana -CurrencyNames/pt/egp=Libra eg\u00edpcia +CurrencyNames/pt/egp=Libra egípcia CurrencyNames/pt/ern=Nakfa da Eritreia CurrencyNames/pt/esp=Peseta espanhola -CurrencyNames/pt/etb=Birr et\u00edope +CurrencyNames/pt/etb=Birr etíope CurrencyNames/pt/fim=Marca finlandesa -CurrencyNames/pt/fjd=D\u00f3lar fijiano +CurrencyNames/pt/fjd=Dólar fijiano CurrencyNames/pt/fkp=Libra malvinense -CurrencyNames/pt/frf=Franco franc\u00eas +CurrencyNames/pt/frf=Franco francês CurrencyNames/pt/gbp=Libra esterlina CurrencyNames/pt/gel=Lari georgiano -CurrencyNames/pt/ghc=Cedi de Gana (1979\u20132007) -CurrencyNames/pt/ghs=Cedi gan\u00eas +CurrencyNames/pt/ghc=Cedi de Gana (1979–2007) +CurrencyNames/pt/ghs=Cedi ganês CurrencyNames/pt/gip=Libra de Gibraltar CurrencyNames/pt/gmd=Dalasi gambiano CurrencyNames/pt/gnf=Franco guineano CurrencyNames/pt/grd=Dracma grego CurrencyNames/pt/gtq=Quetzal guatemalteco -CurrencyNames/pt/gwp=Peso da Guin\u00e9-Bissau -CurrencyNames/pt/gyd=D\u00f3lar guianense -CurrencyNames/pt/hkd=D\u00f3lar de Hong Kong +CurrencyNames/pt/gwp=Peso da Guiné-Bissau +CurrencyNames/pt/gyd=Dólar guianense +CurrencyNames/pt/hkd=Dólar de Hong Kong CurrencyNames/pt/hnl=Lempira hondurenha CurrencyNames/pt/hrk=Kuna croata CurrencyNames/pt/htg=Gourde haitiano -CurrencyNames/pt/huf=Florim h\u00fangaro -CurrencyNames/pt/idr=Rupia indon\u00e9sia +CurrencyNames/pt/huf=Florim húngaro +CurrencyNames/pt/idr=Rupia indonésia CurrencyNames/pt/iep=Libra irlandesa CurrencyNames/pt/ils=Novo shekel israelense CurrencyNames/pt/inr=Rupia indiana @@ -5903,9 +5903,9 @@ CurrencyNames/pt/irr=Rial iraniano CurrencyNames/pt/isk=Coroa islandesa CurrencyNames/pt/itl=Lira italiana -CurrencyNames/pt/jmd=D\u00f3lar jamaicano +CurrencyNames/pt/jmd=Dólar jamaicano CurrencyNames/pt/jod=Dinar jordaniano -CurrencyNames/pt/jpy=Iene japon\u00eas +CurrencyNames/pt/jpy=Iene japonês CurrencyNames/pt/kes=Xelim queniano CurrencyNames/pt/kgs=Som quirguiz CurrencyNames/pt/khr=Riel cambojano @@ -5913,26 +5913,26 @@ CurrencyNames/pt/kpw=Won norte-coreano CurrencyNames/pt/krw=Won sul-coreano CurrencyNames/pt/kwd=Dinar kuwaitiano -CurrencyNames/pt/kyd=D\u00f3lar das Ilhas Cayman +CurrencyNames/pt/kyd=Dólar das Ilhas Cayman CurrencyNames/pt/kzt=Tenge cazaque CurrencyNames/pt/lak=Kip laosiano CurrencyNames/pt/lbp=Libra libanesa CurrencyNames/pt/lkr=Rupia cingalesa -CurrencyNames/pt/lrd=D\u00f3lar liberiano +CurrencyNames/pt/lrd=Dólar liberiano CurrencyNames/pt/lsl=Loti lesotiano CurrencyNames/pt/ltl=Litas lituano -CurrencyNames/pt/luf=Franco luxemburgu\u00eas -CurrencyNames/pt/lvl=Lats let\u00e3o -CurrencyNames/pt/lyd=Dinar l\u00edbio +CurrencyNames/pt/luf=Franco luxemburguês +CurrencyNames/pt/lvl=Lats letão +CurrencyNames/pt/lyd=Dinar líbio CurrencyNames/pt/mad=Dirham marroquino -CurrencyNames/pt/mdl=Leu mold\u00e1vio +CurrencyNames/pt/mdl=Leu moldávio CurrencyNames/pt/mga=Ariary malgaxe CurrencyNames/pt/mgf=Franco de Madagascar -CurrencyNames/pt/mkd=Dinar maced\u00f4nio +CurrencyNames/pt/mkd=Dinar macedônio CurrencyNames/pt/mmk=Quiate mianmarense CurrencyNames/pt/mnt=Tugrik mongol CurrencyNames/pt/mop=Pataca macaense -CurrencyNames/pt/mro=Ouguiya mauritana (1973\u20132017) +CurrencyNames/pt/mro=Ouguiya mauritana (1973–2017) CurrencyNames/pt/mtl=Lira maltesa CurrencyNames/pt/mur=Rupia mauriciana CurrencyNames/pt/mvr=Rupia maldivana @@ -5940,69 +5940,69 @@ CurrencyNames/pt/mxn=Peso mexicano CurrencyNames/pt/mxv=Unidade Mexicana de Investimento (UDI) CurrencyNames/pt/myr=Ringgit malaio -CurrencyNames/pt/mzm=Metical de Mo\u00e7ambique (1980\u20132006) -CurrencyNames/pt/mzn=Metical mo\u00e7ambicano -CurrencyNames/pt/nad=D\u00f3lar namibiano +CurrencyNames/pt/mzm=Metical de Moçambique (1980–2006) +CurrencyNames/pt/mzn=Metical moçambicano +CurrencyNames/pt/nad=Dólar namibiano CurrencyNames/pt/ngn=Naira nigeriana -CurrencyNames/pt/nio=C\u00f3rdoba nicaraguense -CurrencyNames/pt/nlg=Florim holand\u00eas +CurrencyNames/pt/nio=Córdoba nicaraguense +CurrencyNames/pt/nlg=Florim holandês CurrencyNames/pt/nok=Coroa norueguesa CurrencyNames/pt/npr=Rupia nepalesa -CurrencyNames/pt/nzd=D\u00f3lar neozeland\u00eas +CurrencyNames/pt/nzd=Dólar neozelandês CurrencyNames/pt/omr=Rial omanense CurrencyNames/pt/pab=Balboa panamenho CurrencyNames/pt/pen=Novo sol peruano -CurrencyNames/pt/pgk=Kina papu\u00e1sia +CurrencyNames/pt/pgk=Kina papuásia CurrencyNames/pt/php=Peso filipino CurrencyNames/pt/pkr=Rupia paquistanesa -CurrencyNames/pt/pln=Zloty polon\u00eas -CurrencyNames/pt/pte=Escudo portugu\u00eas +CurrencyNames/pt/pln=Zloty polonês +CurrencyNames/pt/pte=Escudo português CurrencyNames/pt/pyg=Guarani paraguaio CurrencyNames/pt/qar=Rial catariano -CurrencyNames/pt/rol=Leu romeno (1952\u20132006) +CurrencyNames/pt/rol=Leu romeno (1952–2006) CurrencyNames/pt/ron=Leu romeno -CurrencyNames/pt/rsd=Dinar s\u00e9rvio +CurrencyNames/pt/rsd=Dinar sérvio CurrencyNames/pt/rub=Rublo russo -CurrencyNames/pt/rur=Rublo russo (1991\u20131998) -CurrencyNames/pt/rwf=Franco ruand\u00eas +CurrencyNames/pt/rur=Rublo russo (1991–1998) +CurrencyNames/pt/rwf=Franco ruandês CurrencyNames/pt/sar=Riyal saudita -CurrencyNames/pt/sbd=D\u00f3lar das Ilhas Salom\u00e3o +CurrencyNames/pt/sbd=Dólar das Ilhas Salomão CurrencyNames/pt/scr=Rupia seichelense -CurrencyNames/pt/sdd=Dinar sudan\u00eas (1992\u20132007) +CurrencyNames/pt/sdd=Dinar sudanês (1992–2007) CurrencyNames/pt/sdg=Libra sudanesa CurrencyNames/pt/sek=Coroa sueca -CurrencyNames/pt/sgd=D\u00f3lar singapuriano +CurrencyNames/pt/sgd=Dólar singapuriano CurrencyNames/pt/shp=Libra de Santa Helena CurrencyNames/pt/sit=Tolar Bons esloveno CurrencyNames/pt/skk=Coroa eslovaca CurrencyNames/pt/sll=Leone de Serra Leoa CurrencyNames/pt/sos=Xelim somali -CurrencyNames/pt/srd=D\u00f3lar surinam\u00eas +CurrencyNames/pt/srd=Dólar surinamês CurrencyNames/pt/srg=Florim do Suriname -CurrencyNames/pt/std=Dobra de S\u00e3o Tom\u00e9 e Pr\u00edncipe (1977\u20132017) +CurrencyNames/pt/std=Dobra de São Tomé e Príncipe (1977–2017) CurrencyNames/pt/svc=Colom salvadorenho -CurrencyNames/pt/syp=Libra s\u00edria +CurrencyNames/pt/syp=Libra síria CurrencyNames/pt/szl=Lilangeni suazi -CurrencyNames/pt/thb=Baht tailand\u00eas +CurrencyNames/pt/thb=Baht tailandês CurrencyNames/pt/tjs=Somoni tadjique -CurrencyNames/pt/tmm=Manat do Turcomenist\u00e3o (1993\u20132009) +CurrencyNames/pt/tmm=Manat do Turcomenistão (1993–2009) CurrencyNames/pt/tnd=Dinar tunisiano -CurrencyNames/pt/top=Pa\u02bbanga tonganesa +CurrencyNames/pt/top=Paʻanga tonganesa CurrencyNames/pt/tpe=Escudo timorense -CurrencyNames/pt/trl=Lira turca (1922\u20132005) +CurrencyNames/pt/trl=Lira turca (1922–2005) CurrencyNames/pt/try=Lira turca -CurrencyNames/pt/ttd=D\u00f3lar de Trinidad e Tobago -CurrencyNames/pt/twd=Novo d\u00f3lar taiwan\u00eas +CurrencyNames/pt/ttd=Dólar de Trinidad e Tobago +CurrencyNames/pt/twd=Novo dólar taiwanês CurrencyNames/pt/tzs=Xelim tanzaniano CurrencyNames/pt/uah=Hryvnia ucraniano CurrencyNames/pt/ugx=Xelim ugandense -CurrencyNames/pt/usd=D\u00f3lar americano -CurrencyNames/pt/usn=D\u00f3lar norte-americano (Dia seguinte) -CurrencyNames/pt/uss=D\u00f3lar norte-americano (Mesmo dia) +CurrencyNames/pt/usd=Dólar americano +CurrencyNames/pt/usn=Dólar norte-americano (Dia seguinte) +CurrencyNames/pt/uss=Dólar norte-americano (Mesmo dia) CurrencyNames/pt/uyu=Peso uruguaio CurrencyNames/pt/uzs=Som uzbeque -CurrencyNames/pt/veb=Bol\u00edvar venezuelano (1871\u20132008) -CurrencyNames/pt/vef=Bol\u00edvar venezuelano (2008\u20132018) +CurrencyNames/pt/veb=Bolívar venezuelano (1871–2008) +CurrencyNames/pt/vef=Bolívar venezuelano (2008–2018) CurrencyNames/pt/vnd=Dong vietnamita CurrencyNames/pt/vuv=Vatu de Vanuatu CurrencyNames/pt/wst=Tala samoano @@ -6010,35 +6010,35 @@ CurrencyNames/pt/xag=Prata CurrencyNames/pt/xau=Ouro CurrencyNames/pt/xba=Unidade Composta Europeia -CurrencyNames/pt/xbb=Unidade Monet\u00e1ria Europeia +CurrencyNames/pt/xbb=Unidade Monetária Europeia CurrencyNames/pt/xbc=Unidade de Conta Europeia (XBC) CurrencyNames/pt/xbd=Unidade de Conta Europeia (XBD) -CurrencyNames/pt/xcd=D\u00f3lar do Caribe Oriental +CurrencyNames/pt/xcd=Dólar do Caribe Oriental CurrencyNames/pt/xdr=Direitos Especiais de Giro -CurrencyNames/pt/xfo=Franco-ouro franc\u00eas -CurrencyNames/pt/xfu=Franco UIC franc\u00eas +CurrencyNames/pt/xfo=Franco-ouro francês +CurrencyNames/pt/xfu=Franco UIC francês CurrencyNames/pt/xof=Franco CFA de BCEAO -CurrencyNames/pt/xpd=Pal\u00e1dio +CurrencyNames/pt/xpd=Paládio CurrencyNames/pt/xpf=Franco CFP CurrencyNames/pt/xpt=Platina -CurrencyNames/pt/xts=C\u00f3digo de Moeda de Teste +CurrencyNames/pt/xts=Código de Moeda de Teste CurrencyNames/pt/xxx=Moeda desconhecida CurrencyNames/pt/yer=Rial iemenita -CurrencyNames/pt/yum=Dinar noviy iugoslavo (1994\u20132002) +CurrencyNames/pt/yum=Dinar noviy iugoslavo (1994–2002) CurrencyNames/pt/zar=Rand sul-africano -CurrencyNames/pt/zmk=Cuacha zambiano (1968\u20132012) -CurrencyNames/pt/zwd=D\u00f3lar do Zimb\u00e1bue (1980\u20132008) +CurrencyNames/pt/zmk=Cuacha zambiano (1968–2012) +CurrencyNames/pt/zwd=Dólar do Zimbábue (1980–2008) # bug 7025837 -CurrencyNames/sr-Latn-BA/bam=Bosanskohercegova\u010dka konvertibilna marka +CurrencyNames/sr-Latn-BA/bam=Bosanskohercegovačka konvertibilna marka CurrencyNames/sr-Latn-BA/eur=Evro CurrencyNames/sr-Latn-ME/eur=Evro CurrencyNames/sr-Latn-RS/rsd=srpski dinar # bug 7020583 -CurrencyNames/de/azm=Aserbaidschan-Manat (1993\u20132006) +CurrencyNames/de/azm=Aserbaidschan-Manat (1993–2006) CurrencyNames/de/azn=Aserbaidschan-Manat -CurrencyNames/de/csd=Serbischer Dinar (2002\u20132006) +CurrencyNames/de/csd=Serbischer Dinar (2002–2006) CurrencyNames/de/cyp=Zypern-Pfund CurrencyNames/de/esp=Spanische Peseta CurrencyNames/de/fjd=Fidschi-Dollar @@ -6053,11 +6053,11 @@ CurrencyNames/de/kes=Kenia-Schilling CurrencyNames/de/mgf=Madagaskar-Franc CurrencyNames/de/mur=Mauritius-Rupie -CurrencyNames/de/mzm=Mosambikanischer Metical (1980\u20132006) +CurrencyNames/de/mzm=Mosambikanischer Metical (1980–2006) CurrencyNames/de/mzn=Mosambikanischer Metical CurrencyNames/de/nad=Namibia-Dollar CurrencyNames/de/nzd=Neuseeland-Dollar -CurrencyNames/de/ron=Rum\u00e4nischer Leu +CurrencyNames/de/ron=Rumänischer Leu CurrencyNames/de/rsd=Serbischer Dinar CurrencyNames/de/rwf=Ruanda-Franc CurrencyNames/de/sbd=Salomonen-Dollar @@ -6067,226 +6067,226 @@ CurrencyNames/de/sos=Somalia-Schilling CurrencyNames/de/srd=Suriname-Dollar CurrencyNames/de/tpe=Timor-Escudo -CurrencyNames/de/trl=T\u00fcrkische Lira (1922\u20132005) -CurrencyNames/de/try=T\u00fcrkische Lira +CurrencyNames/de/trl=Türkische Lira (1922–2005) +CurrencyNames/de/try=Türkische Lira CurrencyNames/de/ttd=Trinidad-und-Tobago-Dollar CurrencyNames/de/twd=Neuer Taiwan-Dollar CurrencyNames/de/tzs=Tansania-Schilling CurrencyNames/de/ugx=Uganda-Schilling CurrencyNames/de/usd=US-Dollar -CurrencyNames/de/vef=Venezolanischer Bol\u00edvar (2008\u20132018) +CurrencyNames/de/vef=Venezolanischer Bolívar (2008–2018) CurrencyNames/de/xag=Unze Silber CurrencyNames/de/xau=Unze Gold -CurrencyNames/de/xbb=Europ\u00e4ische W\u00e4hrungseinheit (XBB) +CurrencyNames/de/xbb=Europäische Währungseinheit (XBB) CurrencyNames/de/xpd=Unze Palladium CurrencyNames/de/xpt=Unze Platin -CurrencyNames/de/xts=Testw\u00e4hrung -CurrencyNames/de/xxx=Unbekannte W\u00e4hrung +CurrencyNames/de/xts=Testwährung +CurrencyNames/de/xxx=Unbekannte Währung CurrencyNames/de/yer=Jemen-Rial -CurrencyNames/de/zar=S\u00fcdafrikanischer Rand -CurrencyNames/de/zwd=Simbabwe-Dollar (1980\u20132008) +CurrencyNames/de/zar=Südafrikanischer Rand +CurrencyNames/de/zwd=Simbabwe-Dollar (1980–2008) -CurrencyNames/es/aed=d\u00edrham de los Emiratos \u00c1rabes Unidos -CurrencyNames/es/azm=manat azer\u00ed (1993\u20132006) +CurrencyNames/es/aed=dírham de los Emiratos Árabes Unidos +CurrencyNames/es/azm=manat azerí (1993–2006) CurrencyNames/es/azn=manat azerbaiyano CurrencyNames/es/csd=antiguo dinar serbio -CurrencyNames/es/ghc=cedi ghan\u00e9s (1979\u20132007) +CurrencyNames/es/ghc=cedi ghanés (1979–2007) CurrencyNames/es/ghs=cedi -CurrencyNames/es/mzm=antiguo metical mozambique\u00f1o +CurrencyNames/es/mzm=antiguo metical mozambiqueño CurrencyNames/es/mzn=metical CurrencyNames/es/rsd=dinar serbio CurrencyNames/es/sdg=libra sudanesa -CurrencyNames/es/trl=lira turca (1922\u20132005) -CurrencyNames/es/vef=bol\u00edvar venezolano (2008\u20132018) +CurrencyNames/es/trl=lira turca (1922–2005) +CurrencyNames/es/vef=bolívar venezolano (2008–2018) -CurrencyNames/fr/afa=afghani (1927\u20132002) +CurrencyNames/fr/afa=afghani (1927–2002) CurrencyNames/fr/all=lek albanais CurrencyNames/fr/ang=florin antillais CurrencyNames/fr/awg=florin arubais -CurrencyNames/fr/azm=manat az\u00e9ri (1993\u20132006) -CurrencyNames/fr/azn=manat az\u00e9ri +CurrencyNames/fr/azm=manat azéri (1993–2006) +CurrencyNames/fr/azn=manat azéri CurrencyNames/fr/bam=mark convertible bosniaque CurrencyNames/fr/bbd=dollar barbadien CurrencyNames/fr/bdt=taka bangladeshi -CurrencyNames/fr/bgl=lev bulgare (1962\u20131999) +CurrencyNames/fr/bgl=lev bulgare (1962–1999) CurrencyNames/fr/bgn=lev bulgare -CurrencyNames/fr/bhd=dinar bahre\u00efni +CurrencyNames/fr/bhd=dinar bahreïni CurrencyNames/fr/bif=franc burundais CurrencyNames/fr/bmd=dollar bermudien -CurrencyNames/fr/bnd=dollar brun\u00e9ien +CurrencyNames/fr/bnd=dollar brunéien CurrencyNames/fr/bov=mvdol bolivien -CurrencyNames/fr/brl=r\u00e9al br\u00e9silien -CurrencyNames/fr/bsd=dollar baham\u00e9en +CurrencyNames/fr/brl=réal brésilien +CurrencyNames/fr/bsd=dollar bahaméen CurrencyNames/fr/btn=ngultrum bouthanais CurrencyNames/fr/bwp=pula botswanais -CurrencyNames/fr/bzd=dollar b\u00e9liz\u00e9en +CurrencyNames/fr/bzd=dollar bélizéen CurrencyNames/fr/cny=yuan renminbi chinois -CurrencyNames/fr/crc=col\u00f3n costaricain -CurrencyNames/fr/csd=dinar serbo-mont\u00e9n\u00e9grin +CurrencyNames/fr/crc=colón costaricain +CurrencyNames/fr/csd=dinar serbo-monténégrin CurrencyNames/fr/cve=escudo capverdien CurrencyNames/fr/cyp=livre chypriote CurrencyNames/fr/dem=mark allemand CurrencyNames/fr/djf=franc djiboutien -CurrencyNames/fr/ern=nafka \u00e9rythr\u00e9en -CurrencyNames/fr/etb=birr \u00e9thiopien +CurrencyNames/fr/ern=nafka érythréen +CurrencyNames/fr/etb=birr éthiopien CurrencyNames/fr/fjd=dollar fidjien -CurrencyNames/fr/fkp=livre des \u00eeles Malouines -CurrencyNames/fr/gel=lari g\u00e9orgien -CurrencyNames/fr/ghs=c\u00e9di ghan\u00e9en +CurrencyNames/fr/fkp=livre des îles Malouines +CurrencyNames/fr/gel=lari géorgien +CurrencyNames/fr/ghs=cédi ghanéen CurrencyNames/fr/gmd=dalasi gambien CurrencyNames/fr/grd=drachme grecque -CurrencyNames/fr/gtq=quetzal guat\u00e9malt\u00e8que -CurrencyNames/fr/gwp=peso bissau-guin\u00e9en +CurrencyNames/fr/gtq=quetzal guatémaltèque +CurrencyNames/fr/gwp=peso bissau-guinéen CurrencyNames/fr/hnl=lempira hondurien CurrencyNames/fr/hrk=kuna croate -CurrencyNames/fr/htg=gourde ha\u00eftienne +CurrencyNames/fr/htg=gourde haïtienne CurrencyNames/fr/huf=forint hongrois -CurrencyNames/fr/idr=roupie indon\u00e9sienne -CurrencyNames/fr/ils=nouveau shekel isra\u00e9lien +CurrencyNames/fr/idr=roupie indonésienne +CurrencyNames/fr/ils=nouveau shekel israélien CurrencyNames/fr/iqd=dinar irakien CurrencyNames/fr/jpy=yen japonais -CurrencyNames/fr/kes=shilling k\u00e9nyan +CurrencyNames/fr/kes=shilling kényan CurrencyNames/fr/kgs=som kirghize CurrencyNames/fr/khr=riel cambodgien CurrencyNames/fr/kmf=franc comorien -CurrencyNames/fr/kwd=dinar kowe\u00eftien +CurrencyNames/fr/kwd=dinar koweïtien CurrencyNames/fr/kzt=tenge kazakh CurrencyNames/fr/lak=kip laotien CurrencyNames/fr/lkr=roupie srilankaise CurrencyNames/fr/lsl=loti lesothan CurrencyNames/fr/mga=ariary malgache -CurrencyNames/fr/mkd=denar mac\u00e9donien +CurrencyNames/fr/mkd=denar macédonien CurrencyNames/fr/mmk=kyat myanmarais CurrencyNames/fr/mnt=tugrik mongol CurrencyNames/fr/mop=pataca macanaise -CurrencyNames/fr/mro=ouguiya mauritanien (1973\u20132017) +CurrencyNames/fr/mro=ouguiya mauritanien (1973–2017) CurrencyNames/fr/mvr=rufiyaa maldivien CurrencyNames/fr/mwk=kwacha malawite CurrencyNames/fr/myr=ringgit malais CurrencyNames/fr/mzn=metical mozambicain -CurrencyNames/fr/ngn=naira nig\u00e9rian -CurrencyNames/fr/nio=c\u00f3rdoba oro nicaraguayen -CurrencyNames/fr/npr=roupie n\u00e9palaise -CurrencyNames/fr/pab=balboa panam\u00e9en -CurrencyNames/fr/pgk=kina papouan-n\u00e9o-guin\u00e9en +CurrencyNames/fr/ngn=naira nigérian +CurrencyNames/fr/nio=córdoba oro nicaraguayen +CurrencyNames/fr/npr=roupie népalaise +CurrencyNames/fr/pab=balboa panaméen +CurrencyNames/fr/pgk=kina papouan-néo-guinéen CurrencyNames/fr/pkr=roupie pakistanaise CurrencyNames/fr/pln=zloty polonais -CurrencyNames/fr/pyg=guaran\u00ed paraguayen +CurrencyNames/fr/pyg=guaraní paraguayen CurrencyNames/fr/qar=riyal qatari CurrencyNames/fr/ron=leu roumain CurrencyNames/fr/rsd=dinar serbe CurrencyNames/fr/rub=rouble russe -CurrencyNames/fr/rur=rouble russe (1991\u20131998) -CurrencyNames/fr/sbd=dollar des \u00eeles Salomon +CurrencyNames/fr/rur=rouble russe (1991–1998) +CurrencyNames/fr/sbd=dollar des îles Salomon CurrencyNames/fr/sdg=livre soudanaise -CurrencyNames/fr/sit=tolar slov\u00e8ne -CurrencyNames/fr/sll=leone sierra-l\u00e9onais +CurrencyNames/fr/sit=tolar slovène +CurrencyNames/fr/sll=leone sierra-léonais CurrencyNames/fr/sos=shilling somalien CurrencyNames/fr/srg=florin surinamais -CurrencyNames/fr/std=dobra santom\u00e9en (1977\u20132017) -CurrencyNames/fr/svc=col\u00f3n salvadorien +CurrencyNames/fr/std=dobra santoméen (1977–2017) +CurrencyNames/fr/svc=colón salvadorien CurrencyNames/fr/szl=lilangeni swazi -CurrencyNames/fr/thb=baht tha\u00eflandais +CurrencyNames/fr/thb=baht thaïlandais CurrencyNames/fr/tjs=somoni tadjik -CurrencyNames/fr/tmm=manat turkm\u00e8ne -CurrencyNames/fr/top=pa\u2019anga tongan +CurrencyNames/fr/tmm=manat turkmène +CurrencyNames/fr/top=pa’anga tongan CurrencyNames/fr/tpe=escudo timorais -CurrencyNames/fr/ttd=dollar de Trinit\u00e9-et-Tobago -CurrencyNames/fr/twd=nouveau dollar ta\u00efwanais +CurrencyNames/fr/ttd=dollar de Trinité-et-Tobago +CurrencyNames/fr/twd=nouveau dollar taïwanais CurrencyNames/fr/tzs=shilling tanzanien CurrencyNames/fr/uah=hryvnia ukrainienne CurrencyNames/fr/uzs=sum ouzbek -CurrencyNames/fr/vef=bolivar v\u00e9n\u00e9zu\u00e9lien (2008\u20132018) -CurrencyNames/fr/vnd=d\u00f4ng vietnamien +CurrencyNames/fr/vef=bolivar vénézuélien (2008–2018) +CurrencyNames/fr/vnd=dông vietnamien CurrencyNames/fr/vuv=vatu vanuatuan CurrencyNames/fr/wst=tala samoan CurrencyNames/fr/xts=(devise de test) CurrencyNames/fr/xxx=devise inconnue ou non valide -CurrencyNames/fr/yer=riyal y\u00e9m\u00e9nite +CurrencyNames/fr/yer=riyal yéménite CurrencyNames/fr/zar=rand sud-africain -CurrencyNames/fr/zmk=kwacha zambien (1968\u20132012) -CurrencyNames/fr/zwd=dollar zimbabw\u00e9en +CurrencyNames/fr/zmk=kwacha zambien (1968–2012) +CurrencyNames/fr/zwd=dollar zimbabwéen -CurrencyNames/it/azm=manat azero (1993\u20132006) +CurrencyNames/it/azm=manat azero (1993–2006) CurrencyNames/it/ghs=cedi ghanese CurrencyNames/it/iep=sterlina irlandese CurrencyNames/it/mzn=metical mozambicano CurrencyNames/it/rsd=dinaro serbo CurrencyNames/it/sdg=sterlina sudanese CurrencyNames/it/srd=dollaro del Suriname -CurrencyNames/it/vef=bol\u00edvar venezuelano (2008\u20132018) +CurrencyNames/it/vef=bolívar venezuelano (2008–2018) CurrencyNames/it/xag=argento CurrencyNames/it/xpd=palladio -CurrencyNames/ja/azm=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3 \u30de\u30ca\u30c8 (1993\u20132006) -CurrencyNames/ja/azn=\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3 \u30de\u30ca\u30c8 -CurrencyNames/ja/ghc=\u30ac\u30fc\u30ca \u30bb\u30c7\u30a3 (1979\u20132007) -CurrencyNames/ja/ghs=\u30ac\u30fc\u30ca \u30bb\u30c7\u30a3 -CurrencyNames/ja/mzn=\u30e2\u30b6\u30f3\u30d3\u30fc\u30af \u30e1\u30c6\u30a3\u30ab\u30eb -CurrencyNames/ja/rol=\u30eb\u30fc\u30de\u30cb\u30a2 \u30ec\u30a4 (1952\u20132006) -CurrencyNames/ja/ron=\u30eb\u30fc\u30de\u30cb\u30a2 \u30ec\u30a4 -CurrencyNames/ja/rsd=\u30c7\u30a3\u30ca\u30fc\u30eb (\u30bb\u30eb\u30d3\u30a2) -CurrencyNames/ja/sdg=\u30b9\u30fc\u30c0\u30f3 \u30dd\u30f3\u30c9 -CurrencyNames/ja/srd=\u30b9\u30ea\u30ca\u30e0 \u30c9\u30eb -CurrencyNames/ja/vef=\u30d9\u30cd\u30ba\u30a8\u30e9 \u30dc\u30ea\u30d0\u30eb (2008\u20132018) -CurrencyNames/ja/xag=\u9280 -CurrencyNames/ja/xpd=\u30d1\u30e9\u30b8\u30a6\u30e0 -CurrencyNames/ja/xpt=\u30d7\u30e9\u30c1\u30ca -CurrencyNames/ja/xts=\u30c6\u30b9\u30c8\u7528\u901a\u8ca8\u30b3\u30fc\u30c9 -CurrencyNames/ja/xxx=\u4e0d\u660e\u307e\u305f\u306f\u7121\u52b9\u306a\u901a\u8ca8 -CurrencyNames/ja/zmk=\u30b6\u30f3\u30d3\u30a2 \u30af\u30ef\u30c1\u30e3 (1968\u20132012) - -CurrencyNames/ko/aed=\uc544\ub78d\uc5d0\ubbf8\ub9ac\ud2b8 \ub514\ub974\ud568 -CurrencyNames/ko/ang=\ub124\ub35c\ub780\ub4dc\ub839 \uc548\ud2f8\ub808\uc2a4 \uae38\ub354 -CurrencyNames/ko/azm=\uc544\uc81c\ub974\ubc14\uc774\uc820 \ub9c8\ub098\ud2b8(1993\u20132006) -CurrencyNames/ko/azn=\uc544\uc81c\ub974\ubc14\uc774\uc794 \ub9c8\ub098\ud2b8 -CurrencyNames/ko/bov=\ubcfc\ub9ac\ube44\uc544\ub178 Mvdol(\uae30\uae08) -CurrencyNames/ko/chf=\uc2a4\uc704\uc2a4 \ud504\ub791 -CurrencyNames/ko/clf=\uce60\ub808 (UF) -CurrencyNames/ko/csd=\uace0 \uc138\ub974\ube44\uc544 \ub514\ub098\ub974 -CurrencyNames/ko/ghc=\uac00\ub098 \uc2dc\ub514 (1979\u20132007) -CurrencyNames/ko/ghs=\uac00\ub098 \uc138\ub514 -CurrencyNames/ko/mxv=\uba55\uc2dc\ucf54 (UDI) -CurrencyNames/ko/myr=\ub9d0\ub808\uc774\uc2dc\uc544 \ub9c1\uae43 -CurrencyNames/ko/mzm=\uace0 \ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c -CurrencyNames/ko/mzn=\ubaa8\uc7a0\ube44\ud06c \uba54\ud2f0\uce7c -CurrencyNames/ko/ron=\ub8e8\ub9c8\ub2c8\uc544 \ub808\uc6b0 -CurrencyNames/ko/rsd=\uc138\ub974\ube44\uc544 \ub514\ub098\ub974 -CurrencyNames/ko/sdg=\uc218\ub2e8 \ud30c\uc6b4\ub4dc -CurrencyNames/ko/srd=\uc218\ub9ac\ub0a8 \ub2ec\ub7ec -CurrencyNames/ko/top=\ud1b5\uac00 \ud30c\uc559\uac00 -CurrencyNames/ko/trl=\ud130\ud0a4 \ub9ac\ub77c(1922~2005) -CurrencyNames/ko/try=\ud130\ud0a4 \ub9ac\ub77c -CurrencyNames/ko/usn=\ubbf8\uad6d \ub2ec\ub7ec(\ub2e4\uc74c\ub0a0) -CurrencyNames/ko/uss=\ubbf8\uad6d \ub2ec\ub7ec(\ub2f9\uc77c) -CurrencyNames/ko/vef=\ubca0\ub124\uc218\uc5d8\ub77c \ubcfc\ub9ac\ubc14\ub974 (2008\u20132018) -CurrencyNames/ko/xaf=\uc911\uc559\uc544\ud504\ub9ac\uce74 CFA \ud504\ub791 -CurrencyNames/ko/xag=\uc740\ud654 -CurrencyNames/ko/xba=\uc720\ub974\ucf54 (\uc720\ub7fd \ud68c\uacc4 \ub2e8\uc704) -CurrencyNames/ko/xbb=\uc720\ub7fd \ud1b5\ud654 \ub3d9\ub9f9 -CurrencyNames/ko/xbc=\uc720\ub7fd \uacc4\uc0b0 \ub2e8\uc704 (XBC) -CurrencyNames/ko/xbd=\uc720\ub7fd \uacc4\uc0b0 \ub2e8\uc704 (XBD) -CurrencyNames/ko/xof=\uc11c\uc544\ud504\ub9ac\uce74 CFA \ud504\ub791 -CurrencyNames/ko/xpd=\ud314\ub77c\ub4d0 -CurrencyNames/ko/xpf=CFP \ud504\ub791 -CurrencyNames/ko/xpt=\ubc31\uae08 -CurrencyNames/ko/xts=\ud14c\uc2a4\ud2b8 \ud1b5\ud654 \ucf54\ub4dc -CurrencyNames/ko/xxx=\uc54c \uc218 \uc5c6\ub294 \ud1b5\ud654 \ub2e8\uc704 -CurrencyNames/ko/zwd=\uc9d0\ubc14\ube0c\uc6e8 \ub2ec\ub7ec +CurrencyNames/ja/azm=アゼルバイジャン マナト (1993–2006) +CurrencyNames/ja/azn=アゼルバイジャン マナト +CurrencyNames/ja/ghc=ガーナ セディ (1979–2007) +CurrencyNames/ja/ghs=ガーナ セディ +CurrencyNames/ja/mzn=モザンビーク メティカル +CurrencyNames/ja/rol=ルーマニア レイ (1952–2006) +CurrencyNames/ja/ron=ルーマニア レイ +CurrencyNames/ja/rsd=ディナール (セルビア) +CurrencyNames/ja/sdg=スーダン ポンド +CurrencyNames/ja/srd=スリナム ドル +CurrencyNames/ja/vef=ベネズエラ ボリバル (2008–2018) +CurrencyNames/ja/xag=銀 +CurrencyNames/ja/xpd=パラジウム +CurrencyNames/ja/xpt=プラチナ +CurrencyNames/ja/xts=テスト用通貨コード +CurrencyNames/ja/xxx=不明または無効な通貨 +CurrencyNames/ja/zmk=ザンビア クワチャ (1968–2012) + +CurrencyNames/ko/aed=아랍에미리트 디르함 +CurrencyNames/ko/ang=네덜란드령 안틸레스 길더 +CurrencyNames/ko/azm=아제르바이젠 마나트(1993–2006) +CurrencyNames/ko/azn=아제르바이잔 마나트 +CurrencyNames/ko/bov=볼리비아노 Mvdol(기금) +CurrencyNames/ko/chf=스위스 프랑 +CurrencyNames/ko/clf=칠레 (UF) +CurrencyNames/ko/csd=고 세르비아 디나르 +CurrencyNames/ko/ghc=가나 시디 (1979–2007) +CurrencyNames/ko/ghs=가나 세디 +CurrencyNames/ko/mxv=멕시코 (UDI) +CurrencyNames/ko/myr=말레이시아 링깃 +CurrencyNames/ko/mzm=고 모잠비크 메티칼 +CurrencyNames/ko/mzn=모잠비크 메티칼 +CurrencyNames/ko/ron=루마니아 레우 +CurrencyNames/ko/rsd=세르비아 디나르 +CurrencyNames/ko/sdg=수단 파운드 +CurrencyNames/ko/srd=수리남 달러 +CurrencyNames/ko/top=통가 파앙가 +CurrencyNames/ko/trl=터키 리라(1922~2005) +CurrencyNames/ko/try=터키 리라 +CurrencyNames/ko/usn=미국 달러(다음날) +CurrencyNames/ko/uss=미국 달러(당일) +CurrencyNames/ko/vef=베네수엘라 볼리바르 (2008–2018) +CurrencyNames/ko/xaf=중앙아프리카 CFA 프랑 +CurrencyNames/ko/xag=은화 +CurrencyNames/ko/xba=유르코 (유럽 회계 단위) +CurrencyNames/ko/xbb=유럽 통화 동맹 +CurrencyNames/ko/xbc=유럽 계산 단위 (XBC) +CurrencyNames/ko/xbd=유럽 계산 단위 (XBD) +CurrencyNames/ko/xof=서아프리카 CFA 프랑 +CurrencyNames/ko/xpd=팔라듐 +CurrencyNames/ko/xpf=CFP 프랑 +CurrencyNames/ko/xpt=백금 +CurrencyNames/ko/xts=테스트 통화 코드 +CurrencyNames/ko/xxx=알 수 없는 통화 단위 +CurrencyNames/ko/zwd=짐바브웨 달러 CurrencyNames/sv/adp=andorransk peseta CurrencyNames/sv/aed=emiratisk dirham -CurrencyNames/sv/afa=afghani (1927\u20132002) +CurrencyNames/sv/afa=afghani (1927–2002) CurrencyNames/sv/afn=afghansk afghani CurrencyNames/sv/all=albansk lek CurrencyNames/sv/amd=armenisk dram CurrencyNames/sv/ang=antillergulden CurrencyNames/sv/aoa=angolansk kwanza CurrencyNames/sv/ars=argentinsk peso -CurrencyNames/sv/ats=\u00f6sterrikisk schilling +CurrencyNames/sv/ats=österrikisk schilling CurrencyNames/sv/aud=australisk dollar CurrencyNames/sv/awg=arubansk florin -CurrencyNames/sv/azm=azerbajdzjansk manat (1993\u20132006) +CurrencyNames/sv/azm=azerbajdzjansk manat (1993–2006) CurrencyNames/sv/azn=azerbajdzjansk manat CurrencyNames/sv/bam=bosnisk-hercegovinsk mark (konvertibel) CurrencyNames/sv/bbd=barbadisk dollar @@ -6302,8 +6302,8 @@ CurrencyNames/sv/bsd=bahamansk dollar CurrencyNames/sv/btn=bhutanesisk ngultrum CurrencyNames/sv/bwp=botswansk pula -CurrencyNames/sv/byb=vitrysk ny rubel (1994\u20131999) -CurrencyNames/sv/byr=vitrysk rubel (2000\u20132016) +CurrencyNames/sv/byb=vitrysk ny rubel (1994–1999) +CurrencyNames/sv/byr=vitrysk rubel (2000–2016) CurrencyNames/sv/bzd=belizisk dollar CurrencyNames/sv/cad=kanadensisk dollar CurrencyNames/sv/cdf=kongolesisk franc @@ -6312,8 +6312,8 @@ CurrencyNames/sv/clp=chilensk peso CurrencyNames/sv/cny=kinesisk yuan CurrencyNames/sv/cop=colombiansk peso -CurrencyNames/sv/crc=costarikansk col\u00f3n -CurrencyNames/sv/csd=serbisk dinar (2002\u20132006) +CurrencyNames/sv/crc=costarikansk colón +CurrencyNames/sv/csd=serbisk dinar (2002–2006) CurrencyNames/sv/cup=kubansk peso CurrencyNames/sv/cve=kapverdisk escudo CurrencyNames/sv/cyp=cypriotiskt pund @@ -6334,7 +6334,7 @@ CurrencyNames/sv/frf=fransk franc CurrencyNames/sv/gbp=brittiskt pund CurrencyNames/sv/gel=georgisk lari -CurrencyNames/sv/ghc=ghanansk cedi (1979\u20132007) +CurrencyNames/sv/ghc=ghanansk cedi (1979–2007) CurrencyNames/sv/ghs=ghanansk cedi CurrencyNames/sv/gip=gibraltiskt pund CurrencyNames/sv/gmd=gambisk dalasi @@ -6347,12 +6347,12 @@ CurrencyNames/sv/htg=haitisk gourde CurrencyNames/sv/huf=ungersk forint CurrencyNames/sv/idr=indonesisk rupie -CurrencyNames/sv/iep=irl\u00e4ndskt pund +CurrencyNames/sv/iep=irländskt pund CurrencyNames/sv/ils=israelisk ny shekel CurrencyNames/sv/inr=indisk rupie CurrencyNames/sv/iqd=irakisk dinar CurrencyNames/sv/irr=iransk rial -CurrencyNames/sv/isk=isl\u00e4ndsk krona +CurrencyNames/sv/isk=isländsk krona CurrencyNames/sv/itl=italiensk lire CurrencyNames/sv/jmd=jamaicansk dollar CurrencyNames/sv/jod=jordansk dinar @@ -6380,9 +6380,9 @@ CurrencyNames/sv/mgf=madagaskisk franc CurrencyNames/sv/mkd=makedonisk denar CurrencyNames/sv/mmk=myanmarisk kyat -CurrencyNames/sv/mnt=mongolisk t\u00f6gr\u00f6g +CurrencyNames/sv/mnt=mongolisk tögrög CurrencyNames/sv/mop=makanesisk pataca -CurrencyNames/sv/mro=mauretansk ouguiya (1973\u20132017) +CurrencyNames/sv/mro=mauretansk ouguiya (1973–2017) CurrencyNames/sv/mtl=maltesisk lire CurrencyNames/sv/mur=mauritisk rupie CurrencyNames/sv/mvr=maldivisk rufiyaa @@ -6390,15 +6390,15 @@ CurrencyNames/sv/mxn=mexikansk peso CurrencyNames/sv/mxv=mexikansk unidad de inversion CurrencyNames/sv/myr=malaysisk ringgit -CurrencyNames/sv/mzm=gammal mo\u00e7ambikisk metical -CurrencyNames/sv/mzn=mo\u00e7ambikisk metical +CurrencyNames/sv/mzm=gammal moçambikisk metical +CurrencyNames/sv/mzn=moçambikisk metical CurrencyNames/sv/nad=namibisk dollar CurrencyNames/sv/ngn=nigeriansk naira -CurrencyNames/sv/nio=nicaraguansk c\u00f3rdoba -CurrencyNames/sv/nlg=nederl\u00e4ndsk gulden +CurrencyNames/sv/nio=nicaraguansk córdoba +CurrencyNames/sv/nlg=nederländsk gulden CurrencyNames/sv/nok=norsk krona CurrencyNames/sv/npr=nepalesisk rupie -CurrencyNames/sv/nzd=nyzeel\u00e4ndsk dollar +CurrencyNames/sv/nzd=nyzeeländsk dollar CurrencyNames/sv/omr=omansk rial CurrencyNames/sv/pab=panamansk balboa CurrencyNames/sv/pen=peruansk sol @@ -6409,15 +6409,15 @@ CurrencyNames/sv/pte=portugisisk escudo CurrencyNames/sv/pyg=paraguayansk guarani CurrencyNames/sv/qar=qatarisk rial -CurrencyNames/sv/rol=rum\u00e4nsk leu (1952\u20132005) -CurrencyNames/sv/ron=rum\u00e4nsk leu +CurrencyNames/sv/rol=rumänsk leu (1952–2005) +CurrencyNames/sv/ron=rumänsk leu CurrencyNames/sv/rsd=serbisk dinar CurrencyNames/sv/rub=rysk rubel -CurrencyNames/sv/rur=rysk rubel (1991\u20131998) +CurrencyNames/sv/rur=rysk rubel (1991–1998) CurrencyNames/sv/rwf=rwandisk franc CurrencyNames/sv/sar=saudisk riyal CurrencyNames/sv/scr=seychellisk rupie -CurrencyNames/sv/sdd=sudansk dinar (1992\u20132007) +CurrencyNames/sv/sdd=sudansk dinar (1992–2007) CurrencyNames/sv/sdg=sudanesiskt pund CurrencyNames/sv/sek=svensk krona CurrencyNames/sv/sgd=singaporiansk dollar @@ -6427,16 +6427,16 @@ CurrencyNames/sv/sos=somalisk shilling CurrencyNames/sv/srd=surinamesisk dollar CurrencyNames/sv/srg=surinamesisk gulden -CurrencyNames/sv/svc=salvadoransk col\u00f3n +CurrencyNames/sv/svc=salvadoransk colón CurrencyNames/sv/syp=syriskt pund -CurrencyNames/sv/szl=swazil\u00e4ndsk lilangeni -CurrencyNames/sv/thb=thail\u00e4ndsk baht +CurrencyNames/sv/szl=swaziländsk lilangeni +CurrencyNames/sv/thb=thailändsk baht CurrencyNames/sv/tjs=tadzjikisk somoni -CurrencyNames/sv/tmm=turkmenistansk manat (1993\u20132009) +CurrencyNames/sv/tmm=turkmenistansk manat (1993–2009) CurrencyNames/sv/tnd=tunisisk dinar -CurrencyNames/sv/top=tongansk pa\u02bbanga -CurrencyNames/sv/tpe=\u00f6sttimoresisk escudo -CurrencyNames/sv/trl=turkisk lire (1922\u20132005) +CurrencyNames/sv/top=tongansk paʻanga +CurrencyNames/sv/tpe=östtimoresisk escudo +CurrencyNames/sv/trl=turkisk lire (1922–2005) CurrencyNames/sv/try=turkisk lira CurrencyNames/sv/ttd=Trinidaddollar CurrencyNames/sv/twd=taiwanesisk dollar @@ -6445,94 +6445,94 @@ CurrencyNames/sv/ugx=ugandisk shilling CurrencyNames/sv/uyu=uruguayansk peso CurrencyNames/sv/uzs=uzbekisk sum -CurrencyNames/sv/veb=venezuelansk bolivar (1871\u20132008) -CurrencyNames/sv/vef=venezuelansk bol\u00edvar (2008\u20132018) +CurrencyNames/sv/veb=venezuelansk bolivar (1871–2008) +CurrencyNames/sv/vef=venezuelansk bolívar (2008–2018) CurrencyNames/sv/vnd=vietnamesisk dong CurrencyNames/sv/vuv=vanuatisk vatu -CurrencyNames/sv/wst=v\u00e4stsamoansk tala +CurrencyNames/sv/wst=västsamoansk tala CurrencyNames/sv/xag=silver CurrencyNames/sv/xau=guld CurrencyNames/sv/xba=europeisk kompositenhet -CurrencyNames/sv/xbb=europeisk monet\u00e4r enhet +CurrencyNames/sv/xbb=europeisk monetär enhet CurrencyNames/sv/xbc=europeisk kontoenhet (XBC) CurrencyNames/sv/xbd=europeisk kontoenhet (XBD) -CurrencyNames/sv/xcd=\u00f6stkaribisk dollar -CurrencyNames/sv/xdr=IMF s\u00e4rskild dragningsr\u00e4tt +CurrencyNames/sv/xcd=östkaribisk dollar +CurrencyNames/sv/xdr=IMF särskild dragningsrätt CurrencyNames/sv/xfo=fransk guldfranc CurrencyNames/sv/xpd=palladium CurrencyNames/sv/xpt=platina CurrencyNames/sv/xts=testvalutaenhet -CurrencyNames/sv/xxx=ok\u00e4nd valuta +CurrencyNames/sv/xxx=okänd valuta CurrencyNames/sv/yer=jemenitisk rial -CurrencyNames/sv/yum=jugoslavisk dinar (1994\u20132002) +CurrencyNames/sv/yum=jugoslavisk dinar (1994–2002) CurrencyNames/sv/zar=sydafrikansk rand -CurrencyNames/sv/zmk=zambisk kwacha (1968\u20132012) +CurrencyNames/sv/zmk=zambisk kwacha (1968–2012) CurrencyNames/sv/zwd=Zimbabwe-dollar -CurrencyNames/zh_CN/ang=\u8377\u5c5e\u5b89\u7684\u5217\u65af\u76fe -CurrencyNames/zh_CN/azm=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279 (1993\u20132006) -CurrencyNames/zh_CN/azn=\u963f\u585e\u62dc\u7586\u9a6c\u7eb3\u7279 -CurrencyNames/zh_CN/csd=\u65e7\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14 -CurrencyNames/zh_CN/ghs=\u52a0\u7eb3\u585e\u5730 -CurrencyNames/zh_CN/mzm=\u65e7\u83ab\u6851\u6bd4\u514b\u7f8e\u63d0\u5361 -CurrencyNames/zh_CN/mzn=\u83ab\u6851\u6bd4\u514b\u7f8e\u63d0\u5361 -CurrencyNames/zh_CN/ron=\u7f57\u9a6c\u5c3c\u4e9a\u5217\u4f0a -CurrencyNames/zh_CN/rsd=\u585e\u5c14\u7ef4\u4e9a\u7b2c\u7eb3\u5c14 -CurrencyNames/zh_CN/shp=\u5723\u8d6b\u52d2\u62ff\u7fa4\u5c9b\u78c5 -CurrencyNames/zh_CN/twd=\u65b0\u53f0\u5e01 -CurrencyNames/zh_CN/vef=\u59d4\u5185\u745e\u62c9\u73bb\u5229\u74e6\u5c14 (2008\u20132018) -CurrencyNames/zh_CN/xxx=\u672a\u77e5\u8d27\u5e01 - -CurrencyNames/zh_TW/afa=\u963f\u5bcc\u6c57\u5c3c (1927\u20132002) -CurrencyNames/zh_TW/ang=\u8377\u5c6c\u5b89\u5730\u5217\u65af\u76fe -CurrencyNames/zh_TW/azm=\u4e9e\u585e\u62dc\u7136\u99ac\u7d0d\u7279 (1993\u20132006) -CurrencyNames/zh_TW/azn=\u4e9e\u585e\u62dc\u7136\u99ac\u7d0d\u7279 -CurrencyNames/zh_TW/bwp=\u6ce2\u672d\u90a3\u666e\u62c9 -CurrencyNames/zh_TW/bzd=\u8c9d\u91cc\u65af\u5143 -CurrencyNames/zh_TW/csd=\u820a\u585e\u723e\u7dad\u4e9e\u7b2c\u7d0d\u723e -CurrencyNames/zh_TW/cyp=\u8cfd\u666e\u52d2\u65af\u938a -CurrencyNames/zh_TW/ghc=\u8fe6\u7d0d\u8cfd\u5730 (1979\u20132007) -CurrencyNames/zh_TW/ghs=\u8fe6\u7d0d\u585e\u5730 -CurrencyNames/zh_TW/gwp=\u5e7e\u5167\u4e9e\u6bd4\u7d22\u62ab\u7d22 -CurrencyNames/zh_TW/huf=\u5308\u7259\u5229\u798f\u6797 -CurrencyNames/zh_TW/idr=\u5370\u5c3c\u76fe -CurrencyNames/zh_TW/inr=\u5370\u5ea6\u76e7\u6bd4 -CurrencyNames/zh_TW/kpw=\u5317\u97d3\u5143 -CurrencyNames/zh_TW/krw=\u97d3\u5143 -CurrencyNames/zh_TW/lak=\u5bee\u570b\u57fa\u666e -CurrencyNames/zh_TW/mad=\u6469\u6d1b\u54e5\u8fea\u62c9\u59c6 -CurrencyNames/zh_TW/mxn=\u58a8\u897f\u54e5\u62ab\u7d22 -CurrencyNames/zh_TW/mxv=\u58a8\u897f\u54e5\u8f49\u63db\u55ae\u4f4d (UDI) -CurrencyNames/zh_TW/myr=\u99ac\u4f86\u897f\u4e9e\u4ee4\u5409 -CurrencyNames/zh_TW/mzn=\u83ab\u4e09\u6bd4\u514b\u6885\u8482\u5361\u723e -CurrencyNames/zh_TW/nio=\u5c3c\u52a0\u62c9\u74dc\u91d1\u79d1\u591a\u5df4 -CurrencyNames/zh_TW/rol=\u820a\u7f85\u99ac\u5c3c\u4e9e\u5217\u4f0a -CurrencyNames/zh_TW/ron=\u7f85\u99ac\u5c3c\u4e9e\u5217\u4f0a -CurrencyNames/zh_TW/rsd=\u585e\u723e\u7dad\u4e9e\u6234\u7d0d -CurrencyNames/zh_TW/scr=\u585e\u5e2d\u723e\u76e7\u6bd4 -CurrencyNames/zh_TW/sdg=\u8607\u4e39\u938a -CurrencyNames/zh_TW/shp=\u8056\u8d6b\u52d2\u62ff\u938a -CurrencyNames/zh_TW/srd=\u8607\u5229\u5357\u5143 -CurrencyNames/zh_TW/srg=\u8607\u5229\u5357\u57fa\u723e -CurrencyNames/zh_TW/svc=\u85a9\u723e\u74e6\u591a\u79d1\u90ce -CurrencyNames/zh_TW/szl=\u53f2\u74e6\u6fdf\u862d\u91cc\u6717\u5409\u5c3c -CurrencyNames/zh_TW/tpe=\u5e1d\u6c76\u57c3\u65af\u5eab\u591a -CurrencyNames/zh_TW/ttd=\u5343\u91cc\u9054\u53ca\u6258\u5df4\u54e5\u5143 -CurrencyNames/zh_TW/tzs=\u5766\u5c1a\u5c3c\u4e9e\u5148\u4ee4 -CurrencyNames/zh_TW/uzs=\u70cf\u8332\u5225\u514b\u7d22\u59c6 -CurrencyNames/zh_TW/veb=\u59d4\u5167\u745e\u62c9\u73bb\u5229\u74e6 (1871\u20132008) -CurrencyNames/zh_TW/vef=\u59d4\u5167\u745e\u62c9\u73bb\u5229\u74e6 (2008\u20132018) -CurrencyNames/zh_TW/xaf=\u6cd5\u90ce (CFA\u2013BEAC) -CurrencyNames/zh_TW/xag=\u767d\u9280 -CurrencyNames/zh_TW/xof=\u6cd5\u90ce (CFA\u2013BCEAO) -CurrencyNames/zh_TW/xpd=\u5e15\u62c9\u72c4\u6602 -CurrencyNames/zh_TW/xpt=\u767d\u91d1 -CurrencyNames/zh_TW/xts=\u6e2c\u8a66\u7528\u8ca8\u5e63\u4ee3\u78bc -CurrencyNames/zh_TW/xxx=\u672a\u77e5\u8ca8\u5e63 -CurrencyNames/zh_TW/yer=\u8449\u9580\u91cc\u4e9e\u723e +CurrencyNames/zh_CN/ang=荷属安的列斯盾 +CurrencyNames/zh_CN/azm=阿塞拜疆马纳特 (1993–2006) +CurrencyNames/zh_CN/azn=阿塞拜疆马纳特 +CurrencyNames/zh_CN/csd=旧塞尔维亚第纳尔 +CurrencyNames/zh_CN/ghs=加纳塞地 +CurrencyNames/zh_CN/mzm=旧莫桑比克美提卡 +CurrencyNames/zh_CN/mzn=莫桑比克美提卡 +CurrencyNames/zh_CN/ron=罗马尼亚列伊 +CurrencyNames/zh_CN/rsd=塞尔维亚第纳尔 +CurrencyNames/zh_CN/shp=圣赫勒拿群岛磅 +CurrencyNames/zh_CN/twd=新台币 +CurrencyNames/zh_CN/vef=委内瑞拉玻利瓦尔 (2008–2018) +CurrencyNames/zh_CN/xxx=未知货币 + +CurrencyNames/zh_TW/afa=阿富汗尼 (1927–2002) +CurrencyNames/zh_TW/ang=荷屬安地列斯盾 +CurrencyNames/zh_TW/azm=亞塞拜然馬納特 (1993–2006) +CurrencyNames/zh_TW/azn=亞塞拜然馬納特 +CurrencyNames/zh_TW/bwp=波札那普拉 +CurrencyNames/zh_TW/bzd=貝里斯元 +CurrencyNames/zh_TW/csd=舊塞爾維亞第納爾 +CurrencyNames/zh_TW/cyp=賽普勒斯鎊 +CurrencyNames/zh_TW/ghc=迦納賽地 (1979–2007) +CurrencyNames/zh_TW/ghs=迦納塞地 +CurrencyNames/zh_TW/gwp=幾內亞比索披索 +CurrencyNames/zh_TW/huf=匈牙利福林 +CurrencyNames/zh_TW/idr=印尼盾 +CurrencyNames/zh_TW/inr=印度盧比 +CurrencyNames/zh_TW/kpw=北韓元 +CurrencyNames/zh_TW/krw=韓元 +CurrencyNames/zh_TW/lak=寮國基普 +CurrencyNames/zh_TW/mad=摩洛哥迪拉姆 +CurrencyNames/zh_TW/mxn=墨西哥披索 +CurrencyNames/zh_TW/mxv=墨西哥轉換單位 (UDI) +CurrencyNames/zh_TW/myr=馬來西亞令吉 +CurrencyNames/zh_TW/mzn=莫三比克梅蒂卡爾 +CurrencyNames/zh_TW/nio=尼加拉瓜金科多巴 +CurrencyNames/zh_TW/rol=舊羅馬尼亞列伊 +CurrencyNames/zh_TW/ron=羅馬尼亞列伊 +CurrencyNames/zh_TW/rsd=塞爾維亞戴納 +CurrencyNames/zh_TW/scr=塞席爾盧比 +CurrencyNames/zh_TW/sdg=蘇丹鎊 +CurrencyNames/zh_TW/shp=聖赫勒拿鎊 +CurrencyNames/zh_TW/srd=蘇利南元 +CurrencyNames/zh_TW/srg=蘇利南基爾 +CurrencyNames/zh_TW/svc=薩爾瓦多科郎 +CurrencyNames/zh_TW/szl=史瓦濟蘭里朗吉尼 +CurrencyNames/zh_TW/tpe=帝汶埃斯庫多 +CurrencyNames/zh_TW/ttd=千里達及托巴哥元 +CurrencyNames/zh_TW/tzs=坦尚尼亞先令 +CurrencyNames/zh_TW/uzs=烏茲別克索姆 +CurrencyNames/zh_TW/veb=委內瑞拉玻利瓦 (1871–2008) +CurrencyNames/zh_TW/vef=委內瑞拉玻利瓦 (2008–2018) +CurrencyNames/zh_TW/xaf=法郎 (CFA–BEAC) +CurrencyNames/zh_TW/xag=白銀 +CurrencyNames/zh_TW/xof=法郎 (CFA–BCEAO) +CurrencyNames/zh_TW/xpd=帕拉狄昂 +CurrencyNames/zh_TW/xpt=白金 +CurrencyNames/zh_TW/xts=測試用貨幣代碼 +CurrencyNames/zh_TW/xxx=未知貨幣 +CurrencyNames/zh_TW/yer=葉門里亞爾 # bug 7036905 -CurrencyNames/de/afa=Afghanische Afghani (1927\u20132002) +CurrencyNames/de/afa=Afghanische Afghani (1927–2002) CurrencyNames/de/afn=Afghanischer Afghani CurrencyNames/de/bob=Bolivianischer Boliviano CurrencyNames/de/dem=Deutsche Mark @@ -6548,49 +6548,49 @@ CurrencyNames/es/cuc=peso cubano convertible CurrencyNames/es/tmt=manat turcomano -CurrencyNames/es/zwl=d\u00f3lar zimbabuense +CurrencyNames/es/zwl=dólar zimbabuense CurrencyNames/es_CU/CUP=$ CurrencyNames/es_CU/CUC=CUC CurrencyNames/et_EE/eek=Eesti kroon -CurrencyNames/et_EE/EUR=\u20ac +CurrencyNames/et_EE/EUR=€ CurrencyNames/et_EE/eur=euro CurrencyNames/fr/cuc=peso cubain convertible -CurrencyNames/fr/tmt=nouveau manat turkm\u00e8ne +CurrencyNames/fr/tmt=nouveau manat turkmène -CurrencyNames/ja/cuc=\u30ad\u30e5\u30fc\u30d0 \u514c\u63db\u30da\u30bd -CurrencyNames/ja/tmt=\u30c8\u30eb\u30af\u30e1\u30cb\u30b9\u30bf\u30f3 \u30de\u30ca\u30c8 -CurrencyNames/ja/zwl=\u30b8\u30f3\u30d0\u30d6\u30a8 \u30c9\u30eb (2009) +CurrencyNames/ja/cuc=キューバ 兌換ペソ +CurrencyNames/ja/tmt=トルクメニスタン マナト +CurrencyNames/ja/zwl=ジンバブエ ドル (2009) -CurrencyNames/ko/cuc=\ucfe0\ubc14 \ud0dc\ud658 \ud398\uc18c +CurrencyNames/ko/cuc=쿠바 태환 페소 -CurrencyNames/pt/bob=Boliviano da Bol\u00edvia -CurrencyNames/pt/cuc=Peso cubano convers\u00edvel +CurrencyNames/pt/bob=Boliviano da Bolívia +CurrencyNames/pt/cuc=Peso cubano conversível CurrencyNames/pt/tmt=Manat turcomeno -CurrencyNames/pt/zwl=D\u00f3lar do Zimb\u00e1bue (2009) -CurrencyNames/pt/zwr=D\u00f3lar do Zimb\u00e1bue (2008) +CurrencyNames/pt/zwl=Dólar do Zimbábue (2009) +CurrencyNames/pt/zwr=Dólar do Zimbábue (2008) -CurrencyNames/sk_SK/skk=slovensk\u00e1 koruna -CurrencyNames/sk_SK/EUR=\u20ac +CurrencyNames/sk_SK/skk=slovenská koruna +CurrencyNames/sk_SK/EUR=€ -CurrencyNames/zh_CN/cuc=\u53e4\u5df4\u53ef\u5151\u6362\u6bd4\u7d22 -CurrencyNames/zh_CN/tmt=\u571f\u5e93\u66fc\u65af\u5766\u9a6c\u7eb3\u7279 -CurrencyNames/zh_CN/zwl=\u6d25\u5df4\u5e03\u97e6\u5143 (2009) - -CurrencyNames/zh_TW/cuc=\u53e4\u5df4\u53ef\u8f49\u63db\u62ab\u7d22 -CurrencyNames/zh_TW/tmt=\u571f\u5eab\u66fc\u99ac\u7d0d\u7279 -CurrencyNames/zh_TW/zwl=\u8f9b\u5df4\u5a01\u5143 (2009) +CurrencyNames/zh_CN/cuc=古巴可兑换比索 +CurrencyNames/zh_CN/tmt=土库曼斯坦马纳特 +CurrencyNames/zh_CN/zwl=津巴布韦元 (2009) + +CurrencyNames/zh_TW/cuc=古巴可轉換披索 +CurrencyNames/zh_TW/tmt=土庫曼馬納特 +CurrencyNames/zh_TW/zwl=辛巴威元 (2009) # bug 7003124 -FormatData/bg/TimePatterns/0=H:mm:ss '\u0447'. zzzz -FormatData/bg/TimePatterns/2=H:mm:ss '\u0447'. -FormatData/bg/TimePatterns/3=H:mm '\u0447'. -FormatData/bg/DatePatterns/0=EEEE, d MMMM y\u202f'\u0433'. -FormatData/bg/DatePatterns/1=d MMMM y\u202f'\u0433'. -FormatData/bg/DatePatterns/2=d.MM.y\u202f'\u0433'. -FormatData/bg/DatePatterns/3=d.MM.yy\u202f'\u0433'. +FormatData/bg/TimePatterns/0=H:mm:ss 'ч'. zzzz +FormatData/bg/TimePatterns/2=H:mm:ss 'ч'. +FormatData/bg/TimePatterns/3=H:mm 'ч'. +FormatData/bg/DatePatterns/0=EEEE, d MMMM y 'г'. +FormatData/bg/DatePatterns/1=d MMMM y 'г'. +FormatData/bg/DatePatterns/2=d.MM.y 'г'. +FormatData/bg/DatePatterns/3=d.MM.yy 'г'. # bug 7085757 LocaleNames/en/SS=South Sudan @@ -6625,46 +6625,46 @@ FormatData//japanese.narrow.Eras/3=S FormatData//japanese.narrow.Eras/4=H -FormatData/ar/DayNarrows/0=\u062d -FormatData/ar/DayNarrows/1=\u0646 -FormatData/ar/DayNarrows/2=\u062b -FormatData/ar/DayNarrows/3=\u0631 -FormatData/ar/DayNarrows/4=\u062e -FormatData/ar/DayNarrows/5=\u062c -FormatData/ar/DayNarrows/6=\u0633 - -FormatData/be/standalone.MonthNarrows/0=\u0441 -FormatData/be/standalone.MonthNarrows/1=\u043b -FormatData/be/standalone.MonthNarrows/2=\u0441 -FormatData/be/standalone.MonthNarrows/3=\u043a -FormatData/be/standalone.MonthNarrows/4=\u043c -FormatData/be/standalone.MonthNarrows/5=\u0447 -FormatData/be/standalone.MonthNarrows/6=\u043b -FormatData/be/standalone.MonthNarrows/7=\u0436 -FormatData/be/standalone.MonthNarrows/8=\u0432 -FormatData/be/standalone.MonthNarrows/9=\u043a -FormatData/be/standalone.MonthNarrows/10=\u043b -FormatData/be/standalone.MonthNarrows/11=\u0441 +FormatData/ar/DayNarrows/0=ح +FormatData/ar/DayNarrows/1=ن +FormatData/ar/DayNarrows/2=ث +FormatData/ar/DayNarrows/3=ر +FormatData/ar/DayNarrows/4=خ +FormatData/ar/DayNarrows/5=ج +FormatData/ar/DayNarrows/6=س + +FormatData/be/standalone.MonthNarrows/0=с +FormatData/be/standalone.MonthNarrows/1=л +FormatData/be/standalone.MonthNarrows/2=с +FormatData/be/standalone.MonthNarrows/3=к +FormatData/be/standalone.MonthNarrows/4=м +FormatData/be/standalone.MonthNarrows/5=ч +FormatData/be/standalone.MonthNarrows/6=л +FormatData/be/standalone.MonthNarrows/7=ж +FormatData/be/standalone.MonthNarrows/8=в +FormatData/be/standalone.MonthNarrows/9=к +FormatData/be/standalone.MonthNarrows/10=л +FormatData/be/standalone.MonthNarrows/11=с FormatData/be/standalone.MonthNarrows/12= -FormatData/be/DayNarrows/0=\u043d -FormatData/be/DayNarrows/1=\u043f -FormatData/be/DayNarrows/2=\u0430 -FormatData/be/DayNarrows/3=\u0441 -FormatData/be/DayNarrows/4=\u0447 -FormatData/be/DayNarrows/5=\u043f -FormatData/be/DayNarrows/6=\u0441 - -FormatData/bg/DayNarrows/0=\u043d -FormatData/bg/DayNarrows/1=\u043f -FormatData/bg/DayNarrows/2=\u0432 -FormatData/bg/DayNarrows/3=\u0441 -FormatData/bg/DayNarrows/4=\u0447 -FormatData/bg/DayNarrows/5=\u043f -FormatData/bg/DayNarrows/6=\u0441 +FormatData/be/DayNarrows/0=н +FormatData/be/DayNarrows/1=п +FormatData/be/DayNarrows/2=а +FormatData/be/DayNarrows/3=с +FormatData/be/DayNarrows/4=ч +FormatData/be/DayNarrows/5=п +FormatData/be/DayNarrows/6=с + +FormatData/bg/DayNarrows/0=н +FormatData/bg/DayNarrows/1=п +FormatData/bg/DayNarrows/2=в +FormatData/bg/DayNarrows/3=с +FormatData/bg/DayNarrows/4=ч +FormatData/bg/DayNarrows/5=п +FormatData/bg/DayNarrows/6=с FormatData/ca/standalone.MonthNarrows/0=GN FormatData/ca/standalone.MonthNarrows/1=FB -FormatData/ca/standalone.MonthNarrows/2=M\u00c7 +FormatData/ca/standalone.MonthNarrows/2=MÇ FormatData/ca/standalone.MonthNarrows/3=AB FormatData/ca/standalone.MonthNarrows/4=MG FormatData/ca/standalone.MonthNarrows/5=JN @@ -6693,9 +6693,9 @@ FormatData/cs/DayNarrows/0=N FormatData/cs/DayNarrows/1=P -FormatData/cs/DayNarrows/2=\u00da +FormatData/cs/DayNarrows/2=Ú FormatData/cs/DayNarrows/3=S -FormatData/cs/DayNarrows/4=\u010c +FormatData/cs/DayNarrows/4=Č FormatData/cs/DayNarrows/5=P FormatData/cs/DayNarrows/6=S @@ -6715,13 +6715,13 @@ FormatData/de/DayNarrows/5=F FormatData/de/DayNarrows/6=S -FormatData/el/DayNarrows/0=\u039a -FormatData/el/DayNarrows/1=\u0394 -FormatData/el/DayNarrows/2=\u03a4 -FormatData/el/DayNarrows/3=\u03a4 -FormatData/el/DayNarrows/4=\u03a0 -FormatData/el/DayNarrows/5=\u03a0 -FormatData/el/DayNarrows/6=\u03a3 +FormatData/el/DayNarrows/0=Κ +FormatData/el/DayNarrows/1=Δ +FormatData/el/DayNarrows/2=Τ +FormatData/el/DayNarrows/3=Τ +FormatData/el/DayNarrows/4=Π +FormatData/el/DayNarrows/5=Π +FormatData/el/DayNarrows/6=Σ FormatData/es/DayNarrows/0=D FormatData/es/DayNarrows/1=L @@ -6777,13 +6777,13 @@ FormatData/fr/DayNarrows/5=V FormatData/fr/DayNarrows/6=S -FormatData/hi_IN/DayNarrows/0=\u0930 -FormatData/hi_IN/DayNarrows/1=\u0938\u094b -FormatData/hi_IN/DayNarrows/2=\u092e\u0902 -FormatData/hi_IN/DayNarrows/3=\u092c\u0941 -FormatData/hi_IN/DayNarrows/4=\u0917\u0941 -FormatData/hi_IN/DayNarrows/5=\u0936\u0941 -FormatData/hi_IN/DayNarrows/6=\u0936 +FormatData/hi_IN/DayNarrows/0=र +FormatData/hi_IN/DayNarrows/1=सो +FormatData/hi_IN/DayNarrows/2=मं +FormatData/hi_IN/DayNarrows/3=बु +FormatData/hi_IN/DayNarrows/4=गु +FormatData/hi_IN/DayNarrows/5=शु +FormatData/hi_IN/DayNarrows/6=श FormatData/hr/standalone.MonthNarrows/0=1. FormatData/hr/standalone.MonthNarrows/1=2. @@ -6802,14 +6802,14 @@ FormatData/hr/DayNarrows/1=P FormatData/hr/DayNarrows/2=U FormatData/hr/DayNarrows/3=S -FormatData/hr/DayNarrows/4=\u010c +FormatData/hr/DayNarrows/4=Č FormatData/hr/DayNarrows/5=P FormatData/hr/DayNarrows/6=S FormatData/hr/standalone.DayNarrows/0=n FormatData/hr/standalone.DayNarrows/1=p FormatData/hr/standalone.DayNarrows/2=u FormatData/hr/standalone.DayNarrows/3=s -FormatData/hr/standalone.DayNarrows/4=\u010d +FormatData/hr/standalone.DayNarrows/4=č FormatData/hr/standalone.DayNarrows/5=p FormatData/hr/standalone.DayNarrows/6=s @@ -6828,7 +6828,7 @@ FormatData/is/standalone.MonthNarrows/4=M FormatData/is/standalone.MonthNarrows/5=J FormatData/is/standalone.MonthNarrows/6=J -FormatData/is/standalone.MonthNarrows/7=\u00c1 +FormatData/is/standalone.MonthNarrows/7=Á FormatData/is/standalone.MonthNarrows/8=S FormatData/is/standalone.MonthNarrows/9=O FormatData/is/standalone.MonthNarrows/10=N @@ -6836,14 +6836,14 @@ FormatData/is/standalone.MonthNarrows/12= FormatData/is/DayNarrows/0=S FormatData/is/DayNarrows/1=M -FormatData/is/DayNarrows/2=\u00de +FormatData/is/DayNarrows/2=Þ FormatData/is/DayNarrows/3=M FormatData/is/DayNarrows/4=F FormatData/is/DayNarrows/5=F FormatData/is/DayNarrows/6=L FormatData/is/standalone.DayNarrows/0=S FormatData/is/standalone.DayNarrows/1=M -FormatData/is/standalone.DayNarrows/2=\u00de +FormatData/is/standalone.DayNarrows/2=Þ FormatData/is/standalone.DayNarrows/3=M FormatData/is/standalone.DayNarrows/4=F FormatData/is/standalone.DayNarrows/5=F @@ -6857,36 +6857,36 @@ FormatData/it/DayNarrows/5=V FormatData/it/DayNarrows/6=S -FormatData/iw/DayNarrows/0=\u05d0\u05f3 -FormatData/iw/DayNarrows/1=\u05d1\u05f3 -FormatData/iw/DayNarrows/2=\u05d2\u05f3 -FormatData/iw/DayNarrows/3=\u05d3\u05f3 -FormatData/iw/DayNarrows/4=\u05d4\u05f3 -FormatData/iw/DayNarrows/5=\u05d5\u05f3 -FormatData/iw/DayNarrows/6=\u05e9\u05f3 -FormatData/iw/standalone.DayNarrows/0=\u05d0\u05f3 -FormatData/iw/standalone.DayNarrows/1=\u05d1\u05f3 -FormatData/iw/standalone.DayNarrows/2=\u05d2\u05f3 -FormatData/iw/standalone.DayNarrows/3=\u05d3\u05f3 -FormatData/iw/standalone.DayNarrows/4=\u05d4\u05f3 -FormatData/iw/standalone.DayNarrows/5=\u05d5\u05f3 -FormatData/iw/standalone.DayNarrows/6=\u05e9\u05f3 - -FormatData/ja/DayNarrows/0=\u65e5 -FormatData/ja/DayNarrows/1=\u6708 -FormatData/ja/DayNarrows/2=\u706b -FormatData/ja/DayNarrows/3=\u6c34 -FormatData/ja/DayNarrows/4=\u6728 -FormatData/ja/DayNarrows/5=\u91d1 -FormatData/ja/DayNarrows/6=\u571f - -FormatData/ko/DayNarrows/0=\uc77c -FormatData/ko/DayNarrows/1=\uc6d4 -FormatData/ko/DayNarrows/2=\ud654 -FormatData/ko/DayNarrows/3=\uc218 -FormatData/ko/DayNarrows/4=\ubaa9 -FormatData/ko/DayNarrows/5=\uae08 -FormatData/ko/DayNarrows/6=\ud1a0 +FormatData/iw/DayNarrows/0=א׳ +FormatData/iw/DayNarrows/1=ב׳ +FormatData/iw/DayNarrows/2=ג׳ +FormatData/iw/DayNarrows/3=ד׳ +FormatData/iw/DayNarrows/4=ה׳ +FormatData/iw/DayNarrows/5=ו׳ +FormatData/iw/DayNarrows/6=ש׳ +FormatData/iw/standalone.DayNarrows/0=א׳ +FormatData/iw/standalone.DayNarrows/1=ב׳ +FormatData/iw/standalone.DayNarrows/2=ג׳ +FormatData/iw/standalone.DayNarrows/3=ד׳ +FormatData/iw/standalone.DayNarrows/4=ה׳ +FormatData/iw/standalone.DayNarrows/5=ו׳ +FormatData/iw/standalone.DayNarrows/6=ש׳ + +FormatData/ja/DayNarrows/0=日 +FormatData/ja/DayNarrows/1=月 +FormatData/ja/DayNarrows/2=火 +FormatData/ja/DayNarrows/3=水 +FormatData/ja/DayNarrows/4=木 +FormatData/ja/DayNarrows/5=金 +FormatData/ja/DayNarrows/6=土 + +FormatData/ko/DayNarrows/0=일 +FormatData/ko/DayNarrows/1=월 +FormatData/ko/DayNarrows/2=화 +FormatData/ko/DayNarrows/3=수 +FormatData/ko/DayNarrows/4=목 +FormatData/ko/DayNarrows/5=금 +FormatData/ko/DayNarrows/6=토 FormatData/lt/standalone.MonthNarrows/0=S FormatData/lt/standalone.MonthNarrows/1=V @@ -6908,14 +6908,14 @@ FormatData/lt/DayNarrows/3=T FormatData/lt/DayNarrows/4=K FormatData/lt/DayNarrows/5=P -FormatData/lt/DayNarrows/6=\u0160 +FormatData/lt/DayNarrows/6=Š FormatData/lt/standalone.DayNarrows/0=S FormatData/lt/standalone.DayNarrows/1=P FormatData/lt/standalone.DayNarrows/2=A FormatData/lt/standalone.DayNarrows/3=T FormatData/lt/standalone.DayNarrows/4=K FormatData/lt/standalone.DayNarrows/5=P -FormatData/lt/standalone.DayNarrows/6=\u0160 +FormatData/lt/standalone.DayNarrows/6=Š FormatData/lv/DayNarrows/0=S FormatData/lv/DayNarrows/1=P @@ -6925,13 +6925,13 @@ FormatData/lv/DayNarrows/5=P FormatData/lv/DayNarrows/6=S -FormatData/mk/DayNarrows/0=\u043d -FormatData/mk/DayNarrows/1=\u043f -FormatData/mk/DayNarrows/2=\u0432 -FormatData/mk/DayNarrows/3=\u0441 -FormatData/mk/DayNarrows/4=\u0447 -FormatData/mk/DayNarrows/5=\u043f -FormatData/mk/DayNarrows/6=\u0441 +FormatData/mk/DayNarrows/0=н +FormatData/mk/DayNarrows/1=п +FormatData/mk/DayNarrows/2=в +FormatData/mk/DayNarrows/3=с +FormatData/mk/DayNarrows/4=ч +FormatData/mk/DayNarrows/5=п +FormatData/mk/DayNarrows/6=с FormatData/ms/standalone.MonthNarrows/0=J FormatData/ms/standalone.MonthNarrows/1=F @@ -6961,12 +6961,12 @@ FormatData/ms/standalone.DayNarrows/5=J FormatData/ms/standalone.DayNarrows/6=S -FormatData/mt/DayNarrows/0=\u0126d +FormatData/mt/DayNarrows/0=Ħd FormatData/mt/DayNarrows/1=T FormatData/mt/DayNarrows/2=Tl FormatData/mt/DayNarrows/3=Er -FormatData/mt/DayNarrows/4=\u0126m -FormatData/mt/DayNarrows/5=\u0120m +FormatData/mt/DayNarrows/4=Ħm +FormatData/mt/DayNarrows/5=Ġm FormatData/mt/DayNarrows/6=Sb FormatData/nl/DayNarrows/0=Z @@ -6980,7 +6980,7 @@ FormatData/pl/DayNarrows/0=n FormatData/pl/DayNarrows/1=p FormatData/pl/DayNarrows/2=w -FormatData/pl/DayNarrows/3=\u015b +FormatData/pl/DayNarrows/3=ś FormatData/pl/DayNarrows/4=c FormatData/pl/DayNarrows/5=p FormatData/pl/DayNarrows/6=s @@ -7022,28 +7022,28 @@ FormatData/ro/standalone.DayNarrows/5=V FormatData/ro/standalone.DayNarrows/6=S -FormatData/ru/DayNarrows/0=\u0412 -FormatData/ru/DayNarrows/1=\u041f -FormatData/ru/DayNarrows/2=\u0412 -FormatData/ru/DayNarrows/3=\u0421 -FormatData/ru/DayNarrows/4=\u0427 -FormatData/ru/DayNarrows/5=\u041f +FormatData/ru/DayNarrows/0=В +FormatData/ru/DayNarrows/1=П +FormatData/ru/DayNarrows/2=В +FormatData/ru/DayNarrows/3=С +FormatData/ru/DayNarrows/4=Ч +FormatData/ru/DayNarrows/5=П # Note: "sat" is an contributed item in CLDR. -FormatData/ru/DayNarrows/6=\u0421 +FormatData/ru/DayNarrows/6=С -FormatData/ru/standalone.DayNarrows/0=\u0412 -FormatData/ru/standalone.DayNarrows/1=\u041f -FormatData/ru/standalone.DayNarrows/2=\u0412 -FormatData/ru/standalone.DayNarrows/3=\u0421 -FormatData/ru/standalone.DayNarrows/4=\u0427 -FormatData/ru/standalone.DayNarrows/5=\u041f -FormatData/ru/standalone.DayNarrows/6=\u0421 +FormatData/ru/standalone.DayNarrows/0=В +FormatData/ru/standalone.DayNarrows/1=П +FormatData/ru/standalone.DayNarrows/2=В +FormatData/ru/standalone.DayNarrows/3=С +FormatData/ru/standalone.DayNarrows/4=Ч +FormatData/ru/standalone.DayNarrows/5=П +FormatData/ru/standalone.DayNarrows/6=С FormatData/sk/DayNarrows/0=n FormatData/sk/DayNarrows/1=p FormatData/sk/DayNarrows/2=u FormatData/sk/DayNarrows/3=s -FormatData/sk/DayNarrows/4=\u0161 +FormatData/sk/DayNarrows/4=š FormatData/sk/DayNarrows/5=p FormatData/sk/DayNarrows/6=s @@ -7051,7 +7051,7 @@ FormatData/sl/DayNarrows/1=p FormatData/sl/DayNarrows/2=t FormatData/sl/DayNarrows/3=s -FormatData/sl/DayNarrows/4=\u010d +FormatData/sl/DayNarrows/4=č FormatData/sl/DayNarrows/5=p FormatData/sl/DayNarrows/6=s @@ -7063,15 +7063,15 @@ FormatData/sq/DayNarrows/5=p FormatData/sq/DayNarrows/6=sh -FormatData/sr/DayNarrows/0=\u043d -FormatData/sr/DayNarrows/1=\u043f -FormatData/sr/DayNarrows/2=\u0443 -FormatData/sr/DayNarrows/3=\u0441 -FormatData/sr/DayNarrows/4=\u0447 -FormatData/sr/DayNarrows/5=\u043f -FormatData/sr/DayNarrows/6=\u0441 -FormatData/sr/narrow.Eras/0=\u043f.\u043d.\u0435. -FormatData/sr/narrow.Eras/1=\u043d.\u0435. +FormatData/sr/DayNarrows/0=н +FormatData/sr/DayNarrows/1=п +FormatData/sr/DayNarrows/2=у +FormatData/sr/DayNarrows/3=с +FormatData/sr/DayNarrows/4=ч +FormatData/sr/DayNarrows/5=п +FormatData/sr/DayNarrows/6=с +FormatData/sr/narrow.Eras/0=п.н.е. +FormatData/sr/narrow.Eras/1=н.е. FormatData/sv/standalone.MonthNarrows/0=J FormatData/sv/standalone.MonthNarrows/1=F @@ -7105,31 +7105,31 @@ FormatData/sv/narrow.AmPmMarkers/0=fm FormatData/sv/narrow.AmPmMarkers/1=em -FormatData/th/standalone.MonthNarrows/0=\u0e21.\u0e04. -FormatData/th/standalone.MonthNarrows/1=\u0e01.\u0e1e. -FormatData/th/standalone.MonthNarrows/2=\u0e21\u0e35.\u0e04. -FormatData/th/standalone.MonthNarrows/3=\u0e40\u0e21.\u0e22. -FormatData/th/standalone.MonthNarrows/4=\u0e1e.\u0e04. -FormatData/th/standalone.MonthNarrows/5=\u0e21\u0e34.\u0e22. -FormatData/th/standalone.MonthNarrows/6=\u0e01.\u0e04. -FormatData/th/standalone.MonthNarrows/7=\u0e2a.\u0e04. -FormatData/th/standalone.MonthNarrows/8=\u0e01.\u0e22. -FormatData/th/standalone.MonthNarrows/9=\u0e15.\u0e04. -FormatData/th/standalone.MonthNarrows/10=\u0e1e.\u0e22. -FormatData/th/standalone.MonthNarrows/11=\u0e18.\u0e04. +FormatData/th/standalone.MonthNarrows/0=ม.ค. +FormatData/th/standalone.MonthNarrows/1=ก.พ. +FormatData/th/standalone.MonthNarrows/2=มี.ค. +FormatData/th/standalone.MonthNarrows/3=เม.ย. +FormatData/th/standalone.MonthNarrows/4=พ.ค. +FormatData/th/standalone.MonthNarrows/5=มิ.ย. +FormatData/th/standalone.MonthNarrows/6=ก.ค. +FormatData/th/standalone.MonthNarrows/7=ส.ค. +FormatData/th/standalone.MonthNarrows/8=ก.ย. +FormatData/th/standalone.MonthNarrows/9=ต.ค. +FormatData/th/standalone.MonthNarrows/10=พ.ย. +FormatData/th/standalone.MonthNarrows/11=ธ.ค. FormatData/th/standalone.MonthNarrows/12= -FormatData/th/DayNarrows/0=\u0e2d\u0e32 -FormatData/th/DayNarrows/1=\u0e08 -FormatData/th/DayNarrows/2=\u0e2d -FormatData/th/DayNarrows/3=\u0e1e -FormatData/th/DayNarrows/4=\u0e1e\u0e24 -FormatData/th/DayNarrows/5=\u0e28 -FormatData/th/DayNarrows/6=\u0e2a -FormatData/th/narrow.Eras/0=\u0e01\u0e48\u0e2d\u0e19 \u0e04.\u0e28. -FormatData/th/narrow.Eras/1=\u0e04.\u0e28. +FormatData/th/DayNarrows/0=อา +FormatData/th/DayNarrows/1=จ +FormatData/th/DayNarrows/2=อ +FormatData/th/DayNarrows/3=พ +FormatData/th/DayNarrows/4=พฤ +FormatData/th/DayNarrows/5=ศ +FormatData/th/DayNarrows/6=ส +FormatData/th/narrow.Eras/0=ก่อน ค.ศ. +FormatData/th/narrow.Eras/1=ค.ศ. FormatData/tr/standalone.MonthNarrows/0=O -FormatData/tr/standalone.MonthNarrows/1=\u015e +FormatData/tr/standalone.MonthNarrows/1=Ş FormatData/tr/standalone.MonthNarrows/2=M FormatData/tr/standalone.MonthNarrows/3=N FormatData/tr/standalone.MonthNarrows/4=M @@ -7144,18 +7144,18 @@ FormatData/tr/DayNarrows/0=P FormatData/tr/DayNarrows/1=P FormatData/tr/DayNarrows/2=S -FormatData/tr/DayNarrows/3=\u00c7 +FormatData/tr/DayNarrows/3=Ç FormatData/tr/DayNarrows/4=P FormatData/tr/DayNarrows/5=C FormatData/tr/DayNarrows/6=C -FormatData/uk/DayNarrows/0=\u041d -FormatData/uk/DayNarrows/1=\u041f -FormatData/uk/DayNarrows/2=\u0412 -FormatData/uk/DayNarrows/3=\u0421 -FormatData/uk/DayNarrows/4=\u0427 -FormatData/uk/DayNarrows/5=\u041f -FormatData/uk/DayNarrows/6=\u0421 +FormatData/uk/DayNarrows/0=Н +FormatData/uk/DayNarrows/1=П +FormatData/uk/DayNarrows/2=В +FormatData/uk/DayNarrows/3=С +FormatData/uk/DayNarrows/4=Ч +FormatData/uk/DayNarrows/5=П +FormatData/uk/DayNarrows/6=С FormatData/vi/DayNarrows/0=CN FormatData/vi/DayNarrows/1=T2 @@ -7178,13 +7178,13 @@ FormatData/zh/standalone.MonthNarrows/10=11 FormatData/zh/standalone.MonthNarrows/11=12 FormatData/zh/standalone.MonthNarrows/12= -FormatData/zh/DayNarrows/0=\u65e5 -FormatData/zh/DayNarrows/1=\u4e00 -FormatData/zh/DayNarrows/2=\u4e8c -FormatData/zh/DayNarrows/3=\u4e09 -FormatData/zh/DayNarrows/4=\u56db -FormatData/zh/DayNarrows/5=\u4e94 -FormatData/zh/DayNarrows/6=\u516d +FormatData/zh/DayNarrows/0=日 +FormatData/zh/DayNarrows/1=一 +FormatData/zh/DayNarrows/2=二 +FormatData/zh/DayNarrows/3=三 +FormatData/zh/DayNarrows/4=四 +FormatData/zh/DayNarrows/5=五 +FormatData/zh/DayNarrows/6=六 # bug 7114053 LocaleNames/sq/sq=shqip @@ -7208,16 +7208,16 @@ FormatData/pt/MonthAbbreviations/11=dez. # bug 8021121 -CurrencyNames/lv_LV/EUR=\u20ac +CurrencyNames/lv_LV/EUR=€ # bug # 6192407 -LocaleNames/ko/PT=\ud3ec\ub974\ud22c\uac08 +LocaleNames/ko/PT=포르투갈 # bug 6931564 LocaleNames/sv/ZA=Sydafrika # bug 8027695 -FormatData/sv_SE/latn.NumberPatterns/2=#,##0\u00a0% +FormatData/sv_SE/latn.NumberPatterns/2=#,##0 % # bug 8017142 FormatData/es_CL/TimePatterns/0=HH:mm:ss zzzz @@ -7234,7 +7234,7 @@ FormatData/es_DO/DatePatterns/3=d/M/yy # bug 8055222 -CurrencyNames/lt_LT/EUR=\u20ac +CurrencyNames/lt_LT/EUR=€ # bug 8042126 + missing MonthNarrows data FormatData//MonthNarrows/0=1 @@ -7250,18 +7250,18 @@ FormatData//MonthNarrows/10=11 FormatData//MonthNarrows/11=12 FormatData//MonthNarrows/12= -FormatData/bg/MonthNarrows/0=\u044f -FormatData/bg/MonthNarrows/1=\u0444 -FormatData/bg/MonthNarrows/2=\u043c -FormatData/bg/MonthNarrows/3=\u0430 -FormatData/bg/MonthNarrows/4=\u043c -FormatData/bg/MonthNarrows/5=\u044e -FormatData/bg/MonthNarrows/6=\u044e -FormatData/bg/MonthNarrows/7=\u0430 -FormatData/bg/MonthNarrows/8=\u0441 -FormatData/bg/MonthNarrows/9=\u043e -FormatData/bg/MonthNarrows/10=\u043d -FormatData/bg/MonthNarrows/11=\u0434 +FormatData/bg/MonthNarrows/0=я +FormatData/bg/MonthNarrows/1=ф +FormatData/bg/MonthNarrows/2=м +FormatData/bg/MonthNarrows/3=а +FormatData/bg/MonthNarrows/4=м +FormatData/bg/MonthNarrows/5=ю +FormatData/bg/MonthNarrows/6=ю +FormatData/bg/MonthNarrows/7=а +FormatData/bg/MonthNarrows/8=с +FormatData/bg/MonthNarrows/9=о +FormatData/bg/MonthNarrows/10=н +FormatData/bg/MonthNarrows/11=д FormatData/bg/MonthNarrows/12= FormatData/zh_TW/MonthNarrows/0=1 FormatData/zh_TW/MonthNarrows/1=2 @@ -7289,31 +7289,31 @@ FormatData/it/MonthNarrows/10=N FormatData/it/MonthNarrows/11=D FormatData/it/MonthNarrows/12= -FormatData/ko/MonthNarrows/0=1\uc6d4 -FormatData/ko/MonthNarrows/1=2\uc6d4 -FormatData/ko/MonthNarrows/2=3\uc6d4 -FormatData/ko/MonthNarrows/3=4\uc6d4 -FormatData/ko/MonthNarrows/4=5\uc6d4 -FormatData/ko/MonthNarrows/5=6\uc6d4 -FormatData/ko/MonthNarrows/6=7\uc6d4 -FormatData/ko/MonthNarrows/7=8\uc6d4 -FormatData/ko/MonthNarrows/8=9\uc6d4 -FormatData/ko/MonthNarrows/9=10\uc6d4 -FormatData/ko/MonthNarrows/10=11\uc6d4 -FormatData/ko/MonthNarrows/11=12\uc6d4 +FormatData/ko/MonthNarrows/0=1월 +FormatData/ko/MonthNarrows/1=2월 +FormatData/ko/MonthNarrows/2=3월 +FormatData/ko/MonthNarrows/3=4월 +FormatData/ko/MonthNarrows/4=5월 +FormatData/ko/MonthNarrows/5=6월 +FormatData/ko/MonthNarrows/6=7월 +FormatData/ko/MonthNarrows/7=8월 +FormatData/ko/MonthNarrows/8=9월 +FormatData/ko/MonthNarrows/9=10월 +FormatData/ko/MonthNarrows/10=11월 +FormatData/ko/MonthNarrows/11=12월 FormatData/ko/MonthNarrows/12= -FormatData/uk/MonthNarrows/0=\u0441 -FormatData/uk/MonthNarrows/1=\u043b -FormatData/uk/MonthNarrows/2=\u0431 -FormatData/uk/MonthNarrows/3=\u043a -FormatData/uk/MonthNarrows/4=\u0442 -FormatData/uk/MonthNarrows/5=\u0447 -FormatData/uk/MonthNarrows/6=\u043b -FormatData/uk/MonthNarrows/7=\u0441 -FormatData/uk/MonthNarrows/8=\u0432 -FormatData/uk/MonthNarrows/9=\u0436 -FormatData/uk/MonthNarrows/10=\u043b -FormatData/uk/MonthNarrows/11=\u0433 +FormatData/uk/MonthNarrows/0=с +FormatData/uk/MonthNarrows/1=л +FormatData/uk/MonthNarrows/2=б +FormatData/uk/MonthNarrows/3=к +FormatData/uk/MonthNarrows/4=т +FormatData/uk/MonthNarrows/5=ч +FormatData/uk/MonthNarrows/6=л +FormatData/uk/MonthNarrows/7=с +FormatData/uk/MonthNarrows/8=в +FormatData/uk/MonthNarrows/9=ж +FormatData/uk/MonthNarrows/10=л +FormatData/uk/MonthNarrows/11=г FormatData/uk/MonthNarrows/12= FormatData/lv/MonthNarrows/0=J FormatData/lv/MonthNarrows/1=F @@ -7354,18 +7354,18 @@ FormatData/sk/MonthNarrows/10=n FormatData/sk/MonthNarrows/11=d FormatData/sk/MonthNarrows/12= -FormatData/hi_IN/MonthNarrows/0=\u091c -FormatData/hi_IN/MonthNarrows/1=\u092b\u093c -FormatData/hi_IN/MonthNarrows/2=\u092e\u093e -FormatData/hi_IN/MonthNarrows/3=\u0905 -FormatData/hi_IN/MonthNarrows/4=\u092e -FormatData/hi_IN/MonthNarrows/5=\u091c\u0942 -FormatData/hi_IN/MonthNarrows/6=\u091c\u0941 -FormatData/hi_IN/MonthNarrows/7=\u0905 -FormatData/hi_IN/MonthNarrows/8=\u0938\u093f -FormatData/hi_IN/MonthNarrows/9=\u0905 -FormatData/hi_IN/MonthNarrows/10=\u0928 -FormatData/hi_IN/MonthNarrows/11=\u0926\u093f +FormatData/hi_IN/MonthNarrows/0=ज +FormatData/hi_IN/MonthNarrows/1=फ़ +FormatData/hi_IN/MonthNarrows/2=मा +FormatData/hi_IN/MonthNarrows/3=अ +FormatData/hi_IN/MonthNarrows/4=म +FormatData/hi_IN/MonthNarrows/5=जू +FormatData/hi_IN/MonthNarrows/6=जु +FormatData/hi_IN/MonthNarrows/7=अ +FormatData/hi_IN/MonthNarrows/8=सि +FormatData/hi_IN/MonthNarrows/9=अ +FormatData/hi_IN/MonthNarrows/10=न +FormatData/hi_IN/MonthNarrows/11=दि FormatData/hi_IN/MonthNarrows/12= FormatData/ga/MonthNarrows/0=E FormatData/ga/MonthNarrows/1=F @@ -7419,23 +7419,23 @@ FormatData/cs/MonthNarrows/10=11 FormatData/cs/MonthNarrows/11=12 FormatData/cs/MonthNarrows/12= -FormatData/el/MonthNarrows/0=\u0399 -FormatData/el/MonthNarrows/1=\u03a6 -FormatData/el/MonthNarrows/2=\u039c -FormatData/el/MonthNarrows/3=\u0391 -FormatData/el/MonthNarrows/4=\u039c -FormatData/el/MonthNarrows/5=\u0399 -FormatData/el/MonthNarrows/6=\u0399 -FormatData/el/MonthNarrows/7=\u0391 -FormatData/el/MonthNarrows/8=\u03a3 -FormatData/el/MonthNarrows/9=\u039f -FormatData/el/MonthNarrows/10=\u039d -FormatData/el/MonthNarrows/11=\u0394 +FormatData/el/MonthNarrows/0=Ι +FormatData/el/MonthNarrows/1=Φ +FormatData/el/MonthNarrows/2=Μ +FormatData/el/MonthNarrows/3=Α +FormatData/el/MonthNarrows/4=Μ +FormatData/el/MonthNarrows/5=Ι +FormatData/el/MonthNarrows/6=Ι +FormatData/el/MonthNarrows/7=Α +FormatData/el/MonthNarrows/8=Σ +FormatData/el/MonthNarrows/9=Ο +FormatData/el/MonthNarrows/10=Ν +FormatData/el/MonthNarrows/11=Δ FormatData/el/MonthNarrows/12= FormatData/hu/MonthNarrows/0=J FormatData/hu/MonthNarrows/1=F FormatData/hu/MonthNarrows/2=M -FormatData/hu/MonthNarrows/3=\u00c1 +FormatData/hu/MonthNarrows/3=Á FormatData/hu/MonthNarrows/4=M FormatData/hu/MonthNarrows/5=J FormatData/hu/MonthNarrows/6=J @@ -7459,7 +7459,7 @@ FormatData/es/MonthNarrows/11=D FormatData/es/MonthNarrows/12= FormatData/tr/MonthNarrows/0=O -FormatData/tr/MonthNarrows/1=\u015e +FormatData/tr/MonthNarrows/1=Ş FormatData/tr/MonthNarrows/2=M FormatData/tr/MonthNarrows/3=N FormatData/tr/MonthNarrows/4=M @@ -7530,7 +7530,7 @@ FormatData/is/MonthNarrows/4=M FormatData/is/MonthNarrows/5=J FormatData/is/MonthNarrows/6=J -FormatData/is/MonthNarrows/7=\u00c1 +FormatData/is/MonthNarrows/7=Á FormatData/is/MonthNarrows/8=S FormatData/is/MonthNarrows/9=O FormatData/is/MonthNarrows/10=N @@ -7564,7 +7564,7 @@ FormatData/en/MonthNarrows/12= FormatData/ca/MonthNarrows/0=GN FormatData/ca/MonthNarrows/1=FB -FormatData/ca/MonthNarrows/2=M\u00c7 +FormatData/ca/MonthNarrows/2=MÇ FormatData/ca/MonthNarrows/3=AB FormatData/ca/MonthNarrows/4=MG FormatData/ca/MonthNarrows/5=JN @@ -7601,18 +7601,18 @@ FormatData/fi/MonthNarrows/10=M FormatData/fi/MonthNarrows/11=J FormatData/fi/MonthNarrows/12= -FormatData/mk/MonthNarrows/0=\u0458 -FormatData/mk/MonthNarrows/1=\u0444 -FormatData/mk/MonthNarrows/2=\u043c -FormatData/mk/MonthNarrows/3=\u0430 -FormatData/mk/MonthNarrows/4=\u043c -FormatData/mk/MonthNarrows/5=\u0458 -FormatData/mk/MonthNarrows/6=\u0458 -FormatData/mk/MonthNarrows/7=\u0430 -FormatData/mk/MonthNarrows/8=\u0441 -FormatData/mk/MonthNarrows/9=\u043e -FormatData/mk/MonthNarrows/10=\u043d -FormatData/mk/MonthNarrows/11=\u0434 +FormatData/mk/MonthNarrows/0=ј +FormatData/mk/MonthNarrows/1=ф +FormatData/mk/MonthNarrows/2=м +FormatData/mk/MonthNarrows/3=а +FormatData/mk/MonthNarrows/4=м +FormatData/mk/MonthNarrows/5=ј +FormatData/mk/MonthNarrows/6=ј +FormatData/mk/MonthNarrows/7=а +FormatData/mk/MonthNarrows/8=с +FormatData/mk/MonthNarrows/9=о +FormatData/mk/MonthNarrows/10=н +FormatData/mk/MonthNarrows/11=д FormatData/mk/MonthNarrows/12= FormatData/sr-Latn/MonthNarrows/0=j FormatData/sr-Latn/MonthNarrows/1=f @@ -7627,44 +7627,44 @@ FormatData/sr-Latn/MonthNarrows/10=n FormatData/sr-Latn/MonthNarrows/11=d FormatData/sr-Latn/MonthNarrows/12= -FormatData/th/MonthNarrows/0=\u0e21.\u0e04. -FormatData/th/MonthNarrows/1=\u0e01.\u0e1e. -FormatData/th/MonthNarrows/2=\u0e21\u0e35.\u0e04. -FormatData/th/MonthNarrows/3=\u0e40\u0e21.\u0e22. -FormatData/th/MonthNarrows/4=\u0e1e.\u0e04. -FormatData/th/MonthNarrows/5=\u0e21\u0e34.\u0e22. -FormatData/th/MonthNarrows/6=\u0e01.\u0e04. -FormatData/th/MonthNarrows/7=\u0e2a.\u0e04. -FormatData/th/MonthNarrows/8=\u0e01.\u0e22. -FormatData/th/MonthNarrows/9=\u0e15.\u0e04. -FormatData/th/MonthNarrows/10=\u0e1e.\u0e22. -FormatData/th/MonthNarrows/11=\u0e18.\u0e04. +FormatData/th/MonthNarrows/0=ม.ค. +FormatData/th/MonthNarrows/1=ก.พ. +FormatData/th/MonthNarrows/2=มี.ค. +FormatData/th/MonthNarrows/3=เม.ย. +FormatData/th/MonthNarrows/4=พ.ค. +FormatData/th/MonthNarrows/5=มิ.ย. +FormatData/th/MonthNarrows/6=ก.ค. +FormatData/th/MonthNarrows/7=ส.ค. +FormatData/th/MonthNarrows/8=ก.ย. +FormatData/th/MonthNarrows/9=ต.ค. +FormatData/th/MonthNarrows/10=พ.ย. +FormatData/th/MonthNarrows/11=ธ.ค. FormatData/th/MonthNarrows/12= -FormatData/ar/MonthNarrows/0=\u064a -FormatData/ar/MonthNarrows/1=\u0641 -FormatData/ar/MonthNarrows/2=\u0645 -FormatData/ar/MonthNarrows/3=\u0623 -FormatData/ar/MonthNarrows/4=\u0648 -FormatData/ar/MonthNarrows/5=\u0646 -FormatData/ar/MonthNarrows/6=\u0644 -FormatData/ar/MonthNarrows/7=\u063a -FormatData/ar/MonthNarrows/8=\u0633 -FormatData/ar/MonthNarrows/9=\u0643 -FormatData/ar/MonthNarrows/10=\u0628 -FormatData/ar/MonthNarrows/11=\u062f +FormatData/ar/MonthNarrows/0=ي +FormatData/ar/MonthNarrows/1=ف +FormatData/ar/MonthNarrows/2=م +FormatData/ar/MonthNarrows/3=أ +FormatData/ar/MonthNarrows/4=و +FormatData/ar/MonthNarrows/5=ن +FormatData/ar/MonthNarrows/6=ل +FormatData/ar/MonthNarrows/7=غ +FormatData/ar/MonthNarrows/8=س +FormatData/ar/MonthNarrows/9=ك +FormatData/ar/MonthNarrows/10=ب +FormatData/ar/MonthNarrows/11=د FormatData/ar/MonthNarrows/12= -FormatData/ru/MonthNarrows/0=\u042f -FormatData/ru/MonthNarrows/1=\u0424 -FormatData/ru/MonthNarrows/2=\u041c -FormatData/ru/MonthNarrows/3=\u0410 -FormatData/ru/MonthNarrows/4=\u041c -FormatData/ru/MonthNarrows/5=\u0418 -FormatData/ru/MonthNarrows/6=\u0418 -FormatData/ru/MonthNarrows/7=\u0410 -FormatData/ru/MonthNarrows/8=\u0421 -FormatData/ru/MonthNarrows/9=\u041e -FormatData/ru/MonthNarrows/10=\u041d -FormatData/ru/MonthNarrows/11=\u0414 +FormatData/ru/MonthNarrows/0=Я +FormatData/ru/MonthNarrows/1=Ф +FormatData/ru/MonthNarrows/2=М +FormatData/ru/MonthNarrows/3=А +FormatData/ru/MonthNarrows/4=М +FormatData/ru/MonthNarrows/5=И +FormatData/ru/MonthNarrows/6=И +FormatData/ru/MonthNarrows/7=А +FormatData/ru/MonthNarrows/8=С +FormatData/ru/MonthNarrows/9=О +FormatData/ru/MonthNarrows/10=Н +FormatData/ru/MonthNarrows/11=Д FormatData/ru/MonthNarrows/12= FormatData/ms/MonthNarrows/0=J FormatData/ms/MonthNarrows/1=F @@ -7705,25 +7705,25 @@ FormatData/vi/MonthNarrows/10=11 FormatData/vi/MonthNarrows/11=12 FormatData/vi/MonthNarrows/12= -FormatData/sr/MonthNarrows/0=\u0458 -FormatData/sr/MonthNarrows/1=\u0444 -FormatData/sr/MonthNarrows/2=\u043c -FormatData/sr/MonthNarrows/3=\u0430 -FormatData/sr/MonthNarrows/4=\u043c -FormatData/sr/MonthNarrows/5=\u0458 -FormatData/sr/MonthNarrows/6=\u0458 -FormatData/sr/MonthNarrows/7=\u0430 -FormatData/sr/MonthNarrows/8=\u0441 -FormatData/sr/MonthNarrows/9=\u043e -FormatData/sr/MonthNarrows/10=\u043d -FormatData/sr/MonthNarrows/11=\u0434 +FormatData/sr/MonthNarrows/0=ј +FormatData/sr/MonthNarrows/1=ф +FormatData/sr/MonthNarrows/2=м +FormatData/sr/MonthNarrows/3=а +FormatData/sr/MonthNarrows/4=м +FormatData/sr/MonthNarrows/5=ј +FormatData/sr/MonthNarrows/6=ј +FormatData/sr/MonthNarrows/7=а +FormatData/sr/MonthNarrows/8=с +FormatData/sr/MonthNarrows/9=о +FormatData/sr/MonthNarrows/10=н +FormatData/sr/MonthNarrows/11=д FormatData/sr/MonthNarrows/12= FormatData/mt/MonthNarrows/0=J FormatData/mt/MonthNarrows/1=F FormatData/mt/MonthNarrows/2=M FormatData/mt/MonthNarrows/3=A FormatData/mt/MonthNarrows/4=M -FormatData/mt/MonthNarrows/5=\u0120 +FormatData/mt/MonthNarrows/5=Ġ FormatData/mt/MonthNarrows/6=L FormatData/mt/MonthNarrows/7=A FormatData/mt/MonthNarrows/8=S @@ -7817,33 +7817,33 @@ FormatData/fi/DatePatterns/3=d.M.y # bug #8075173 -FormatData/de/standalone.MonthAbbreviations/2=M\u00e4r +FormatData/de/standalone.MonthAbbreviations/2=Mär # bug #8178872 FormatData/pt_PT/latn.NumberElements/0=, -FormatData/pt_PT/latn.NumberElements/1=\u00a0 +FormatData/pt_PT/latn.NumberElements/1=  FormatData/pt_AO/latn.NumberElements/0=, -FormatData/pt_AO/latn.NumberElements/1=\u00a0 +FormatData/pt_AO/latn.NumberElements/1=  FormatData/pt_CH/latn.NumberElements/0=, -FormatData/pt_CH/latn.NumberElements/1=\u00a0 +FormatData/pt_CH/latn.NumberElements/1=  FormatData/pt_CV/latn.NumberElements/0=, -FormatData/pt_CV/latn.NumberElements/1=\u00a0 +FormatData/pt_CV/latn.NumberElements/1=  FormatData/pt_GQ/latn.NumberElements/0=, -FormatData/pt_GQ/latn.NumberElements/1=\u00a0 +FormatData/pt_GQ/latn.NumberElements/1=  FormatData/pt_MO/latn.NumberElements/0=, -FormatData/pt_MO/latn.NumberElements/1=\u00a0 +FormatData/pt_MO/latn.NumberElements/1=  FormatData/pt_LU/latn.NumberElements/0=, -FormatData/pt_LU/latn.NumberElements/1=\u00a0 +FormatData/pt_LU/latn.NumberElements/1=  FormatData/pt_MZ/latn.NumberElements/0=, -FormatData/pt_MZ/latn.NumberElements/1=\u00a0 +FormatData/pt_MZ/latn.NumberElements/1=  FormatData/pt_ST/latn.NumberElements/0=, -FormatData/pt_ST/latn.NumberElements/1=\u00a0 +FormatData/pt_ST/latn.NumberElements/1=  FormatData/pt_TL/latn.NumberElements/0=, -FormatData/pt_TL/latn.NumberElements/1=\u00a0 +FormatData/pt_TL/latn.NumberElements/1=  FormatData/kea/latn.NumberElements/0=, -FormatData/kea/latn.NumberElements/1=\u00a0 +FormatData/kea/latn.NumberElements/1=  FormatData/kea_CV/latn.NumberElements/0=, -FormatData/kea_CV/latn.NumberElements/1=\u00a0 +FormatData/kea_CV/latn.NumberElements/1=  # bug #8202537 FormatData/ccp_IN/cakm.NumberElements/4=0 @@ -7862,11 +7862,11 @@ # bug # 8295564 FormatData/nb/latn.NumberElements/0=, -FormatData/nb/latn.NumberElements/1=\u00a0 +FormatData/nb/latn.NumberElements/1=  FormatData/no/latn.NumberElements/0=, -FormatData/no/latn.NumberElements/1=\u00a0 +FormatData/no/latn.NumberElements/1=  FormatData/nn/latn.NumberElements/0=, -FormatData/nn/latn.NumberElements/1=\u00a0 +FormatData/nn/latn.NumberElements/1=  # CalendarData consolidated to root CalendarData//firstDayOfWeek=1: AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PT PY SA SG SV TH TT TW UM US VE VI WS YE ZA ZW;2: 001 AD AI AL AM AN AR AT AU AX AZ BA BE BG BM BN BY CH CL CM CN CR CY CZ DE DK EC EE ES FI FJ FO FR GB GE GF GP GR HR HU IE IS IT KG KZ LB LI LK LT LU LV MC MD ME MK MN MQ MY NL NO NZ PL RE RO RS RU SE SI SK SM TJ TM TR UA UY UZ VA VN XK;6: MV;7: AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY @@ -7877,4 +7877,4 @@ TimeZoneNames/en/America\/Chihuahua/1=Central Standard Time # bug 8303472 -LocaleNames/en/TR=T\u00fcrkiye +LocaleNames/en/TR=Türkiye diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/text/resources/LocaleDataTest.java openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleDataTest.java --- openjdk-21-21.0.9+10/test/jdk/sun/text/resources/LocaleDataTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/text/resources/LocaleDataTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -41,7 +41,7 @@ * 8187946 8195478 8181157 8179071 8193552 8202026 8204269 8202537 8208746 * 8209775 8221432 8227127 8230284 8231273 8233579 8234288 8250665 8255086 * 8251317 8274658 8283277 8283805 8265315 8287868 8295564 8284840 8296715 - * 8301206 8303472 + * 8301206 8303472 8357882 8367021 * @summary Verify locale data * @modules java.base/sun.util.resources * @modules jdk.localedata @@ -92,9 +92,8 @@ * pairs delimited by newline characters, with the keys separated from the values * by = signs. The keys are similar in syntax to a Unix pathname, with keys at * successive levels of containment in the resource-data hierarchy separated by - * slashes. The file is in ISO 8859-1 encoding, with control characters and - * non-ASCII characters denoted with backslash-u escape sequences. The program also allows - * blank lines and comment lines to be interspersed with the data. Comment lines + * slashes. The file is in UTF-8 encoding. The program also allows blank lines + * and comment lines to be interspersed with the data. Comment lines * begin with '#'. * * A data file for this test would look something like this:

@@ -103,8 +102,8 @@
  *        LocaleNames//US=United States
  *        LocaleNames//FR=France
  *        FormatData/fr_FR/MonthNames/0=janvier
- *        FormatData/fr_FR/MonthNames/1=f\u00e9vrier
- *        LocaleNames/fr_FR/US=\u00c9tats-Unis
+ *        FormatData/fr_FR/MonthNames/1=février
+ *        LocaleNames/fr_FR/US=États-Unis
  *        LocaleNames/fr_FR/FR=France
* * Second field which designates locale is in the form of: @@ -148,7 +147,7 @@ * date/time format of SimpleDateFormat by making sure that the full date and time * patterns include sufficient data. The test of this is not whether changes were * made to the locale data; it's whether using this data gives round-trip integrity. - * Likewise, changing the currency patterns to use \u00a4 instead of local currency + * Likewise, changing the currency patterns to use ¤ instead of local currency * symbols isn't something that can be tested by this test; instead, you want to * actually format currency values and make sure the proper currency symbol was used. * @@ -164,14 +163,10 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; -import java.io.FilterReader; -import java.io.FilterWriter; -import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import java.io.Reader; -import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; @@ -208,19 +203,17 @@ } else if (args[i].equals("-s") && in == null) - in = new BufferedReader(new EscapeReader(new InputStreamReader(System.in, - "ISO8859_1"))); + in = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); else if (!args[i].startsWith("-") && in == null) - in = new BufferedReader(new EscapeReader(new InputStreamReader(new - FileInputStream(args[i]), "ISO8859_1"))); + in = new BufferedReader(new InputStreamReader(new + FileInputStream(args[i]), StandardCharsets.UTF_8)); } if (in == null) { File localeData = new File(System.getProperty("test.src", "."), DEFAULT_DATAFILE + cldrSuffix); - in = new BufferedReader(new EscapeReader(new InputStreamReader(new - FileInputStream(localeData), "ISO8859_1"))); + in = new BufferedReader(new InputStreamReader(new + FileInputStream(localeData), StandardCharsets.UTF_8)); } - out = new PrintWriter(new EscapeWriter(new OutputStreamWriter(System.out, - "ISO8859_1")), true); + out = new PrintWriter(new OutputStreamWriter(System.out, StandardCharsets.UTF_8), true); // perform the actual test int errorCount = doTest(in, out, writeNewFile); @@ -403,97 +396,3 @@ return true; } } - -class EscapeReader extends FilterReader { - public EscapeReader(Reader in) { - super(in); - } - - public int read() throws IOException { - if (buffer != null) { - String b = buffer.toString(); - int result = b.charAt(0); - if (b.length() > 1) - buffer = new StringBuffer(b.substring(1)); - else - buffer = null; - return result; - } - else { - int result = super.read(); - if (result != '\\') - return result; - else { - buffer = new StringBuffer(); - result = super.read(); - buffer.append((char)result); - if (result == 'u') { - for (int i = 0; i < 4; i++) { - result = super.read(); - if (result == -1) - break; - buffer.append((char)result); - } - String number = buffer.toString().substring(1); - result = Integer.parseInt(number, 16); - buffer = null; - return result; - } - return '\\'; - } - } - } - - public int read(char[] cbuf, int start, int len) throws IOException { - int p = start; - int end = start + len; - int c = 0; - while (c != -1 && p < end) { - c = read(); - if (c != -1) - cbuf[p++] = (char)c; - } - if (c == -1 && p == start) - return -1; - else - return p - start; - } - - private StringBuffer buffer = null; -} - -class EscapeWriter extends FilterWriter { - public EscapeWriter(Writer out) { - super(out); - } - - public void write(int c) throws IOException { - if ((c >= ' ' && c <= '\u007e') || c == '\r' || c == '\n') - super.write(c); - else { - super.write('\\'); - super.write('u'); - String number = Integer.toHexString(c); - if (number.length() < 4) - number = zeros.substring(0, 4 - number.length()) + number; - super.write(number.charAt(0)); - super.write(number.charAt(1)); - super.write(number.charAt(2)); - super.write(number.charAt(3)); - } - } - - public void write(char[] cbuf, int off, int len) throws IOException { - int end = off + len; - while (off < end) - write(cbuf[off++]); - } - - public void write(String str, int off, int len) throws IOException { - int end = off + len; - while (off < end) - write(str.charAt(off++)); - } - - private static String zeros = "0000"; -} diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/tools/jcmd/JcmdBase.java openjdk-21-21.0.10+7/test/jdk/sun/tools/jcmd/JcmdBase.java --- openjdk-21-21.0.9+10/test/jdk/sun/tools/jcmd/JcmdBase.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/tools/jcmd/JcmdBase.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -102,6 +102,8 @@ launcher.addVMArg(vmArg); } } + // Some command output may be lengthy, disable streaming output to avoid deadlocks + launcher.addVMArg("-Djdk.attach.allowStreamingOutput=false"); if (requestToCurrentProcess) { launcher.addToolArg(Long.toString(ProcessTools.getProcessId())); } diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/util/calendar/zi/TestZoneInfo310.java openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/TestZoneInfo310.java --- openjdk-21-21.0.9+10/test/jdk/sun/util/calendar/zi/TestZoneInfo310.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/TestZoneInfo310.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 8007572 8008161 8157792 8212970 8224560 + * @bug 8007572 8008161 8157792 8212970 8224560 8324065 * @summary Test whether the TimeZone generated from JSR310 tzdb is the same * as the one from the tz data from javazic * @modules java.base/sun.util.calendar:+open @@ -173,9 +173,9 @@ ZoneInfoOld zi = toZoneInfoOld(TimeZone.getTimeZone(zid)); ZoneInfoOld ziOLD = (ZoneInfoOld)ZoneInfoOld.getTimeZone(zid); /* - * Temporary ignoring the failing TimeZones which are having zone - * rules defined till year 2037 and/or above and have negative DST - * save time in IANA tzdata. This bug is tracked via JDK-8223388. + * Ignoring the failing TimeZones which have negative DST + * save time in IANA tzdata, as javazic/ZoneInfoOld cannot + * handle the negative DST. * * These are the zones/rules that employ negative DST in vanguard * format (as of 2019a), Palestine added in 2022d: @@ -185,11 +185,6 @@ * - Rule "Namibia" * - Rule "Palestine" * - Zone "Europe/Prague" - * - * Tehran/Iran rule has rules beyond 2037, in which javazic assumes - * to be the last year. Thus javazic's rule is based on year 2037 - * (Mar 20th/Sep 20th are the cutover dates), while the real rule - * has year 2087 where Mar 21st/Sep 21st are the cutover dates. */ if (zid.equals("Africa/Casablanca") || // uses "Morocco" rule zid.equals("Africa/El_Aaiun") || // uses "Morocco" rule @@ -198,10 +193,8 @@ zid.equals("Europe/Bratislava") || // link to "Europe/Prague" zid.equals("Europe/Dublin") || // uses "Eire" rule zid.equals("Europe/Prague") || - zid.equals("Asia/Tehran") || // last rule mismatch zid.equals("Asia/Gaza") || // uses "Palestine" rule - zid.equals("Asia/Hebron") || // uses "Palestine" rule - zid.equals("Iran")) { // last rule mismatch + zid.equals("Asia/Hebron")) { // uses "Palestine" rule continue; } if (! zi.equalsTo(ziOLD)) { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/util/calendar/zi/ZoneInfoOld.java openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/ZoneInfoOld.java --- openjdk-21-21.0.9+10/test/jdk/sun/util/calendar/zi/ZoneInfoOld.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/ZoneInfoOld.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,14 +51,14 @@ * for the {@link #getOffset(int,int,int,int,int,int) getOffset} * method that takes Gregorian calendar date fields. *

- * This table covers transitions from 1900 until 2037 (as of version - * 1.4), Before 1900, it assumes that there was no daylight saving + * This table covers transitions from 1900 until 2100 (as of version + * 23), Before 1900, it assumes that there was no daylight saving * time and the getOffset methods always return the * {@link #getRawOffset} value. No Local Mean Time is supported. If a * specified date is beyond the transition table and this time zone is - * supposed to observe daylight saving time in 2037, it delegates + * supposed to observe daylight saving time in 2100, it delegates * operations to a {@link java.util.SimpleTimeZone SimpleTimeZone} - * object created using the daylight saving time schedule as of 2037. + * object created using the daylight saving time schedule as of 2100. *

* The date items, transitions, GMT offset(s), etc. are read from a database * file. See {@link ZoneInfoFile} for details. diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/util/calendar/zi/Zoneinfo.java openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/Zoneinfo.java --- openjdk-21-21.0.9+10/test/jdk/sun/util/calendar/zi/Zoneinfo.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/util/calendar/zi/Zoneinfo.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ class Zoneinfo { private static final int minYear = 1900; - private static final int maxYear = 2037; + private static final int maxYear = 2100; private static final long minTime = Time.getLocalTime(minYear, Month.JANUARY, 1, 0); private static int startYear = minYear; private static int endYear = maxYear; diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/util/logging/SourceClassName.java openjdk-21-21.0.10+7/test/jdk/sun/util/logging/SourceClassName.java --- openjdk-21-21.0.9+10/test/jdk/sun/util/logging/SourceClassName.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/util/logging/SourceClassName.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,17 +33,21 @@ * @run main/othervm SourceClassName */ +import java.util.Locale; import java.util.logging.*; import java.io.*; import sun.util.logging.PlatformLogger; public class SourceClassName { public static void main(String[] args) throws Exception { + Locale savedLocale = Locale.getDefault(); + Locale.setDefault(Locale.US); File dir = new File(System.getProperty("user.dir", ".")); File log = new File(dir, "testlog.txt"); PrintStream logps = new PrintStream(log); writeLogRecords(logps); checkLogRecords(log); + Locale.setDefault(savedLocale); } private static void writeLogRecords(PrintStream logps) throws Exception { diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/util/resources/TimeZone/Bug4640234.java openjdk-21-21.0.10+7/test/jdk/sun/util/resources/TimeZone/Bug4640234.java --- openjdk-21-21.0.9+10/test/jdk/sun/util/resources/TimeZone/Bug4640234.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/util/resources/TimeZone/Bug4640234.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /** * @test - * @bug 4640234 4946057 4938151 4873691 5023181 + * @bug 4640234 4946057 4938151 4873691 5023181 8347841 * @summary Verifies the translation of time zone names, this test will catch * presence of country name for english and selected locales for all * ISO country codes. @@ -42,6 +42,8 @@ import java.text.MessageFormat; import java.text.SimpleDateFormat; +import java.time.ZoneId; +import java.util.Arrays; import java.util.Date; import java.util.Locale; import java.util.Enumeration; @@ -49,6 +51,7 @@ import java.util.Map; import java.util.ResourceBundle; import java.util.TimeZone; +import java.util.function.Predicate; import sun.util.resources.LocaleData; @@ -83,7 +86,9 @@ StringBuffer errors = new StringBuffer(""); StringBuffer warnings = new StringBuffer(""); - String[] timezones = TimeZone.getAvailableIDs(); + String[] timezones = Arrays.stream(TimeZone.getAvailableIDs()) + .filter(Predicate.not(ZoneId.SHORT_IDS::containsKey)) + .toArray(String[]::new); String[] countries = locEn.getISOCountries(); String[] languages = locEn.getISOLanguages(); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/util/resources/cldr/Bug8134384.java openjdk-21-21.0.10+7/test/jdk/sun/util/resources/cldr/Bug8134384.java --- openjdk-21-21.0.9+10/test/jdk/sun/util/resources/cldr/Bug8134384.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/util/resources/cldr/Bug8134384.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 8134384 8234347 8236548 + * @bug 8134384 8234347 8236548 8347841 * @summary Tests CLDR TimeZoneNames has English names for all tzids * @run main/othervm -Djava.locale.providers=CLDR Bug8134384 */ @@ -38,6 +38,9 @@ try { for (String tz : TimeZone.getAvailableIDs() ) { + if (ZoneId.SHORT_IDS.containsKey(tz)) { + continue; + } TimeZone.setDefault(TimeZone.getTimeZone(tz)); // Summer solstice String date1 = Date.from(Instant.parse("2015-06-21T00:00:00.00Z")).toString(); diff -Nru openjdk-21-21.0.9+10/test/jdk/sun/util/resources/cldr/Bug8202764.java openjdk-21-21.0.10+7/test/jdk/sun/util/resources/cldr/Bug8202764.java --- openjdk-21-21.0.9+10/test/jdk/sun/util/resources/cldr/Bug8202764.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/sun/util/resources/cldr/Bug8202764.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 8202764 + * @bug 8202764 8347841 * @modules jdk.localedata * @summary Checks time zone names are consistent with aliased ids, * between DateFormatSymbols.getZoneStrings() and getDisplayName() @@ -49,6 +49,7 @@ public void testAliasedTZs() { Set zoneIds = ZoneId.getAvailableZoneIds(); Arrays.stream(DateFormatSymbols.getInstance(Locale.US).getZoneStrings()) + .filter(zone -> !ZoneId.SHORT_IDS.containsKey(zone[0])) .forEach(zone -> { System.out.println(zone[0]); TimeZone tz = TimeZone.getTimeZone(zone[0]); diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/apps/UseShutdownHook.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/apps/UseShutdownHook.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/apps/UseShutdownHook.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/apps/UseShutdownHook.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +public class UseShutdownHook { + + public static void main(String[] args) throws InterruptedException { + trace("Started"); + + var outputFile = Path.of(args[0]); + trace(String.format("Write output in [%s] file", outputFile)); + + var shutdownTimeoutSeconds = Integer.parseInt(args[1]); + trace(String.format("Automatically shutdown the app in %ss", shutdownTimeoutSeconds)); + + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + output(outputFile, "shutdown hook executed"); + } + }); + + var startTime = System.currentTimeMillis(); + var lock = new Object(); + do { + synchronized (lock) { + lock.wait(shutdownTimeoutSeconds * 1000); + } + } while ((System.currentTimeMillis() - startTime) < (shutdownTimeoutSeconds * 1000)); + + output(outputFile, "exit"); + } + + private static void output(Path outputFilePath, String msg) { + + trace(String.format("Writing [%s] into [%s]", msg, outputFilePath)); + + try { + Files.createDirectories(outputFilePath.getParent()); + Files.writeString(outputFilePath, msg, StandardOpenOption.APPEND, StandardOpenOption.CREATE); + } catch (IOException ex) { + throw new UncheckedIOException(ex); + } + } + + private static void trace(String msg) { + Date time = new Date(System.currentTimeMillis()); + msg = String.format("UseShutdownHook [%s]: %s", SDF.format(time), msg); + System.out.println(msg); + try { + Files.write(traceFile, List.of(msg), StandardOpenOption.APPEND, StandardOpenOption.CREATE); + } catch (IOException ex) { + throw new UncheckedIOException(ex); + } + } + + private static final SimpleDateFormat SDF = new SimpleDateFormat("HH:mm:ss.SSS"); + + private static final Path traceFile = Path.of(System.getProperty("jpackage.test.trace-file")); +} diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Annotations.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Annotations.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Annotations.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Annotations.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import jdk.internal.util.OperatingSystem; public class Annotations { @@ -43,6 +44,14 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Test { + + OperatingSystem[] ifOS() default { + OperatingSystem.LINUX, + OperatingSystem.WINDOWS, + OperatingSystem.MACOS + }; + + OperatingSystem[] ifNotOS() default {}; } @Retention(RetentionPolicy.RUNTIME) @@ -51,6 +60,14 @@ public @interface Parameter { String[] value(); + + OperatingSystem[] ifOS() default { + OperatingSystem.LINUX, + OperatingSystem.WINDOWS, + OperatingSystem.MACOS + }; + + OperatingSystem[] ifNotOS() default {}; } @Retention(RetentionPolicy.RUNTIME) @@ -62,6 +79,37 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) + @Repeatable(ParameterSupplierGroup.class) + public @interface ParameterSupplier { + + String value(); + + OperatingSystem[] ifOS() default { + OperatingSystem.LINUX, + OperatingSystem.WINDOWS, + OperatingSystem.MACOS + }; + + OperatingSystem[] ifNotOS() default {}; + } + + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) + public @interface ParameterSupplierGroup { + + ParameterSupplier[] value(); + } + + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.METHOD) public @interface Parameters { + + OperatingSystem[] ifOS() default { + OperatingSystem.LINUX, + OperatingSystem.WINDOWS, + OperatingSystem.MACOS + }; + + OperatingSystem[] ifNotOS() default {}; } } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/CfgFile.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/CfgFile.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/CfgFile.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/CfgFile.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,61 +25,114 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Stream; public final class CfgFile { - public String getValue(String section, String key) { - Objects.requireNonNull(section); - Objects.requireNonNull(key); - - Map entries = data.get(section); - TKit.assertTrue(entries != null, String.format( - "Check section [%s] is found in [%s] cfg file", section, id)); + public String getValue(String sectionName, String key) { + var section = getSection(sectionName); + TKit.assertTrue(section != null, String.format( + "Check section [%s] is found in [%s] cfg file", sectionName, id)); - String value = entries.get(key); + String value = section.getValue(key); TKit.assertNotNull(value, String.format( "Check key [%s] is found in [%s] section of [%s] cfg file", key, - section, id)); + sectionName, id)); return value; } - public String getValueUnchecked(String section, String key) { - Objects.requireNonNull(section); - Objects.requireNonNull(key); + public String getValueUnchecked(String sectionName, String key) { + var section = getSection(sectionName); + if (section != null) { + return section.getValue(key); + } else { + return null; + } + } + + public CfgFile addValue(String sectionName, String key, String value) { + var section = getSection(sectionName); + if (section == null) { + section = new Section(sectionName, new ArrayList<>()); + data.add(section); + } + section.data.add(Map.entry(key, value)); + return this; + } + + public CfgFile add(CfgFile other) { + return combine(this, other); + } + + public CfgFile() { + this(new ArrayList<>(), "*"); + } - return Optional.ofNullable(data.get(section)).map(v -> v.get(key)).orElse( - null); + public static CfgFile combine(CfgFile base, CfgFile mods) { + var cfgFile = new CfgFile(new ArrayList<>(), "*"); + for (var src : List.of(base, mods)) { + for (var section : src.data) { + for (var kvp : section.data) { + cfgFile.addValue(section.name, kvp.getKey(), kvp.getValue()); + } + } + } + return cfgFile; } - private CfgFile(Map> data, String id) { + private CfgFile(List

data, String id) { this.data = data; this.id = id; } - public static CfgFile readFromFile(Path path) throws IOException { + public CfgFile save(Path path) { + var lines = data.stream().flatMap(section -> { + return Stream.concat( + Stream.of(String.format("[%s]", section.name)), + section.data.stream().map(kvp -> { + return String.format("%s=%s", kvp.getKey(), kvp.getValue()); + })); + }); + TKit.createTextFile(path, lines); + return this; + } + + private Section getSection(String name) { + Objects.requireNonNull(name); + for (var section : data.reversed()) { + if (name.equals(section.name)) { + return section; + } + } + return null; + } + + public static CfgFile load(Path path) throws IOException { TKit.trace(String.format("Read [%s] jpackage cfg file", path)); final Pattern sectionBeginRegex = Pattern.compile( "\\s*\\[([^]]*)\\]\\s*"); final Pattern keyRegex = Pattern.compile( "\\s*([^=]*)=(.*)" ); - Map> result = new HashMap<>(); + List
sections = new ArrayList<>(); String currentSectionName = null; - Map currentSection = new HashMap<>(); + List> currentSection = new ArrayList<>(); for (String line : Files.readAllLines(path)) { Matcher matcher = sectionBeginRegex.matcher(line); if (matcher.find()) { if (currentSectionName != null) { - result.put(currentSectionName, Collections.unmodifiableMap( - new HashMap<>(currentSection))); + sections.add(new Section(currentSectionName, + Collections.unmodifiableList(new ArrayList<>( + currentSection)))); } currentSectionName = matcher.group(1); currentSection.clear(); @@ -88,19 +141,31 @@ matcher = keyRegex.matcher(line); if (matcher.find()) { - currentSection.put(matcher.group(1), matcher.group(2)); - continue; + currentSection.add(Map.entry(matcher.group(1), matcher.group(2))); } } if (!currentSection.isEmpty()) { - result.put(Optional.ofNullable(currentSectionName).orElse(""), - Collections.unmodifiableMap(currentSection)); + sections.add(new Section( + Optional.ofNullable(currentSectionName).orElse(""), + Collections.unmodifiableList(currentSection))); } - return new CfgFile(Collections.unmodifiableMap(result), path.toString()); + return new CfgFile(sections, path.toString()); + } + + private static record Section(String name, List> data) { + String getValue(String key) { + Objects.requireNonNull(key); + for (var kvp : data.reversed()) { + if (key.equals(kvp.getKey())) { + return kvp.getValue(); + } + } + return null; + } } - private final Map> data; + private final List
data; private final String id; } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Executor.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Executor.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Executor.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Executor.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,6 +36,7 @@ import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.function.Supplier; import java.util.regex.Pattern; @@ -53,7 +54,6 @@ public Executor() { saveOutputType = new HashSet<>(Set.of(SaveOutputType.NONE)); - removePath = false; winEnglishOutput = false; } @@ -77,6 +77,10 @@ return setToolProvider(v.asToolProvider()); } + public Optional getExecutable() { + return Optional.ofNullable(executable); + } + public Executor setDirectory(Path v) { directory = v; return this; @@ -86,8 +90,8 @@ return setExecutable(v.getPath()); } - public Executor setRemovePath(boolean value) { - removePath = value; + public Executor removeEnvVar(String envVarName) { + removeEnvVars.add(Objects.requireNonNull(envVarName)); return this; } @@ -174,10 +178,10 @@ return this; } - public class Result { + public record Result(int exitCode, List output, Supplier cmdline) { - Result(int exitCode) { - this.exitCode = exitCode; + public Result { + Objects.requireNonNull(cmdline); } public String getFirstLineOfOutput() { @@ -188,14 +192,10 @@ return output; } - public String getPrintableCommandLine() { - return Executor.this.getPrintableCommandLine(); - } - public Result assertExitCodeIs(int expectedExitCode) { TKit.assertEquals(expectedExitCode, exitCode, String.format( "Check command %s exited with %d code", - getPrintableCommandLine(), expectedExitCode)); + cmdline.get(), expectedExitCode)); return this; } @@ -206,9 +206,6 @@ public int getExitCode() { return exitCode; } - - final int exitCode; - private List output; } public Result executeWithoutExitCodeCheck() { @@ -372,10 +369,12 @@ builder.directory(directory.toFile()); sb.append(String.format("; in directory [%s]", directory)); } - if (removePath) { - // run this with cleared Path in Environment - TKit.trace("Clearing PATH in environment"); - builder.environment().remove("PATH"); + if (!removeEnvVars.isEmpty()) { + final var envComm = Comm.compare(builder.environment().keySet(), removeEnvVars); + builder.environment().keySet().removeAll(envComm.common()); + envComm.common().forEach(envVar -> { + TKit.trace(String.format("Clearing %s in environment", envVar)); + }); } trace("Execute " + sb.toString() + "..."); @@ -406,28 +405,34 @@ } } - Result reply = new Result(process.waitFor()); - trace("Done. Exit code: " + reply.exitCode); + final int exitCode = process.waitFor(); + trace("Done. Exit code: " + exitCode); + final List output; if (outputLines != null) { - reply.output = Collections.unmodifiableList(outputLines); + output = Collections.unmodifiableList(outputLines); + } else { + output = null; } - return reply; + return createResult(exitCode, output); } - private Result runToolProvider(PrintStream out, PrintStream err) { + private int runToolProvider(PrintStream out, PrintStream err) { trace("Execute " + getPrintableCommandLine() + "..."); - Result reply = new Result(toolProvider.run(out, err, args.toArray( - String[]::new))); - trace("Done. Exit code: " + reply.exitCode); - return reply; + final int exitCode = toolProvider.run(out, err, args.toArray( + String[]::new)); + trace("Done. Exit code: " + exitCode); + return exitCode; } + private Result createResult(int exitCode, List output) { + return new Result(exitCode, output, this::getPrintableCommandLine); + } private Result runToolProvider() throws IOException { if (!withSavedOutput()) { if (saveOutputType.contains(SaveOutputType.DUMP)) { - return runToolProvider(System.out, System.err); + return createResult(runToolProvider(System.out, System.err), null); } PrintStream nullPrintStream = new PrintStream(new OutputStream() { @@ -436,36 +441,40 @@ // Nop } }); - return runToolProvider(nullPrintStream, nullPrintStream); + return createResult(runToolProvider(nullPrintStream, nullPrintStream), null); } try (ByteArrayOutputStream buf = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(buf)) { - Result reply = runToolProvider(ps, ps); + final var exitCode = runToolProvider(ps, ps); ps.flush(); + final List output; try (BufferedReader bufReader = new BufferedReader(new StringReader( buf.toString()))) { if (saveOutputType.contains(SaveOutputType.FIRST_LINE)) { String firstLine = bufReader.lines().findFirst().orElse(null); if (firstLine != null) { - reply.output = List.of(firstLine); + output = List.of(firstLine); + } else { + output = null; } } else if (saveOutputType.contains(SaveOutputType.FULL)) { - reply.output = bufReader.lines().collect( - Collectors.toUnmodifiableList()); + output = bufReader.lines().collect(Collectors.toUnmodifiableList()); + } else { + output = null; } if (saveOutputType.contains(SaveOutputType.DUMP)) { Stream lines; if (saveOutputType.contains(SaveOutputType.FULL)) { - lines = reply.output.stream(); + lines = output.stream(); } else { lines = bufReader.lines(); } lines.forEach(System.out::println); } } - return reply; + return createResult(exitCode, output); } } @@ -504,7 +513,7 @@ private Path executable; private Set saveOutputType; private Path directory; - private boolean removePath; + private Set removeEnvVars = new HashSet<>(); private boolean winEnglishOutput; private String winTmpDir = null; diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Functional.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Functional.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Functional.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Functional.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -151,12 +151,16 @@ @SuppressWarnings("unchecked") public static RuntimeException rethrowUnchecked(Throwable throwable) throws ExceptionBox { - if (throwable instanceof RuntimeException) { - throw (RuntimeException)throwable; + if (throwable instanceof RuntimeException err) { + throw err; } - if (throwable instanceof InvocationTargetException) { - throw new ExceptionBox(throwable.getCause()); + if (throwable instanceof Error err) { + throw err; + } + + if (throwable instanceof InvocationTargetException err) { + throw rethrowUnchecked(err.getCause()); } throw new ExceptionBox(throwable); diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,7 +22,6 @@ */ package jdk.jpackage.test; -import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -57,15 +56,10 @@ private JarBuilder prepareSources(Path srcDir) throws IOException { final String srcClassName = appDesc.srcClassName(); - - final String qualifiedClassName = appDesc.className(); - - final String className = qualifiedClassName.substring( - qualifiedClassName.lastIndexOf('.') + 1); + final String className = appDesc.shortClassName(); final String packageName = appDesc.packageName(); - final Path srcFile = srcDir.resolve(Path.of(String.join( - File.separator, qualifiedClassName.split("\\.")) + ".java")); + final Path srcFile = srcDir.resolve(appDesc.classNameAsPath(".java")); Files.createDirectories(srcFile.getParent()); JarBuilder jarBuilder = createJarBuilder().addSourceFile(srcFile); @@ -351,22 +345,12 @@ } - public final static class AppOutputVerifier { + public static final class AppOutputVerifier { AppOutputVerifier(Path helloAppLauncher) { this.launcherPath = helloAppLauncher; this.outputFilePath = TKit.workDir().resolve(OUTPUT_FILENAME); this.params = new HashMap<>(); this.defaultLauncherArgs = new ArrayList<>(); - - if (TKit.isWindows()) { - // When running app launchers on Windows, clear users environment (JDK-8254920) - removePath(true); - } - } - - public AppOutputVerifier removePath(boolean v) { - removePath = v; - return this; } public AppOutputVerifier saveOutput(boolean v) { @@ -448,10 +432,7 @@ if (launcherNoExit) { return getExecutor(args).executeWithoutExitCodeCheck(); } else { - final int attempts = 3; - final int waitBetweenAttemptsSeconds = 5; - return getExecutor(args).executeAndRepeatUntilExitCode(expectedExitCode, attempts, - waitBetweenAttemptsSeconds); + return HelloApp.execute(expectedExitCode, getExecutor(args)); } } @@ -470,17 +451,17 @@ } final List launcherArgs = List.of(args); - return new Executor() + final var executor = new Executor() .setDirectory(outputFile.getParent()) .saveOutput(saveOutput) .dumpOutput() - .setRemovePath(removePath) .setExecutable(executablePath) - .addArguments(launcherArgs); + .addArguments(List.of(args)); + + return configureEnvironment(executor); } private boolean launcherNoExit; - private boolean removePath; private boolean saveOutput; private final Path launcherPath; private Path outputFilePath; @@ -493,13 +474,39 @@ return new AppOutputVerifier(helloAppLauncher); } - final static String OUTPUT_FILENAME = "appOutput.txt"; + public static Executor.Result configureAndExecute(int expectedExitCode, Executor executor) { + return execute(expectedExitCode, configureEnvironment(executor)); + } + + private static Executor.Result execute(int expectedExitCode, Executor executor) { + if (TKit.isLinux()) { + final int attempts = 3; + final int waitBetweenAttemptsSeconds = 5; + return executor.executeAndRepeatUntilExitCode(expectedExitCode, attempts, + waitBetweenAttemptsSeconds); + } else { + return executor.execute(expectedExitCode); + } + } + + private static Executor configureEnvironment(Executor executor) { + if (CLEAR_JAVA_ENV_VARS) { + executor.removeEnvVar("JAVA_TOOL_OPTIONS"); + executor.removeEnvVar("_JAVA_OPTIONS"); + } + return executor; + } + + static final String OUTPUT_FILENAME = "appOutput.txt"; private final JavaAppDesc appDesc; private static final Path HELLO_JAVA = TKit.TEST_SRC_ROOT.resolve( "apps/Hello.java"); - private final static String CLASS_NAME = HELLO_JAVA.getFileName().toString().split( + private static final String CLASS_NAME = HELLO_JAVA.getFileName().toString().split( "\\.", 2)[0]; + + private static final boolean CLEAR_JAVA_ENV_VARS = Optional.ofNullable( + TKit.getConfigProperty("clear-app-launcher-java-env-vars")).map(Boolean::parseBoolean).orElse(false); } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java 2026-01-15 15:34:19.000000000 +0000 @@ -59,7 +59,7 @@ * anything. The simplest is to compile test application and pack in a jar for * use on jpackage command line. */ -public final class JPackageCommand extends CommandArguments { +public class JPackageCommand extends CommandArguments { public JPackageCommand() { prerequisiteActions = new Actions(); @@ -622,8 +622,18 @@ } public boolean isFakeRuntime(String msg) { - Path runtimeDir = appRuntimeDirectory(); + if (isFakeRuntime()) { + // Fake runtime + Path runtimeDir = appRuntimeDirectory(); + TKit.trace(String.format( + "%s because application runtime directory [%s] is incomplete", + msg, runtimeDir)); + return true; + } + return false; + } + private boolean isFakeRuntime() { final Collection criticalRuntimeFiles; if (TKit.isWindows()) { criticalRuntimeFiles = WindowsHelper.CRITICAL_RUNTIME_FILES; @@ -635,16 +645,9 @@ throw TKit.throwUnknownPlatformError(); } - if (!criticalRuntimeFiles.stream().anyMatch(v -> { - return runtimeDir.resolve(v).toFile().exists(); - })) { - // Fake runtime - TKit.trace(String.format( - "%s because application runtime directory [%s] is incomplete", - msg, runtimeDir)); - return true; - } - return false; + Path runtimeDir = appRuntimeDirectory(); + return !criticalRuntimeFiles.stream().map(runtimeDir::resolve).allMatch( + Files::exists); } public boolean canRunLauncher(String msg) { @@ -709,6 +712,13 @@ return this; } + public JPackageCommand ignoreFakeRuntime() { + if (isFakeRuntime()) { + ignoreDefaultRuntime(true); + } + return this; + } + public JPackageCommand ignoreDefaultVerbose(boolean v) { verifyMutable(); ignoreDefaultVerbose = v; @@ -791,7 +801,7 @@ .createExecutor() .execute(expectedExitCode); - if (result.exitCode == 0) { + if (result.exitCode() == 0) { executeVerifyActions(); } @@ -1000,7 +1010,7 @@ if (isRuntime()) { return null; } - return ThrowingFunction.toFunction(CfgFile::readFromFile).apply( + return ThrowingFunction.toFunction(CfgFile::load).apply( appLauncherCfgPath(launcherName)); } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java 2026-01-15 15:34:19.000000000 +0000 @@ -22,8 +22,9 @@ */ package jdk.jpackage.test; -import java.io.File; import java.nio.file.Path; +import java.util.Objects; +import java.util.stream.Stream; public final class JavaAppDesc { @@ -73,9 +74,18 @@ return qualifiedClassName; } + public String shortClassName() { + return qualifiedClassName.substring(qualifiedClassName.lastIndexOf('.') + 1); + } + + Path classNameAsPath(String extension) { + final String[] pathComponents = qualifiedClassName.split("\\."); + pathComponents[pathComponents.length - 1] = shortClassName() + extension; + return Stream.of(pathComponents).map(Path::of).reduce(Path::resolve).get(); + } + public Path classFilePath() { - return Path.of(qualifiedClassName.replace(".", File.separator) - + ".class"); + return classNameAsPath(".class"); } public String moduleName() { @@ -125,6 +135,48 @@ } @Override + public int hashCode() { + int hash = 5; + hash = 79 * hash + Objects.hashCode(this.srcJavaPath); + hash = 79 * hash + Objects.hashCode(this.qualifiedClassName); + hash = 79 * hash + Objects.hashCode(this.moduleName); + hash = 79 * hash + Objects.hashCode(this.bundleFileName); + hash = 79 * hash + Objects.hashCode(this.moduleVersion); + hash = 79 * hash + (this.withMainClass ? 1 : 0); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final JavaAppDesc other = (JavaAppDesc) obj; + if (this.withMainClass != other.withMainClass) { + return false; + } + if (!Objects.equals(this.qualifiedClassName, other.qualifiedClassName)) { + return false; + } + if (!Objects.equals(this.moduleName, other.moduleName)) { + return false; + } + if (!Objects.equals(this.bundleFileName, other.bundleFileName)) { + return false; + } + if (!Objects.equals(this.moduleVersion, other.moduleVersion)) { + return false; + } + return Objects.equals(this.srcJavaPath, other.srcJavaPath); + } + + @Override public String toString() { StringBuilder sb = new StringBuilder(); if (srcJavaPath != null) { @@ -216,7 +268,9 @@ components[0].length() - 1); desc.setWithMainClass(true); } - desc.setClassName(components[0]); + if (!components[0].isEmpty()) { + desc.setClassName(components[0]); + } if (components.length == 2) { desc.setModuleVersion(components[1]); } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherAsServiceVerifier.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,7 +41,7 @@ public final class LauncherAsServiceVerifier { - public final static class Builder { + public static final class Builder { public Builder setExpectedValue(String v) { expectedValue = v; @@ -204,7 +204,7 @@ if (cmd.isPackageUnpacked(msg) || cmd.isFakeRuntime(msg)) { return false; } - var cfgFile = CfgFile.readFromFile(cmd.appLauncherCfgPath(launcherName)); + var cfgFile = CfgFile.load(cmd.appLauncherCfgPath(launcherName)); if (!expectedValue.equals(cfgFile.getValueUnchecked("ArgOptions", "arguments"))) { TKit.trace(String.format( @@ -338,6 +338,6 @@ private final String launcherName; private final Path appOutputFileName; - final static Set SUPPORTED_PACKAGES = Stream.of(LINUX, WINDOWS, + static final Set SUPPORTED_PACKAGES = Stream.of(LINUX, WINDOWS, Set.of(MAC_PKG)).flatMap(x -> x.stream()).collect(Collectors.toSet()); } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LinuxHelper.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LinuxHelper.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LinuxHelper.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LinuxHelper.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -40,6 +40,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; +import jdk.jpackage.internal.ApplicationLayout; import jdk.jpackage.internal.IOUtils; import jdk.jpackage.test.Functional.ThrowingConsumer; import jdk.jpackage.test.PackageTest.PackageHandlers; @@ -399,6 +400,15 @@ private static void verifyDesktopFile(JPackageCommand cmd, Path desktopFile) throws IOException { TKit.trace(String.format("Check [%s] file BEGIN", desktopFile)); + + var launcherName = Stream.of(List.of(cmd.name()), cmd.addLauncherNames()).flatMap(List::stream).filter(name -> { + return getDesktopFile(cmd, name).equals(desktopFile); + }).findAny(); + if (!cmd.hasArgument("--app-image")) { + TKit.assertTrue(launcherName.isPresent(), + "Check the desktop file corresponds to one of app launchers"); + } + List lines = Files.readAllLines(desktopFile); TKit.assertEquals("[Desktop Entry]", lines.get(0), "Check file header"); @@ -428,7 +438,7 @@ "Check value of [%s] key", key)); } - // Verify value of `Exec` property in .desktop files are escaped if required + // Verify the value of `Exec` key is escaped if required String launcherPath = data.get("Exec"); if (Pattern.compile("\\s").matcher(launcherPath).find()) { TKit.assertTrue(launcherPath.startsWith("\"") @@ -437,10 +447,25 @@ launcherPath = launcherPath.substring(1, launcherPath.length() - 1); } - Stream.of(launcherPath, data.get("Icon")) - .map(Path::of) - .map(cmd::pathToUnpackedPackageFile) - .forEach(TKit::assertFileExists); + if (launcherName.isPresent()) { + TKit.assertEquals(launcherPath, cmd.pathToPackageFile( + cmd.appLauncherPath(launcherName.get())).toString(), + String.format( + "Check the value of [Exec] key references [%s] app launcher", + launcherName.get())); + } + + for (var e : List.>, Function>>of( + Map.entry(Map.entry("Exec", Optional.of(launcherPath)), ApplicationLayout::launchersDirectory), + Map.entry(Map.entry("Icon", Optional.empty()), ApplicationLayout::destktopIntegrationDirectory))) { + var path = e.getKey().getValue().or(() -> Optional.of(data.get( + e.getKey().getKey()))).map(Path::of).get(); + TKit.assertFileExists(cmd.pathToUnpackedPackageFile(path)); + Path expectedDir = cmd.pathToPackageFile(e.getValue().apply(cmd.appLayout())); + TKit.assertTrue(path.getParent().equals(expectedDir), String.format( + "Check the value of [%s] key references a file in [%s] folder", + e.getKey().getKey(), expectedDir)); + } TKit.trace(String.format("Check [%s] file END", desktopFile)); } @@ -720,10 +745,10 @@ private static Map archs; - private final static Pattern XDG_CMD_ICON_SIZE_PATTERN = Pattern.compile("\\s--size\\s+(\\d+)\\b"); + private static final Pattern XDG_CMD_ICON_SIZE_PATTERN = Pattern.compile("\\s--size\\s+(\\d+)\\b"); // Values grabbed from https://linux.die.net/man/1/xdg-icon-resource - private final static Set XDG_CMD_VALID_ICON_SIZES = Set.of(16, 22, 32, 48, 64, 128); + private static final Set XDG_CMD_VALID_ICON_SIZES = Set.of(16, 22, 32, 48, 64, 128); - private final static Method getServiceUnitFileName = initGetServiceUnitFileName(); + private static final Method getServiceUnitFileName = initGetServiceUnitFileName(); } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,11 +23,17 @@ package jdk.jpackage.test; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayDeque; import java.util.ArrayList; +import java.util.Comparator; +import java.util.Deque; import java.util.List; import java.util.function.Function; import java.util.function.Predicate; -import java.util.stream.Collectors; +import static java.util.stream.Collectors.toCollection; +import java.util.stream.Stream; import static jdk.jpackage.test.TestBuilder.CMDLINE_ARG_PREFIX; @@ -36,7 +42,9 @@ boolean listTests = false; List tests = new ArrayList<>(); try (TestBuilder testBuilder = new TestBuilder(tests::add)) { - for (var arg : args) { + Deque argsAsList = new ArrayDeque<>(List.of(args)); + while (!argsAsList.isEmpty()) { + var arg = argsAsList.pop(); TestBuilder.trace(String.format("Parsing [%s]...", arg)); if ((CMDLINE_ARG_PREFIX + "list").equals(arg)) { @@ -44,6 +52,29 @@ continue; } + if (arg.startsWith("@")) { + // Command file + // @=args will read arguments from the "args" file, one argument per line + // @args will read arguments from the "args" file, splitting lines into arguments at whitespaces + arg = arg.substring(1); + var oneArgPerLine = arg.startsWith("="); + if (oneArgPerLine) { + arg = arg.substring(1); + } + + var newArgsStream = Files.readAllLines(Path.of(arg)).stream(); + if (!oneArgPerLine) { + newArgsStream.map(line -> { + return Stream.of(line.split("\\s+")); + }).flatMap(x -> x); + } + + var newArgs = newArgsStream.collect(toCollection(ArrayDeque::new)); + newArgs.addAll(argsAsList); + argsAsList = newArgs; + continue; + } + boolean success = false; try { testBuilder.processCmdLineArg(arg); @@ -62,12 +93,11 @@ // Order tests by their full names to have stable test sequence. List orderedTests = tests.stream() - .sorted((a, b) -> a.fullName().compareTo(b.fullName())) - .collect(Collectors.toList()); + .sorted(Comparator.comparing(TestInstance::fullName)).toList(); if (listTests) { // Just list the tests - orderedTests.stream().forEach(test -> System.out.println(String.format( + orderedTests.forEach(test -> System.out.println(String.format( "%s; workDir=[%s]", test.fullName(), test.workDir()))); return; } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MethodCall.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MethodCall.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MethodCall.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MethodCall.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,34 +22,33 @@ */ package jdk.jpackage.test; +import java.lang.reflect.Array; import java.lang.reflect.Constructor; +import java.lang.reflect.Executable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; -import java.util.List; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.function.Supplier; -import java.util.stream.Collectors; +import java.util.function.Predicate; +import java.util.stream.IntStream; import java.util.stream.Stream; import jdk.jpackage.test.Functional.ThrowingConsumer; import jdk.jpackage.test.TestInstance.TestDesc; class MethodCall implements ThrowingConsumer { - MethodCall(Object[] instanceCtorArgs, Method method) { - this.ctorArgs = Optional.ofNullable(instanceCtorArgs).orElse( - DEFAULT_CTOR_ARGS); - this.method = method; - this.methodArgs = new Object[0]; - } + MethodCall(Object[] instanceCtorArgs, Method method, Object ... args) { + Objects.requireNonNull(instanceCtorArgs); + Objects.requireNonNull(method); - MethodCall(Object[] instanceCtorArgs, Method method, Object arg) { - this.ctorArgs = Optional.ofNullable(instanceCtorArgs).orElse( - DEFAULT_CTOR_ARGS); + this.ctorArgs = instanceCtorArgs; this.method = method; - this.methodArgs = new Object[]{arg}; + this.methodArgs = args; } TestDesc createDescription() { @@ -76,78 +75,195 @@ return null; } - Constructor ctor = findRequiredConstructor(method.getDeclaringClass(), - ctorArgs); - if (ctor.isVarArgs()) { - // Assume constructor doesn't have fixed, only variable parameters. - return ctor.newInstance(new Object[]{ctorArgs}); - } + var ctor = findMatchingConstructor(method.getDeclaringClass(), ctorArgs); - return ctor.newInstance(ctorArgs); + return ctor.newInstance(mapArgs(ctor, ctorArgs)); + } + + static Object[] mapArgs(Executable executable, final Object ... args) { + return mapPrimitiveTypeArgs(executable, mapVarArgs(executable, args)); } void checkRequiredConstructor() throws NoSuchMethodException { if ((method.getModifiers() & Modifier.STATIC) == 0) { - findRequiredConstructor(method.getDeclaringClass(), ctorArgs); + findMatchingConstructor(method.getDeclaringClass(), ctorArgs); } } - private static Constructor findVarArgConstructor(Class type) { - return Stream.of(type.getConstructors()).filter( - Constructor::isVarArgs).findFirst().orElse(null); - } - - private Constructor findRequiredConstructor(Class type, Object... ctorArgs) + private static Constructor findMatchingConstructor(Class type, Object... ctorArgs) throws NoSuchMethodException { - Supplier notFoundException = () -> { - return new NoSuchMethodException(String.format( + var ctors = filterMatchingExecutablesForParameterValues(Stream.of( + type.getConstructors()), ctorArgs).toList(); + + if (ctors.size() != 1) { + // No public constructors that can handle the given arguments. + throw new NoSuchMethodException(String.format( "No public contructor in %s for %s arguments", type, Arrays.deepToString(ctorArgs))); - }; + } + + return ctors.get(0); + } + + @Override + public void accept(Object thiz) throws Throwable { + method.invoke(thiz, methodArgs); + } - if (Stream.of(ctorArgs).allMatch(Objects::nonNull)) { - // No `null` in constructor args, take easy path - try { - return type.getConstructor(Stream.of(ctorArgs).map( - Object::getClass).collect(Collectors.toList()).toArray( - Class[]::new)); - } catch (NoSuchMethodException ex) { - // Failed to find ctor that can take the given arguments. - Constructor varArgCtor = findVarArgConstructor(type); - if (varArgCtor != null) { - // There is one with variable number of arguments. Use it. - return varArgCtor; - } - throw notFoundException.get(); + private static Object[] mapVarArgs(Executable executable, final Object ... args) { + if (executable.isVarArgs()) { + var paramTypes = executable.getParameterTypes(); + Class varArgParamType = paramTypes[paramTypes.length - 1]; + + Object[] newArgs; + if (paramTypes.length - args.length == 1) { + // Empty var args + + // "args" can be of type String[] if the "executable" is "foo(String ... str)" + newArgs = Arrays.copyOf(args, args.length + 1, Object[].class); + newArgs[newArgs.length - 1] = Array.newInstance(varArgParamType.componentType(), 0); + } else { + var varArgs = Arrays.copyOfRange(args, paramTypes.length - 1, + args.length, varArgParamType); + + // "args" can be of type String[] if the "executable" is "foo(String ... str)" + newArgs = Arrays.copyOfRange(args, 0, paramTypes.length, Object[].class); + newArgs[newArgs.length - 1] = varArgs; } + return newArgs; } - List ctors = Stream.of(type.getConstructors()) - .filter(ctor -> ctor.getParameterCount() == ctorArgs.length) - .collect(Collectors.toList()); + return args; + } - if (ctors.isEmpty()) { - // No public constructors that can handle the given arguments. - throw notFoundException.get(); + private static Object[] mapPrimitiveTypeArgs(Executable executable, final Object ... args) { + var paramTypes = executable.getParameterTypes(); + if (paramTypes.length != args.length) { + throw new IllegalArgumentException( + "The number of arguments must be equal to the number of parameters of the executable"); } - if (ctors.size() == 1) { - return ctors.iterator().next(); + if (IntStream.range(0, args.length).allMatch(idx -> { + return Optional.ofNullable(args[idx]).map(Object::getClass).map(paramTypes[idx]::isAssignableFrom).orElse(true); + })) { + return args; + } else { + final var newArgs = Arrays.copyOf(args, args.length, Object[].class); + for (var idx = 0; idx != args.length; ++idx) { + final var paramType = paramTypes[idx]; + final var argValue = args[idx]; + newArgs[idx] = Optional.ofNullable(argValue).map(Object::getClass).map(argType -> { + if(argType.isArray() && !paramType.isAssignableFrom(argType)) { + var length = Array.getLength(argValue); + var newArray = Array.newInstance(paramType.getComponentType(), length); + for (var arrayIdx = 0; arrayIdx != length; ++arrayIdx) { + Array.set(newArray, arrayIdx, Array.get(argValue, arrayIdx)); + } + return newArray; + } else { + return argValue; + } + }).orElse(argValue); + } + + return newArgs; } + } - // Revisit this tricky case when it will start bothering. - throw notFoundException.get(); + private static Stream filterMatchingExecutablesForParameterValues( + Stream executables, Object... args) { + return filterMatchingExecutablesForParameterTypes( + executables, + Stream.of(args) + .map(arg -> arg != null ? arg.getClass() : null) + .toArray(Class[]::new)); } - @Override - public void accept(Object thiz) throws Throwable { - method.invoke(thiz, methodArgs); + private static Stream filterMatchingExecutablesForParameterTypes( + Stream executables, Class... argTypes) { + return executables.filter(executable -> { + var parameterTypes = executable.getParameterTypes(); + + final int checkArgTypeCount; + if (parameterTypes.length <= argTypes.length) { + checkArgTypeCount = parameterTypes.length; + } else if (parameterTypes.length - argTypes.length == 1 && executable.isVarArgs()) { + // Empty optional arguments. + checkArgTypeCount = argTypes.length; + } else { + // Not enough mandatory arguments. + return false; + } + + var unmatched = IntStream.range(0, checkArgTypeCount).dropWhile(idx -> { + return new ParameterTypeMatcher(parameterTypes[idx]).test(argTypes[idx]); + }).toArray(); + + if (argTypes.length == parameterTypes.length && unmatched.length == 0) { + // Number of argument types equals to the number of parameters + // of the executable and all types match. + return true; + } + + if (executable.isVarArgs()) { + var varArgType = parameterTypes[parameterTypes.length - 1].componentType(); + return IntStream.of(unmatched).allMatch(idx -> { + return new ParameterTypeMatcher(varArgType).test(argTypes[idx]); + }); + } + + return false; + }); + } + + private static final class ParameterTypeMatcher implements Predicate> { + ParameterTypeMatcher(Class parameterType) { + Objects.requireNonNull(parameterType); + this.parameterType = NORM_TYPES.getOrDefault(parameterType, parameterType); + } + + @Override + public boolean test(Class paramaterValueType) { + if (paramaterValueType == null) { + return true; + } + + paramaterValueType = NORM_TYPES.getOrDefault(paramaterValueType, paramaterValueType); + return parameterType.isAssignableFrom(paramaterValueType); + } + + private final Class parameterType; } private final Object[] methodArgs; private final Method method; private final Object[] ctorArgs; - final static Object[] DEFAULT_CTOR_ARGS = new Object[0]; + private static final Map, Class> NORM_TYPES; + + static { + Map, Class> primitives = Map.of( + boolean.class, Boolean.class, + byte.class, Byte.class, + short.class, Short.class, + int.class, Integer.class, + long.class, Long.class, + float.class, Float.class, + double.class, Double.class); + + Map, Class> primitiveArrays = Map.of( + boolean[].class, Boolean[].class, + byte[].class, Byte[].class, + short[].class, Short[].class, + int[].class, Integer[].class, + long[].class, Long[].class, + float[].class, Float[].class, + double[].class, Double[].class); + + Map, Class> combined = new HashMap<>(primitives); + combined.putAll(primitiveArrays); + + NORM_TYPES = Collections.unmodifiableMap(combined); + } } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -22,12 +22,11 @@ */ package jdk.jpackage.test; -import java.awt.Desktop; import java.awt.GraphicsEnvironment; -import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.time.Duration; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -275,7 +274,7 @@ Files.deleteIfExists(appOutput); List expectedArgs = testRun.openFiles(testFiles); - TKit.waitForFileCreated(appOutput, 7); + TKit.waitForFileCreated(appOutput, Duration.ofSeconds(7), Duration.ofSeconds(3)); // Wait a little bit after file has been created to // make sure there are no pending writes into it. @@ -778,7 +777,7 @@ private Set namedInitializers; private Map packageHandlers; - private final static File BUNDLE_OUTPUT_DIR; + private static final Path BUNDLE_OUTPUT_DIR; static { final String propertyName = "output"; @@ -786,9 +785,9 @@ if (val == null) { BUNDLE_OUTPUT_DIR = null; } else { - BUNDLE_OUTPUT_DIR = new File(val).getAbsoluteFile(); + BUNDLE_OUTPUT_DIR = Path.of(val).toAbsolutePath(); - if (!BUNDLE_OUTPUT_DIR.isDirectory()) { + if (!Files.isDirectory(BUNDLE_OUTPUT_DIR)) { throw new IllegalArgumentException(String.format("Invalid value of %s sytem property: [%s]. Should be existing directory", TKit.getConfigPropertyName(propertyName), BUNDLE_OUTPUT_DIR)); diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java 2026-01-15 15:34:19.000000000 +0000 @@ -23,7 +23,6 @@ package jdk.jpackage.test; import java.io.Closeable; -import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; @@ -37,8 +36,9 @@ import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY; import java.nio.file.WatchEvent; import java.nio.file.WatchKey; -import java.nio.file.WatchService; import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -107,14 +107,21 @@ ThrowingRunnable.toRunnable(action).run(); } else { try (PrintStream logStream = openLogStream()) { - extraLogStream = logStream; - ThrowingRunnable.toRunnable(action).run(); - } finally { - extraLogStream = null; + withExtraLogStream(action, logStream); } } } + static void withExtraLogStream(ThrowingRunnable action, PrintStream logStream) { + var oldExtraLogStream = extraLogStream; + try { + extraLogStream = logStream; + ThrowingRunnable.toRunnable(action).run(); + } finally { + extraLogStream = oldExtraLogStream; + } + } + static void runTests(List tests) { if (currentTest != null) { throw new IllegalStateException( @@ -187,11 +194,7 @@ } public static boolean isLinuxAPT() { - if (!isLinux()) { - return false; - } - File aptFile = new File("/usr/bin/apt-get"); - return aptFile.exists(); + return isLinux() && Files.exists(Path.of("/usr/bin/apt-get")); } private static String addTimestamp(String msg) { @@ -275,6 +278,22 @@ throw new AssertionError(v); } + static void assertAssert(boolean expectedSuccess, Runnable runnable) { + try { + runnable.run(); + } catch (AssertionError err) { + if (expectedSuccess) { + assertUnexpected("Assertion failed"); + } else { + return; + } + } + + if (!expectedSuccess) { + assertUnexpected("Assertion passed"); + } + } + private final static String TEMP_FILE_PREFIX = null; private static Path createUniqueFileName(String defaultName) { @@ -298,7 +317,9 @@ if (!path.toFile().exists()) { return path; } - nameComponents[0] = String.format("%s.%d", baseName, i); + // Don't use period (.) as a separator. OSX codesign fails to sign folders + // with subfolders with names like "input.0". + nameComponents[0] = String.format("%s-%d", baseName, i); } throw new IllegalStateException(String.format( "Failed to create unique file name from [%s] basename after %d attempts", @@ -511,49 +532,57 @@ return file; } - static void waitForFileCreated(Path fileToWaitFor, - long timeoutSeconds) throws IOException { + public static void waitForFileCreated(Path fileToWaitFor, + Duration timeout, Duration afterCreatedTimeout) throws IOException { + waitForFileCreated(fileToWaitFor, timeout); + // Wait after the file has been created to ensure it is fully written. + ThrowingConsumer.toConsumer(Thread::sleep).accept(afterCreatedTimeout); + } + + private static void waitForFileCreated(Path fileToWaitFor, Duration timeout) throws IOException { trace(String.format("Wait for file [%s] to be available", fileToWaitFor.toAbsolutePath())); - WatchService ws = FileSystems.getDefault().newWatchService(); + try (var ws = FileSystems.getDefault().newWatchService()) { - Path watchDirectory = fileToWaitFor.toAbsolutePath().getParent(); - watchDirectory.register(ws, ENTRY_CREATE, ENTRY_MODIFY); + Path watchDirectory = fileToWaitFor.toAbsolutePath().getParent(); + watchDirectory.register(ws, ENTRY_CREATE, ENTRY_MODIFY); - long waitUntil = System.currentTimeMillis() + timeoutSeconds * 1000; - for (;;) { - long timeout = waitUntil - System.currentTimeMillis(); - assertTrue(timeout > 0, String.format( - "Check timeout value %d is positive", timeout)); - - WatchKey key = ThrowingSupplier.toSupplier(() -> ws.poll(timeout, - TimeUnit.MILLISECONDS)).get(); - if (key == null) { - if (fileToWaitFor.toFile().exists()) { - trace(String.format( - "File [%s] is available after poll timeout expired", - fileToWaitFor)); - return; + var waitUntil = Instant.now().plus(timeout); + for (;;) { + Instant n = Instant.now(); + Duration remainderTimeout = Duration.between(n, waitUntil); + assertTrue(remainderTimeout.isPositive(), String.format( + "Check timeout value %dms is positive", remainderTimeout.toMillis())); + + WatchKey key = ThrowingSupplier.toSupplier(() -> { + return ws.poll(remainderTimeout.toMillis(), TimeUnit.MILLISECONDS); + }).get(); + if (key == null) { + if (Files.exists(fileToWaitFor)) { + trace(String.format( + "File [%s] is available after poll timeout expired", + fileToWaitFor)); + return; + } + assertUnexpected(String.format("Timeout %dms expired", remainderTimeout.toMillis())); } - assertUnexpected(String.format("Timeout expired", timeout)); - } - for (WatchEvent event : key.pollEvents()) { - if (event.kind() == StandardWatchEventKinds.OVERFLOW) { - continue; - } - Path contextPath = (Path) event.context(); - if (Files.isSameFile(watchDirectory.resolve(contextPath), - fileToWaitFor)) { - trace(String.format("File [%s] is available", fileToWaitFor)); - return; + for (WatchEvent event : key.pollEvents()) { + if (event.kind() == StandardWatchEventKinds.OVERFLOW) { + continue; + } + Path contextPath = (Path) event.context(); + if (Files.exists(fileToWaitFor) && Files.isSameFile(watchDirectory.resolve(contextPath), fileToWaitFor)) { + trace(String.format("File [%s] is available", fileToWaitFor)); + return; + } } - } - if (!key.reset()) { - assertUnexpected("Watch key invalidated"); + if (!key.reset()) { + assertUnexpected("Watch key invalidated"); + } } } } @@ -580,7 +609,7 @@ msg)); } - traceAssert(String.format("assertEquals(%d): %s", expected, msg)); + traceAssert(concatMessages(String.format("assertEquals(%d)", expected), msg)); } public static void assertNotEquals(long expected, long actual, String msg) { @@ -590,8 +619,8 @@ msg)); } - traceAssert(String.format("assertNotEquals(%d, %d): %s", expected, - actual, msg)); + traceAssert(concatMessages(String.format("assertNotEquals(%d, %d)", expected, + actual), msg)); } public static void assertEquals(String expected, String actual, String msg) { @@ -603,7 +632,7 @@ msg)); } - traceAssert(String.format("assertEquals(%s): %s", expected, msg)); + traceAssert(concatMessages(String.format("assertEquals(%s)", expected), msg)); } public static void assertNotEquals(String expected, String actual, String msg) { @@ -611,8 +640,8 @@ if ((actual != null && !actual.equals(expected)) || (expected != null && !expected.equals(actual))) { - traceAssert(String.format("assertNotEquals(%s, %s): %s", expected, - actual, msg)); + traceAssert(concatMessages(String.format("assertNotEquals(%s, %s)", expected, + actual), msg)); return; } @@ -626,7 +655,7 @@ value), msg)); } - traceAssert(String.format("assertNull(): %s", msg)); + traceAssert(concatMessages("assertNull()", msg)); } public static void assertNotNull(Object value, String msg) { @@ -635,7 +664,7 @@ error(concatMessages("Unexpected null value", msg)); } - traceAssert(String.format("assertNotNull(%s): %s", value, msg)); + traceAssert(concatMessages(String.format("assertNotNull(%s)", value), msg)); } public static void assertTrue(boolean actual, String msg) { @@ -655,7 +684,7 @@ error(concatMessages("Failed", msg)); } - traceAssert(String.format("assertTrue(): %s", msg)); + traceAssert(concatMessages("assertTrue()", msg)); } public static void assertFalse(boolean actual, String msg, Runnable onFail) { @@ -667,7 +696,7 @@ error(concatMessages("Failed", msg)); } - traceAssert(String.format("assertFalse(): %s", msg)); + traceAssert(concatMessages("assertFalse()", msg)); } public static void assertPathExists(Path path, boolean exists) { @@ -826,7 +855,7 @@ List actual, String msg) { currentTest.notifyAssert(); - traceAssert(String.format("assertStringListEquals(): %s", msg)); + traceAssert(concatMessages("assertStringListEquals()", msg)); String idxFieldFormat = Functional.identity(() -> { int listSize = expected.size(); @@ -856,7 +885,7 @@ expectedStr)); }); - if (expected.size() < actual.size()) { + if (actual.size() > expected.size()) { // Actual string list is longer than expected error(concatMessages(String.format( "Actual list is longer than expected by %d elements", @@ -866,7 +895,7 @@ if (actual.size() < expected.size()) { // Actual string list is shorter than expected error(concatMessages(String.format( - "Actual list is longer than expected by %d elements", + "Actual list is shorter than expected by %d elements", expected.size() - actual.size()), msg)); } } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilder.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilder.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilder.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilder.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,32 +23,28 @@ package jdk.jpackage.test; -import java.lang.reflect.Array; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.lang.reflect.Modifier; import java.util.ArrayList; -import java.util.Collection; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; -import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; -import java.util.function.Function; import java.util.function.UnaryOperator; import java.util.stream.Collectors; import java.util.stream.Stream; import jdk.jpackage.test.Annotations.AfterEach; import jdk.jpackage.test.Annotations.BeforeEach; -import jdk.jpackage.test.Annotations.Parameter; -import jdk.jpackage.test.Annotations.ParameterGroup; -import jdk.jpackage.test.Annotations.Parameters; import jdk.jpackage.test.Annotations.Test; import jdk.jpackage.test.Functional.ThrowingConsumer; +import static jdk.jpackage.test.Functional.ThrowingConsumer.toConsumer; import jdk.jpackage.test.Functional.ThrowingFunction; +import jdk.jpackage.test.TestMethodSupplier.InvalidAnnotationException; +import static jdk.jpackage.test.TestMethodSupplier.MethodQuery.fromQualifiedMethodName; final class TestBuilder implements AutoCloseable { @@ -58,6 +54,7 @@ } TestBuilder(Consumer testConsumer) { + this.testMethodSupplier = TestBuilderConfig.getDefault().createTestMethodSupplier(); argProcessors = Map.of( CMDLINE_ARG_PREFIX + "after-run", arg -> getJavaMethodsFromArg(arg).map( @@ -70,7 +67,7 @@ CMDLINE_ARG_PREFIX + "run", arg -> addTestGroup(getJavaMethodsFromArg(arg).map( ThrowingFunction.toFunction( - TestBuilder::toMethodCalls)).flatMap(s -> s).collect( + this::toMethodCalls)).flatMap(s -> s).collect( Collectors.toList())), CMDLINE_ARG_PREFIX + "exclude", @@ -219,23 +216,29 @@ .filter(m -> m.getParameterCount() == 0) .filter(m -> !m.isAnnotationPresent(Test.class)) .filter(m -> m.isAnnotationPresent(annotationType)) - .sorted((a, b) -> a.getName().compareTo(b.getName())); + .sorted(Comparator.comparing(Method::getName)); } - private static Stream cmdLineArgValueToMethodNames(String v) { + private Stream cmdLineArgValueToMethodNames(String v) { List result = new ArrayList<>(); String defaultClassName = null; for (String token : v.split(",")) { Class testSet = probeClass(token); if (testSet != null) { + if (testMethodSupplier.isTestClass(testSet)) { + toConsumer(testMethodSupplier::verifyTestClass).accept(testSet); + } + // Test set class specified. Pull in all public methods // from the class with @Test annotation removing name duplicates. // Overloads will be handled at the next phase of processing. defaultClassName = token; - Stream.of(testSet.getMethods()).filter( - m -> m.isAnnotationPresent(Test.class)).map( - Method::getName).distinct().forEach( - name -> result.add(String.join(".", token, name))); + result.addAll(Stream.of(testSet.getMethods()) + .filter(m -> m.isAnnotationPresent(Test.class)) + .filter(testMethodSupplier::isEnabled) + .map(Method::getName).distinct() + .map(name -> String.join(".", token, name)) + .toList()); continue; } @@ -246,7 +249,7 @@ qualifiedMethodName = token; defaultClassName = token.substring(0, lastDotIdx); } else if (defaultClassName == null) { - throw new ParseException("Default class name not found in"); + throw new ParseException("Missing default class name in"); } else { qualifiedMethodName = String.join(".", defaultClassName, token); } @@ -255,155 +258,43 @@ return result.stream(); } - private static boolean filterMethod(String expectedMethodName, Method method) { - if (!method.getName().equals(expectedMethodName)) { - return false; - } - switch (method.getParameterCount()) { - case 0: - return !isParametrized(method); - case 1: - return isParametrized(method); - } - return false; - } - - private static boolean isParametrized(Method method) { - return method.isAnnotationPresent(ParameterGroup.class) || method.isAnnotationPresent( - Parameter.class); - } - - private static List getJavaMethodFromString( - String qualifiedMethodName) { + private List getJavaMethodFromString(String qualifiedMethodName) { int lastDotIdx = qualifiedMethodName.lastIndexOf('.'); if (lastDotIdx == -1) { - throw new ParseException("Class name not found in"); - } - String className = qualifiedMethodName.substring(0, lastDotIdx); - String methodName = qualifiedMethodName.substring(lastDotIdx + 1); - Class methodClass; - try { - methodClass = Class.forName(className); - } catch (ClassNotFoundException ex) { - throw new ParseException(String.format("Class [%s] not found;", - className)); - } - // Get the list of all public methods as need to deal with overloads. - List methods = Stream.of(methodClass.getMethods()).filter( - (m) -> filterMethod(methodName, m)).collect(Collectors.toList()); - if (methods.isEmpty()) { - throw new ParseException(String.format( - "Method [%s] not found in [%s] class;", - methodName, className)); - } - - trace(String.format("%s -> %s", qualifiedMethodName, methods)); - return methods; - } - - private static Stream getJavaMethodsFromArg(String argValue) { - return cmdLineArgValueToMethodNames(argValue).map( - ThrowingFunction.toFunction( - TestBuilder::getJavaMethodFromString)).flatMap( - List::stream).sequential(); - } - - private static Parameter[] getMethodParameters(Method method) { - if (method.isAnnotationPresent(ParameterGroup.class)) { - return ((ParameterGroup) method.getAnnotation(ParameterGroup.class)).value(); + throw new ParseException("Missing class name in"); } - if (method.isAnnotationPresent(Parameter.class)) { - return new Parameter[]{(Parameter) method.getAnnotation( - Parameter.class)}; + try { + return testMethodSupplier.findNullaryLikeMethods( + fromQualifiedMethodName(qualifiedMethodName)); + } catch (NoSuchMethodException ex) { + throw new ParseException(ex.getMessage() + ";", ex); } - - // Unexpected - return null; } - private static Stream toCtorArgs(Method method) throws - IllegalAccessException, InvocationTargetException { - Class type = method.getDeclaringClass(); - List paremetersProviders = Stream.of(type.getMethods()) - .filter(m -> m.getParameterCount() == 0) - .filter(m -> (m.getModifiers() & Modifier.STATIC) != 0) - .filter(m -> m.isAnnotationPresent(Parameters.class)) - .sorted() - .collect(Collectors.toList()); - if (paremetersProviders.isEmpty()) { - // Single instance using the default constructor. - return Stream.ofNullable(MethodCall.DEFAULT_CTOR_ARGS); - } - - // Pick the first method from the list. - Method paremetersProvider = paremetersProviders.iterator().next(); - if (paremetersProviders.size() > 1) { - trace(String.format( - "Found %d public static methods without arguments with %s annotation. Will use %s", - paremetersProviders.size(), Parameters.class, - paremetersProvider)); - paremetersProviders.stream().map(Method::toString).forEach( - TestBuilder::trace); - } - - // Construct collection of arguments for test class instances. - return ((Collection) paremetersProvider.invoke(null)).stream(); - } - - private static Stream toMethodCalls(Method method) throws - IllegalAccessException, InvocationTargetException { - return toCtorArgs(method).map(v -> toMethodCalls(v, method)).flatMap( - s -> s).peek(methodCall -> { - // Make sure required constructor is accessible if the one is needed. - // Need to probe all methods as some of them might be static - // and some class members. - // Only class members require ctors. - try { - methodCall.checkRequiredConstructor(); - } catch (NoSuchMethodException ex) { - throw new ParseException(ex.getMessage() + "."); - } - }); - } - - private static Stream toMethodCalls(Object[] ctorArgs, Method method) { - if (!isParametrized(method)) { - return Stream.of(new MethodCall(ctorArgs, method)); - } - Parameter[] annotations = getMethodParameters(method); - if (annotations.length == 0) { - return Stream.of(new MethodCall(ctorArgs, method)); - } - return Stream.of(annotations).map((a) -> { - Class paramType = method.getParameterTypes()[0]; - final Object annotationValue; - if (!paramType.isArray()) { - annotationValue = fromString(a.value()[0], paramType); - } else { - Class paramComponentType = paramType.getComponentType(); - annotationValue = Array.newInstance(paramComponentType, a.value().length); - var idx = new AtomicInteger(-1); - Stream.of(a.value()).map(v -> fromString(v, paramComponentType)).sequential().forEach( - v -> Array.set(annotationValue, idx.incrementAndGet(), v)); + private Stream getJavaMethodsFromArg(String argValue) { + var methods = cmdLineArgValueToMethodNames(argValue) + .map(this::getJavaMethodFromString) + .flatMap(List::stream).toList(); + trace(String.format("%s -> %s", argValue, methods)); + return methods.stream(); + } + + private Stream toMethodCalls(Method method) throws + IllegalAccessException, InvocationTargetException, InvalidAnnotationException { + return testMethodSupplier.mapToMethodCalls(method).peek(methodCall -> { + // Make sure required constructor is accessible if the one is needed. + // Need to probe all methods as some of them might be static + // and some class members. + // Only class members require ctors. + try { + methodCall.checkRequiredConstructor(); + } catch (NoSuchMethodException ex) { + throw new ParseException(ex.getMessage() + ".", ex); } - return new MethodCall(ctorArgs, method, annotationValue); }); } - private static Object fromString(String value, Class toType) { - if (toType.isEnum()) { - return Enum.valueOf(toType, value); - } - Function converter = conv.get(toType); - if (converter == null) { - throw new RuntimeException(String.format( - "Failed to find a conversion of [%s] string to %s type", - value, toType)); - } - return converter.apply(value); - } - // Wraps Method.invike() into ThrowingRunnable.run() private ThrowingConsumer wrap(Method method) { return (test) -> { @@ -427,6 +318,10 @@ super(msg); } + ParseException(String msg, Exception ex) { + super(msg, ex); + } + void setContext(String badCmdLineArg) { this.badCmdLineArg = badCmdLineArg; } @@ -448,8 +343,9 @@ } } + private final TestMethodSupplier testMethodSupplier; private final Map> argProcessors; - private Consumer testConsumer; + private final Consumer testConsumer; private List testGroup; private List beforeActions; private List afterActions; @@ -458,14 +354,5 @@ private String spaceSubstitute; private boolean dryRun; - private final static Map> conv = Map.of( - boolean.class, Boolean::valueOf, - Boolean.class, Boolean::valueOf, - int.class, Integer::valueOf, - Integer.class, Integer::valueOf, - long.class, Long::valueOf, - Long.class, Long::valueOf, - String.class, String::valueOf); - - final static String CMDLINE_ARG_PREFIX = "--jpt-"; + static final String CMDLINE_ARG_PREFIX = "--jpt-"; } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilderConfig.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilderConfig.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilderConfig.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilderConfig.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.jpackage.test; + +import java.util.Objects; +import jdk.internal.util.OperatingSystem; + +final class TestBuilderConfig { + TestBuilderConfig() { + } + + TestMethodSupplier createTestMethodSupplier() { + return new TestMethodSupplier(os); + } + + OperatingSystem getOperatingSystem() { + return os; + } + + static TestBuilderConfig getDefault() { + return DEFAULT.get(); + } + + static void setOperatingSystem(OperatingSystem os) { + Objects.requireNonNull(os); + DEFAULT.get().os = os; + } + + static void setDefaults() { + DEFAULT.set(new TestBuilderConfig()); + } + + private OperatingSystem os = OperatingSystem.current(); + + private static final ThreadLocal DEFAULT = new ThreadLocal<>() { + @Override + protected TestBuilderConfig initialValue() { + return new TestBuilderConfig(); + } + }; +} diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestInstance.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestInstance.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestInstance.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestInstance.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,8 +32,10 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -50,7 +52,7 @@ String testFullName() { StringBuilder sb = new StringBuilder(); - sb.append(clazz.getSimpleName()); + sb.append(clazz.getName()); if (instanceArgs != null) { sb.append('(').append(instanceArgs).append(')'); } @@ -78,12 +80,12 @@ } Builder ctorArgs(Object... v) { - ctorArgs = ofNullable(v); + ctorArgs = Arrays.asList(v); return this; } Builder methodArgs(Object... v) { - methodArgs = ofNullable(v); + methodArgs = Arrays.asList(v); return this; } @@ -107,22 +109,18 @@ } return values.stream().map(v -> { if (v != null && v.getClass().isArray()) { - return String.format("%s(length=%d)", - Arrays.deepToString((Object[]) v), - Array.getLength(v)); + String asString; + if (v.getClass().getComponentType().isPrimitive()) { + asString = PRIMITIVE_ARRAY_FORMATTERS.get(v.getClass()).apply(v); + } else { + asString = Arrays.deepToString((Object[]) v); + } + return String.format("%s(length=%d)", asString, Array.getLength(v)); } return String.format("%s", v); }).collect(Collectors.joining(", ")); } - private static List ofNullable(Object... values) { - List result = new ArrayList(); - for (var v: values) { - result.add(v); - } - return result; - } - private List ctorArgs; private List methodArgs; private Method method; @@ -331,7 +329,7 @@ private final boolean dryRun; private final Path workDir; - private final static Set KEEP_WORK_DIR = Functional.identity( + private static final Set KEEP_WORK_DIR = Functional.identity( () -> { final String propertyName = "keep-work-dir"; Set keepWorkDir = TKit.tokenizeConfigProperty( @@ -355,4 +353,15 @@ return Collections.unmodifiableSet(result); }).get(); + private static final Map, Function> PRIMITIVE_ARRAY_FORMATTERS = Map.of( + boolean[].class, v -> Arrays.toString((boolean[])v), + byte[].class, v -> Arrays.toString((byte[])v), + char[].class, v -> Arrays.toString((char[])v), + short[].class, v -> Arrays.toString((short[])v), + int[].class, v -> Arrays.toString((int[])v), + long[].class, v -> Arrays.toString((long[])v), + float[].class, v -> Arrays.toString((float[])v), + double[].class, v -> Arrays.toString((double[])v) + ); + } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestMethodSupplier.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestMethodSupplier.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestMethodSupplier.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestMethodSupplier.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,510 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.jpackage.test; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Executable; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.IntStream; +import java.util.stream.Stream; +import jdk.internal.util.OperatingSystem; +import jdk.jpackage.test.Annotations.Parameter; +import jdk.jpackage.test.Annotations.ParameterGroup; +import jdk.jpackage.test.Annotations.ParameterSupplier; +import jdk.jpackage.test.Annotations.ParameterSupplierGroup; +import jdk.jpackage.test.Annotations.Parameters; +import jdk.jpackage.test.Annotations.Test; +import static jdk.jpackage.test.Functional.ThrowingFunction.toFunction; +import static jdk.jpackage.test.Functional.ThrowingSupplier.toSupplier; +import static jdk.jpackage.test.MethodCall.mapArgs; + +final class TestMethodSupplier { + + TestMethodSupplier(OperatingSystem os) { + Objects.requireNonNull(os); + this.os = os; + } + + record MethodQuery(String className, String methodName) { + + List lookup() throws ClassNotFoundException { + final Class methodClass = Class.forName(className); + + // Get the list of all public methods as need to deal with overloads. + return Stream.of(methodClass.getMethods()).filter(method -> { + return method.getName().equals(methodName); + }).toList(); + } + + static MethodQuery fromQualifiedMethodName(String qualifiedMethodName) { + int lastDotIdx = qualifiedMethodName.lastIndexOf('.'); + if (lastDotIdx == -1) { + throw new IllegalArgumentException("Class name not specified"); + } + + var className = qualifiedMethodName.substring(0, lastDotIdx); + var methodName = qualifiedMethodName.substring(lastDotIdx + 1); + + return new MethodQuery(className, methodName); + } + } + + List findNullaryLikeMethods(MethodQuery query) throws NoSuchMethodException { + List methods; + + try { + methods = query.lookup(); + } catch (ClassNotFoundException ex) { + throw new NoSuchMethodException( + String.format("Class [%s] not found", query.className())); + } + + if (methods.isEmpty()) { + throw new NoSuchMethodException(String.format( + "Public method [%s] not found in [%s] class", + query.methodName(), query.className())); + } + + methods = methods.stream().filter(method -> { + if (isParameterized(method) && isTest(method)) { + // Always accept test method with annotations producing arguments for its invocation. + return true; + } else { + return method.getParameterCount() == 0; + } + }).filter(this::isEnabled).toList(); + + if (methods.isEmpty()) { + throw new NoSuchMethodException(String.format( + "Suitable public method [%s] not found in [%s] class", + query.methodName(), query.className())); + } + + return methods; + } + + boolean isTestClass(Class type) { + var typeStatus = processedTypes.get(type); + if (typeStatus == null) { + typeStatus = Verifier.isTestClass(type) ? TypeStatus.TEST_CLASS : TypeStatus.NOT_TEST_CLASS; + processedTypes.put(type, typeStatus); + } + + return !TypeStatus.NOT_TEST_CLASS.equals(typeStatus); + } + + void verifyTestClass(Class type) throws InvalidAnnotationException { + var typeStatus = processedTypes.get(type); + if (typeStatus == null) { + // The "type" has not been verified yet. + try { + Verifier.verifyTestClass(type); + processedTypes.put(type, TypeStatus.VALID_TEST_CLASS); + return; + } catch (InvalidAnnotationException ex) { + processedTypes.put(type, TypeStatus.TEST_CLASS); + throw ex; + } + } + + switch (typeStatus) { + case NOT_TEST_CLASS -> Verifier.throwNotTestClassException(type); + case TEST_CLASS -> Verifier.verifyTestClass(type); + case VALID_TEST_CLASS -> {} + } + } + + boolean isEnabled(Method method) { + return Stream.of(Test.class, Parameters.class) + .filter(method::isAnnotationPresent) + .findFirst() + .map(method::getAnnotation) + .map(this::canRunOnTheOperatingSystem) + .orElse(true); + } + + Stream mapToMethodCalls(Method method) throws + IllegalAccessException, InvocationTargetException { + return toCtorArgs(method).map(v -> toMethodCalls(v, method)).flatMap(x -> x); + } + + private Stream toCtorArgs(Method method) throws + IllegalAccessException, InvocationTargetException { + + if ((method.getModifiers() & Modifier.STATIC) != 0) { + // Static method, no instance + return Stream.ofNullable(DEFAULT_CTOR_ARGS); + } + + final var type = method.getDeclaringClass(); + + final var paremeterSuppliers = filterParameterSuppliers(type) + .filter(m -> m.isAnnotationPresent(Parameters.class)) + .filter(this::isEnabled) + .sorted(Comparator.comparing(Method::getName)).toList(); + if (paremeterSuppliers.isEmpty()) { + // Single instance using the default constructor. + return Stream.ofNullable(DEFAULT_CTOR_ARGS); + } + + // Construct collection of arguments for test class instances. + return createArgs(paremeterSuppliers.toArray(Method[]::new)); + } + + private Stream toMethodCalls(Object[] ctorArgs, Method method) { + if (!isParameterized(method)) { + return Stream.of(new MethodCall(ctorArgs, method)); + } + + var fromParameter = Stream.of(getMethodParameters(method)).map(a -> { + return createArgsForAnnotation(method, a); + }).flatMap(List::stream); + + var fromParameterSupplier = Stream.of(getMethodParameterSuppliers(method)).map(a -> { + return toSupplier(() -> createArgsForAnnotation(method, a)).get(); + }).flatMap(List::stream); + + return Stream.concat(fromParameter, fromParameterSupplier).map(args -> { + return new MethodCall(ctorArgs, method, args); + }); + } + + private List createArgsForAnnotation(Executable exec, Parameter a) { + if (!canRunOnTheOperatingSystem(a)) { + return List.of(); + } + + final var annotationArgs = a.value(); + final var execParameterTypes = exec.getParameterTypes(); + + if (execParameterTypes.length > annotationArgs.length) { + if (execParameterTypes.length - annotationArgs.length == 1 && exec.isVarArgs()) { + } else { + throw new RuntimeException(String.format( + "Not enough annotation values %s for [%s]", + List.of(annotationArgs), exec)); + } + } + + final Class[] argTypes; + if (exec.isVarArgs()) { + List> argTypesBuilder = new ArrayList<>(); + var lastExecParameterTypeIdx = execParameterTypes.length - 1; + argTypesBuilder.addAll(List.of(execParameterTypes).subList(0, + lastExecParameterTypeIdx)); + argTypesBuilder.addAll(Collections.nCopies( + Integer.max(0, annotationArgs.length - lastExecParameterTypeIdx), + execParameterTypes[lastExecParameterTypeIdx].componentType())); + argTypes = argTypesBuilder.toArray(Class[]::new); + } else { + argTypes = execParameterTypes; + } + + if (argTypes.length < annotationArgs.length) { + throw new RuntimeException(String.format( + "Too many annotation values %s for [%s]", + List.of(annotationArgs), exec)); + } + + var args = mapArgs(exec, IntStream.range(0, argTypes.length).mapToObj(idx -> { + return fromString(annotationArgs[idx], argTypes[idx]); + }).toArray(Object[]::new)); + + return List.of(args); + } + + private List createArgsForAnnotation(Executable exec, + ParameterSupplier a) throws IllegalAccessException, + InvocationTargetException { + if (!canRunOnTheOperatingSystem(a)) { + return List.of(); + } + + final Class execClass = exec.getDeclaringClass(); + final var supplierFuncName = a.value(); + + final MethodQuery methodQuery; + if (!a.value().contains(".")) { + // No class name specified + methodQuery = new MethodQuery(execClass.getName(), a.value()); + } else { + methodQuery = MethodQuery.fromQualifiedMethodName(supplierFuncName); + } + + final Method supplierMethod; + try { + final var parameterSupplierCandidates = findNullaryLikeMethods(methodQuery); + final Function classForName = toFunction(Class::forName); + final var supplierMethodClass = classForName.apply(methodQuery.className()); + if (parameterSupplierCandidates.isEmpty()) { + throw new RuntimeException(String.format( + "No parameter suppliers in [%s] class", + supplierMethodClass.getName())); + } + + var allParameterSuppliers = filterParameterSuppliers(supplierMethodClass).toList(); + + supplierMethod = findNullaryLikeMethods(methodQuery) + .stream() + .filter(allParameterSuppliers::contains) + .findFirst().orElseThrow(() -> { + var msg = String.format( + "No suitable parameter supplier found for %s(%s) annotation", + a, supplierFuncName); + trace(String.format( + "%s. Parameter suppliers of %s class:", msg, + execClass.getName())); + IntStream.range(0, allParameterSuppliers.size()).mapToObj(idx -> { + return String.format(" [%d/%d] %s()", idx + 1, + allParameterSuppliers.size(), + allParameterSuppliers.get(idx).getName()); + }).forEachOrdered(TestMethodSupplier::trace); + + return new RuntimeException(msg); + }); + } catch (NoSuchMethodException ex) { + throw new RuntimeException(String.format( + "Method not found for %s(%s) annotation", a, supplierFuncName)); + } + + return createArgs(supplierMethod).map(args -> { + return mapArgs(exec, args); + }).toList(); + } + + private boolean canRunOnTheOperatingSystem(Annotation a) { + switch (a) { + case Test t -> { + return canRunOnTheOperatingSystem(os, t.ifOS(), t.ifNotOS()); + } + case Parameters t -> { + return canRunOnTheOperatingSystem(os, t.ifOS(), t.ifNotOS()); + } + case Parameter t -> { + return canRunOnTheOperatingSystem(os, t.ifOS(), t.ifNotOS()); + } + case ParameterSupplier t -> { + return canRunOnTheOperatingSystem(os, t.ifOS(), t.ifNotOS()); + } + default -> { + return true; + } + } + } + + private static boolean isParameterized(Method method) { + return Stream.of( + Parameter.class, ParameterGroup.class, + ParameterSupplier.class, ParameterSupplierGroup.class + ).anyMatch(method::isAnnotationPresent); + } + + private static boolean isTest(Method method) { + return method.isAnnotationPresent(Test.class); + } + + private static boolean canRunOnTheOperatingSystem(OperatingSystem value, + OperatingSystem[] include, OperatingSystem[] exclude) { + Set suppordOperatingSystems = new HashSet<>(); + suppordOperatingSystems.addAll(List.of(include)); + suppordOperatingSystems.removeAll(List.of(exclude)); + return suppordOperatingSystems.contains(value); + } + + private static Parameter[] getMethodParameters(Method method) { + if (method.isAnnotationPresent(ParameterGroup.class)) { + return ((ParameterGroup) method.getAnnotation(ParameterGroup.class)).value(); + } + + if (method.isAnnotationPresent(Parameter.class)) { + return new Parameter[]{(Parameter) method.getAnnotation(Parameter.class)}; + } + + return new Parameter[0]; + } + + private static ParameterSupplier[] getMethodParameterSuppliers(Method method) { + if (method.isAnnotationPresent(ParameterSupplierGroup.class)) { + return ((ParameterSupplierGroup) method.getAnnotation(ParameterSupplierGroup.class)).value(); + } + + if (method.isAnnotationPresent(ParameterSupplier.class)) { + return new ParameterSupplier[]{(ParameterSupplier) method.getAnnotation( + ParameterSupplier.class)}; + } + + return new ParameterSupplier[0]; + } + + private static Stream filterParameterSuppliers(Class type) { + return Stream.of(type.getMethods()) + .filter(m -> m.getParameterCount() == 0) + .filter(m -> (m.getModifiers() & Modifier.STATIC) != 0) + .sorted(Comparator.comparing(Method::getName)); + } + + private static Stream createArgs(Method ... parameterSuppliers) throws + IllegalAccessException, InvocationTargetException { + List args = new ArrayList<>(); + for (var parameterSupplier : parameterSuppliers) { + args.addAll((Collection) parameterSupplier.invoke(null)); + } + return args.stream(); + } + + private static Object fromString(String value, Class toType) { + if (toType.isEnum()) { + return Enum.valueOf(toType, value); + } + Function converter = FROM_STRING.get(toType); + if (converter == null) { + throw new RuntimeException(String.format( + "Failed to find a conversion of [%s] string to %s type", + value, toType.getName())); + } + return converter.apply(value); + } + + private static void trace(String msg) { + if (TKit.VERBOSE_TEST_SETUP) { + TKit.log(msg); + } + } + + static class InvalidAnnotationException extends Exception { + InvalidAnnotationException(String msg) { + super(msg); + } + } + + private static class Verifier { + static boolean isTestClass(Class type) { + for (var method : type.getDeclaredMethods()) { + if (isParameterized(method) || isTest(method)) { + return true; + } + } + return false; + } + + static void verifyTestClass(Class type) throws InvalidAnnotationException { + boolean withTestAnnotations = false; + for (var method : type.getDeclaredMethods()) { + if (!withTestAnnotations && (isParameterized(method) || isTest(method))) { + withTestAnnotations = true; + } + verifyAnnotationsCorrect(method); + } + + if (!withTestAnnotations) { + throwNotTestClassException(type); + } + } + + static void throwNotTestClassException(Class type) throws InvalidAnnotationException { + throw new InvalidAnnotationException(String.format( + "Type [%s] is not a test class", type.getName())); + } + + private static void verifyAnnotationsCorrect(Method method) throws + InvalidAnnotationException { + var parameterized = isParameterized(method); + if (parameterized && !isTest(method)) { + throw new InvalidAnnotationException(String.format( + "Missing %s annotation on [%s] method", Test.class.getName(), method)); + } + + var isPublic = Modifier.isPublic(method.getModifiers()); + + if (isTest(method) && !isPublic) { + throw new InvalidAnnotationException(String.format( + "Non-public method [%s] with %s annotation", + method, Test.class.getName())); + } + + if (method.isAnnotationPresent(Parameters.class) && !isPublic) { + throw new InvalidAnnotationException(String.format( + "Non-public method [%s] with %s annotation", + method, Test.class.getName())); + } + } + } + + private enum TypeStatus { + NOT_TEST_CLASS, + TEST_CLASS, + VALID_TEST_CLASS, + } + + private final OperatingSystem os; + private final Map, TypeStatus> processedTypes = new HashMap<>(); + + private static final Object[] DEFAULT_CTOR_ARGS = new Object[0]; + + private static final Map> FROM_STRING; + + static { + Map> primitives = Map.of( + boolean.class, Boolean::valueOf, + byte.class, Byte::valueOf, + short.class, Short::valueOf, + int.class, Integer::valueOf, + long.class, Long::valueOf, + float.class, Float::valueOf, + double.class, Double::valueOf); + + Map> boxed = Map.of( + Boolean.class, Boolean::valueOf, + Byte.class, Byte::valueOf, + Short.class, Short::valueOf, + Integer.class, Integer::valueOf, + Long.class, Long::valueOf, + Float.class, Float::valueOf, + Double.class, Double::valueOf); + + Map> other = Map.of( + String.class, String::valueOf, + Path.class, Path::of); + + Map> combined = new HashMap<>(primitives); + combined.putAll(other); + combined.putAll(boxed); + + FROM_STRING = Collections.unmodifiableMap(combined); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/WindowsHelper.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/WindowsHelper.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/WindowsHelper.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers/jdk/jpackage/test/WindowsHelper.java 2026-01-15 15:34:19.000000000 +0000 @@ -28,9 +28,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.function.BiConsumer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; import jdk.jpackage.test.Functional.ThrowingRunnable; @@ -66,7 +69,7 @@ for (int attempt = 0; attempt < 8; ++attempt) { result = misexec.executeWithoutExitCodeCheck(); - if (result.exitCode == 1605) { + if (result.exitCode() == 1605) { // ERROR_UNKNOWN_PRODUCT, attempt to uninstall not installed // package return; @@ -75,7 +78,7 @@ // The given Executor may either be of an msiexec command or an // unpack.bat script containing the msiexec command. In the later // case, when misexec returns 1618, the unpack.bat may return 1603 - if ((result.exitCode == 1618) || (result.exitCode == 1603)) { + if ((result.exitCode() == 1618) || (result.exitCode() == 1603)) { // Another installation is already in progress. // Wait a little and try again. Long timeout = 1000L * (attempt + 3); // from 3 to 10 seconds @@ -188,6 +191,90 @@ "Failed to get file description of [%s]", pathToExeFile)); } + public static void killProcess(long pid) { + Executor.of("taskkill", "/F", "/PID", Long.toString(pid)).dumpOutput(true).execute(); + } + + public static void killAppLauncherProcess(JPackageCommand cmd, + String launcherName, int expectedCount) { + var pids = findAppLauncherPIDs(cmd, launcherName); + try { + TKit.assertEquals(expectedCount, pids.length, String.format( + "Check [%d] %s app launcher processes found running", + expectedCount, Optional.ofNullable(launcherName).map( + str -> "[" + str + "]").orElse("
"))); + } finally { + if (pids.length != 0) { + killProcess(pids[0]); + } + } + } + + private static long[] findAppLauncherPIDs(JPackageCommand cmd, String launcherName) { + // Get the list of PIDs and PPIDs of app launcher processes. + // wmic process where (name = "foo.exe") get ProcessID,ParentProcessID + List output = Executor.of("wmic", "process", "where", "(name", + "=", + "\"" + cmd.appLauncherPath(launcherName).getFileName().toString() + "\"", + ")", "get", "ProcessID,ParentProcessID").dumpOutput(true). + saveOutput().executeAndGetOutput(); + + if ("No Instance(s) Available.".equals(output.getFirst().trim())) { + return new long[0]; + } + + String[] headers = Stream.of(output.getFirst().split("\\s+", 2)).map( + String::trim).map(String::toLowerCase).toArray(String[]::new); + Pattern pattern; + if (headers[0].equals("parentprocessid") && headers[1].equals( + "processid")) { + pattern = Pattern.compile("^(?\\d+)\\s+(?\\d+)\\s+$"); + } else if (headers[1].equals("parentprocessid") && headers[0].equals( + "processid")) { + pattern = Pattern.compile("^(?\\d+)\\s+(?\\d+)\\s+$"); + } else { + throw new RuntimeException( + "Unrecognizable output of \'wmic process\' command"); + } + + List processes = output.stream().skip(1).map(line -> { + Matcher m = pattern.matcher(line); + long[] pids = null; + if (m.matches()) { + pids = new long[]{Long.parseLong(m.group("pid")), Long. + parseLong(m.group("ppid"))}; + } + return pids; + }).filter(Objects::nonNull).toList(); + + switch (processes.size()) { + case 2 -> { + final long parentPID; + final long childPID; + if (processes.get(0)[0] == processes.get(1)[1]) { + parentPID = processes.get(0)[0]; + childPID = processes.get(1)[0]; + } else if (processes.get(1)[0] == processes.get(0)[1]) { + parentPID = processes.get(1)[0]; + childPID = processes.get(0)[0]; + } else { + TKit.assertUnexpected("App launcher processes unrelated"); + return null; // Unreachable + } + return new long[]{parentPID, childPID}; + } + case 1 -> { + return new long[]{processes.get(0)[0]}; + } + default -> { + TKit.assertUnexpected(String.format( + "Unexpected number of running processes [%d]", + processes.size())); + return null; // Unreachable + } + } + } + private static boolean isUserLocalInstall(JPackageCommand cmd) { return cmd.hasArgument("--win-per-user-install"); } @@ -360,7 +447,7 @@ var status = Executor.of("reg", "query", keyPath, "/v", valueName) .saveOutput() .executeWithoutExitCodeCheck(); - if (status.exitCode == 1) { + if (status.exitCode() == 1) { // Should be the case of no such registry value or key String lookupString = "ERROR: The system was unable to find the specified registry key or value."; TKit.assertTextStream(lookupString) @@ -418,15 +505,15 @@ "bin\\server\\jvm.dll")); // jtreg resets %ProgramFiles% environment variable by some reason. - private final static Path PROGRAM_FILES = Path.of(Optional.ofNullable( + private static final Path PROGRAM_FILES = Path.of(Optional.ofNullable( System.getenv("ProgramFiles")).orElse("C:\\Program Files")); - private final static Path USER_LOCAL = Path.of(System.getProperty( + private static final Path USER_LOCAL = Path.of(System.getProperty( "user.home"), "AppData", "Local"); - private final static String SYSTEM_SHELL_FOLDERS_REGKEY = "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; - private final static String USER_SHELL_FOLDERS_REGKEY = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; + private static final String SYSTEM_SHELL_FOLDERS_REGKEY = "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; + private static final String USER_SHELL_FOLDERS_REGKEY = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders"; private static final Map REGISTRY_VALUES = new HashMap<>(); } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/AnnotationsTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/AnnotationsTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/AnnotationsTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/AnnotationsTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,408 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package jdk.jpackage.test; + +import static java.lang.StackWalker.Option.RETAIN_CLASS_REFERENCE; +import java.lang.reflect.Method; +import java.nio.file.Path; +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import static java.util.stream.Collectors.toMap; +import java.util.stream.Stream; +import jdk.internal.util.OperatingSystem; +import static jdk.internal.util.OperatingSystem.LINUX; +import jdk.jpackage.test.Annotations.Parameter; +import jdk.jpackage.test.Annotations.ParameterSupplier; +import jdk.jpackage.test.Annotations.Parameters; +import jdk.jpackage.test.Annotations.Test; +import static jdk.jpackage.test.Functional.ThrowingSupplier.toSupplier; + +/* + * @test + * @summary Test jpackage test library's annotation processor + * @library /test/jdk/tools/jpackage/helpers + * @build jdk.jpackage.test.* + * @run main/othervm/timeout=360 -Xmx512m jdk.jpackage.test.AnnotationsTest + */ +public class AnnotationsTest { + + public static void main(String... args) { + runTests(BasicTest.class, ParameterizedInstanceTest.class); + for (var os : OperatingSystem.values()) { + try { + TestBuilderConfig.setOperatingSystem(os); + TKit.log("Current operating system: " + os); + runTests(IfOSTest.class); + } finally { + TestBuilderConfig.setDefaults(); + } + } + } + + public static class BasicTest extends TestExecutionRecorder { + @Test + public void testNoArg() { + recordTestCase(); + } + + @Test + @Parameter("TRUE") + public int testNoArg(boolean v) { + recordTestCase(v); + return 0; + } + + @Test + @Parameter({}) + @Parameter("a") + @Parameter({"b", "c"}) + public void testVarArg(Path ... paths) { + recordTestCase((Object[]) paths); + } + + @Test + @Parameter({"12", "foo"}) + @Parameter({"-89", "bar", "more"}) + @Parameter({"-89", "bar", "more", "moore"}) + public void testVarArg2(int a, String b, String ... other) { + recordTestCase(a, b, other); + } + + @Test + @ParameterSupplier("dateSupplier") + @ParameterSupplier("jdk.jpackage.test.AnnotationsTest.dateSupplier") + public void testDates(LocalDate v) { + recordTestCase(v); + } + + public static Set getExpectedTestDescs() { + return Set.of( + "().testNoArg()", + "().testNoArg(true)", + "().testVarArg()", + "().testVarArg(a)", + "().testVarArg(b, c)", + "().testVarArg2(-89, bar, [more, moore](length=2))", + "().testVarArg2(-89, bar, [more](length=1))", + "().testVarArg2(12, foo, [](length=0))", + "().testDates(2018-05-05)", + "().testDates(2018-07-11)", + "().testDates(2034-05-05)", + "().testDates(2056-07-11)" + ); + } + + public static Collection dateSupplier() { + return List.of(new Object[][] { + { LocalDate.parse("2018-05-05") }, + { LocalDate.parse("2018-07-11") }, + }); + } + } + + public static class ParameterizedInstanceTest extends TestExecutionRecorder { + public ParameterizedInstanceTest(String... args) { + super((Object[]) args); + } + + public ParameterizedInstanceTest(int o) { + super(o); + } + + public ParameterizedInstanceTest(int a, Boolean[] b, String c, String ... other) { + super(a, b, c, other); + } + + @Test + public void testNoArgs() { + recordTestCase(); + } + + @Test + @ParameterSupplier("jdk.jpackage.test.AnnotationsTest.dateSupplier") + public void testDates(LocalDate v) { + recordTestCase(v); + } + + @Test + @Parameter("a") + public static void staticTest(String arg) { + staticRecorder.recordTestCase(arg); + } + + @Parameters + public static Collection input() { + return List.of(new Object[][] { + {}, + {55, new Boolean[]{false, true, false}, "foo", "bar"}, + {78}, + }); + } + + @Parameters + public static Collection input2() { + return List.of(new Object[][] { + {51, new boolean[]{true, true, true}, "foo"}, + {33}, + {55, null, null }, + {55, null, null, "1" }, + }); + } + + public static Set getExpectedTestDescs() { + return Set.of( + "().testNoArgs()", + "(33).testNoArgs()", + "(78).testNoArgs()", + "(55, [false, true, false](length=3), foo, [bar](length=1)).testNoArgs()", + "(51, [true, true, true](length=3), foo, [](length=0)).testNoArgs()", + "().testDates(2034-05-05)", + "().testDates(2056-07-11)", + "(33).testDates(2034-05-05)", + "(33).testDates(2056-07-11)", + "(51, [true, true, true](length=3), foo, [](length=0)).testDates(2034-05-05)", + "(51, [true, true, true](length=3), foo, [](length=0)).testDates(2056-07-11)", + "(55, [false, true, false](length=3), foo, [bar](length=1)).testDates(2034-05-05)", + "(55, [false, true, false](length=3), foo, [bar](length=1)).testDates(2056-07-11)", + "(78).testDates(2034-05-05)", + "(78).testDates(2056-07-11)", + "(55, null, null, [1](length=1)).testDates(2034-05-05)", + "(55, null, null, [1](length=1)).testDates(2056-07-11)", + "(55, null, null, [1](length=1)).testNoArgs()", + "(55, null, null, [](length=0)).testDates(2034-05-05)", + "(55, null, null, [](length=0)).testDates(2056-07-11)", + "(55, null, null, [](length=0)).testNoArgs()", + "().staticTest(a)" + ); + } + + private final static TestExecutionRecorder staticRecorder = new TestExecutionRecorder(ParameterizedInstanceTest.class); + } + + public static class IfOSTest extends TestExecutionRecorder { + public IfOSTest(int a, String b) { + super(a, b); + } + + @Test(ifOS = OperatingSystem.LINUX) + public void testNoArgs() { + recordTestCase(); + } + + @Test(ifNotOS = OperatingSystem.LINUX) + public void testNoArgs2() { + recordTestCase(); + } + + @Test + @Parameter(value = "foo", ifOS = OperatingSystem.LINUX) + @Parameter(value = {"foo", "bar"}, ifOS = { OperatingSystem.LINUX, OperatingSystem.MACOS }) + @Parameter(value = {}, ifNotOS = { OperatingSystem.WINDOWS }) + public void testVarArgs(String ... args) { + recordTestCase((Object[]) args); + } + + @Test + @ParameterSupplier(value = "jdk.jpackage.test.AnnotationsTest.dateSupplier", ifOS = OperatingSystem.WINDOWS) + public void testDates(LocalDate v) { + recordTestCase(v); + } + + @Parameters(ifOS = OperatingSystem.LINUX) + public static Collection input() { + return Set.of(new Object[][] { + {7, null}, + }); + } + + @Parameters(ifNotOS = {OperatingSystem.LINUX, OperatingSystem.MACOS}) + public static Collection input2() { + return Set.of(new Object[][] { + {10, "hello"}, + }); + } + + @Parameters(ifNotOS = OperatingSystem.LINUX) + public static Collection input3() { + return Set.of(new Object[][] { + {15, "bye"}, + }); + } + + public static Set getExpectedTestDescs() { + switch (TestBuilderConfig.getDefault().getOperatingSystem()) { + case LINUX -> { + return Set.of( + "(7, null).testNoArgs()", + "(7, null).testVarArgs()", + "(7, null).testVarArgs(foo)", + "(7, null).testVarArgs(foo, bar)" + ); + } + + case MACOS -> { + return Set.of( + "(15, bye).testNoArgs2()", + "(15, bye).testVarArgs()", + "(15, bye).testVarArgs(foo, bar)" + ); + } + + case WINDOWS -> { + return Set.of( + "(15, bye).testDates(2034-05-05)", + "(15, bye).testDates(2056-07-11)", + "(15, bye).testNoArgs2()", + "(10, hello).testDates(2034-05-05)", + "(10, hello).testDates(2056-07-11)", + "(10, hello).testNoArgs2()" + ); + } + + case AIX -> { + return Set.of( + ); + } + } + + throw new UnsupportedOperationException(); + } + } + + public static Collection dateSupplier() { + return List.of(new Object[][] { + { LocalDate.parse("2034-05-05") }, + { LocalDate.parse("2056-07-11") }, + }); + } + + private static void runTests(Class... tests) { + ACTUAL_TEST_DESCS.get().clear(); + + var expectedTestDescs = Stream.of(tests) + .map(AnnotationsTest::getExpectedTestDescs) + .flatMap(x -> x) + // Collect in the map to check for collisions for free + .collect(toMap(x -> x, x -> "")) + .keySet(); + + var args = Stream.of(tests).map(test -> { + return String.format("--jpt-run=%s", test.getName()); + }).toArray(String[]::new); + + try { + Main.main(args); + assertRecordedTestDescs(expectedTestDescs); + } catch (Throwable t) { + t.printStackTrace(System.err); + System.exit(1); + } + } + + private static Stream getExpectedTestDescs(Class type) { + return toSupplier(() -> { + var method = type.getMethod("getExpectedTestDescs"); + var testDescPefix = type.getName(); + return ((Set)method.invoke(null)).stream().map(desc -> { + return testDescPefix + desc; + }); + }).get(); + } + + private static void assertRecordedTestDescs(Set expectedTestDescs) { + var comm = Comm.compare(expectedTestDescs, ACTUAL_TEST_DESCS.get()); + if (!comm.unique1().isEmpty()) { + System.err.println("Missing test case signatures:"); + comm.unique1().stream().sorted().sequential().forEachOrdered(System.err::println); + System.err.println("<>"); + } + + if (!comm.unique2().isEmpty()) { + System.err.println("Unexpected test case signatures:"); + comm.unique2().stream().sorted().sequential().forEachOrdered(System.err::println); + System.err.println("<>"); + } + + if (!comm.unique2().isEmpty() || !comm.unique1().isEmpty()) { + // Don't use TKit asserts as this call is outside the test execution + throw new AssertionError("Test case signatures mismatched"); + } + } + + private static class TestExecutionRecorder { + protected TestExecutionRecorder(Object ... args) { + this.testClass = getClass(); + this.testDescBuilder = TestInstance.TestDesc.createBuilder().ctorArgs(args); + } + + TestExecutionRecorder(Class testClass) { + this.testClass = testClass; + this.testDescBuilder = TestInstance.TestDesc.createBuilder().ctorArgs(); + } + + protected void recordTestCase(Object ... args) { + testDescBuilder.methodArgs(args).method(getCurrentTestCase()); + var testCaseDescs = ACTUAL_TEST_DESCS.get(); + var testCaseDesc = testDescBuilder.get().testFullName(); + TKit.assertTrue(!testCaseDescs.contains(testCaseDesc), String.format( + "Check this test case is executed for the first time", + testCaseDesc)); + TKit.assertTrue(!executed, "Check this test case instance is not reused"); + executed = true; + testCaseDescs.add(testCaseDesc); + } + + private Method getCurrentTestCase() { + return StackWalker.getInstance(RETAIN_CLASS_REFERENCE).walk(frames -> { + return frames.map(frame -> { + var methodType = frame.getMethodType(); + var methodName = frame.getMethodName(); + var methodReturn = methodType.returnType(); + var methodParameters = methodType.parameterArray(); + return Stream.of(testClass.getDeclaredMethods()).filter(method -> { + return method.getName().equals(methodName) + && method.getReturnType().equals(methodReturn) + && Arrays.equals(method.getParameterTypes(), methodParameters) + && method.isAnnotationPresent(Test.class); + }).findFirst(); + }).dropWhile(Optional::isEmpty).map(Optional::get).findFirst(); + }).get(); + } + + private boolean executed; + private final TestInstance.TestDesc.Builder testDescBuilder; + private final Class testClass; + } + + private static final ThreadLocal> ACTUAL_TEST_DESCS = new ThreadLocal<>() { + @Override + protected Set initialValue() { + return new HashSet<>(); + } + }; +} diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/JavaAppDescTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/JavaAppDescTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/JavaAppDescTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/JavaAppDescTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package jdk.jpackage.test; + +import java.nio.file.Path; +import java.util.List; +import java.util.function.UnaryOperator; +import jdk.jpackage.test.Annotations.Parameter; +import jdk.jpackage.test.Annotations.Test; +import jdk.jpackage.test.Annotations.Parameters; + +public class JavaAppDescTest { + + public JavaAppDescTest(JavaAppDesc expectedAppDesc, JavaAppDesc actualAppDesc) { + this.expectedAppDesc = expectedAppDesc; + this.actualAppDesc = actualAppDesc; + } + + @Test + public void test() { + TKit.assertEquals(expectedAppDesc.toString(), actualAppDesc.toString(), null); + TKit.assertTrue(expectedAppDesc.equals(actualAppDesc), null); + } + + @Test + @Parameter({"Foo", "Foo.class"}) + @Parameter({"com.bar.A", "com/bar/A.class"}) + @Parameter({"module/com.bar.A", "com/bar/A.class"}) + public static void testClassFilePath(String... args) { + var appDesc = args[0]; + var expectedClassFilePath = Path.of(args[1]); + TKit.assertEquals(expectedClassFilePath.toString(), JavaAppDesc.parse( + appDesc).classFilePath().toString(), null); + } + + @Parameters + public static List input() { + return List.of(new Object[][] { + createTestCase("", "hello.jar:Hello"), + createTestCase("foo.jar*", "foo.jar*hello.jar:Hello"), + createTestCase("Bye", "hello.jar:Bye"), + createTestCase("bye.jar:", "bye.jar:Hello"), + createTestCase("duke.jar:com.other/com.other.foo.bar.Buz!@3.7", appDesc -> { + return appDesc + .setBundleFileName("duke.jar") + .setModuleName("com.other") + .setClassName("com.other.foo.bar.Buz") + .setWithMainClass(true) + .setModuleVersion("3.7"); + }), + }); + } + + private static JavaAppDesc[] createTestCase(String inputAppDesc, String expectedAppDescStr) { + return createTestCase(inputAppDesc, appDesc -> { + return stripDefaultSrcJavaPath(JavaAppDesc.parse(expectedAppDescStr)); + }); + } + + private static JavaAppDesc stripDefaultSrcJavaPath(JavaAppDesc appDesc) { + var defaultAppDesc = HelloApp.createDefaltAppDesc(); + if (appDesc.srcJavaPath().equals(defaultAppDesc.srcJavaPath())) { + appDesc.setSrcJavaPath(null); + } + return appDesc; + } + + private static JavaAppDesc[] createTestCase(String appDesc, UnaryOperator config) { + var actualAppDesc = stripDefaultSrcJavaPath(JavaAppDesc.parse(appDesc)); + + var expectedAppDesc = config.apply(stripDefaultSrcJavaPath(HelloApp.createDefaltAppDesc())); + + return new JavaAppDesc[] {expectedAppDesc, actualAppDesc}; + } + + private final JavaAppDesc expectedAppDesc; + private final JavaAppDesc actualAppDesc; +} diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TKitTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TKitTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TKitTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TKitTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,244 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package jdk.jpackage.test; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStreamReader; +import java.io.PrintStream; +import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Objects; +import java.util.stream.Stream; +import jdk.jpackage.test.Annotations.Parameters; +import jdk.jpackage.test.Annotations.Test; +import jdk.jpackage.test.Functional.ThrowingRunnable; +import static jdk.jpackage.test.Functional.ThrowingRunnable.toRunnable; +import static jdk.jpackage.test.Functional.ThrowingSupplier.toSupplier; + +public class TKitTest { + + @Parameters + public static Collection assertTestsData() { + List data = new ArrayList<>(); + + var assertFunc = MethodCallConfig.build("assertTrue", boolean.class, String.class); + data.addAll(List.of(assertFunc.args(true).pass().expectLog("assertTrue()").createForMessage("Catbird"))); + data.addAll(List.of(assertFunc.args(false).fail().expectLog("Failed").createForMessage("Catbird"))); + + assertFunc = MethodCallConfig.build("assertFalse", boolean.class, String.class); + data.addAll(List.of(assertFunc.args(false).pass().expectLog("assertFalse()").createForMessage("Stork"))); + data.addAll(List.of(assertFunc.args(true).fail().expectLog("Failed").createForMessage("Stork"))); + + assertFunc = MethodCallConfig.build("assertEquals", String.class, String.class, String.class); + data.addAll(List.of(assertFunc.args("a", "a").pass().expectLog("assertEquals(a)").createForMessage("Crow"))); + data.addAll(List.of(assertFunc.args("a", "b").fail().expectLog("Expected [a]. Actual [b]").createForMessage("Crow"))); + + assertFunc = MethodCallConfig.build("assertEquals", long.class, long.class, String.class); + data.addAll(List.of(assertFunc.args(7, 7).pass().expectLog("assertEquals(7)").createForMessage("Owl"))); + data.addAll(List.of(assertFunc.args(7, 10).fail().expectLog("Expected [7]. Actual [10]").createForMessage("Owl"))); + + assertFunc = MethodCallConfig.build("assertNotEquals", String.class, String.class, String.class); + data.addAll(List.of(assertFunc.args("a", "b").pass().expectLog("assertNotEquals(a, b)").createForMessage("Tit"))); + data.addAll(List.of(assertFunc.args("a", "a").fail().expectLog("Unexpected [a] value").createForMessage("Tit"))); + + assertFunc = MethodCallConfig.build("assertNotEquals", long.class, long.class, String.class); + data.addAll(List.of(assertFunc.args(7, 10).pass().expectLog("assertNotEquals(7, 10)").createForMessage("Duck"))); + data.addAll(List.of(assertFunc.args(7, 7).fail().expectLog("Unexpected [7] value").createForMessage("Duck"))); + + assertFunc = MethodCallConfig.build("assertNull", Object.class, String.class); + data.addAll(List.of(assertFunc.args((Object) null).pass().expectLog("assertNull()").createForMessage("Ibis"))); + data.addAll(List.of(assertFunc.args("v").fail().expectLog("Unexpected not null value [v]").createForMessage("Ibis"))); + + assertFunc = MethodCallConfig.build("assertNotNull", Object.class, String.class); + data.addAll(List.of(assertFunc.args("v").pass().expectLog("assertNotNull(v)").createForMessage("Pigeon"))); + data.addAll(List.of(assertFunc.args((Object) null).fail().expectLog("Unexpected null value").createForMessage("Pigeon"))); + + assertFunc = MethodCallConfig.build("assertStringListEquals", List.class, List.class, String.class); + data.addAll(List.of(assertFunc.args(List.of(), List.of()).pass().expectLog( + "assertStringListEquals()").createForMessage("Gull"))); + + data.addAll(List.of(assertFunc.args(List.of("a", "b"), List.of("a", "b")).pass().expectLog( + "assertStringListEquals()", + "assertStringListEquals(1, a)", + "assertStringListEquals(2, b)").createForMessage("Pelican"))); + + assertFunc.fail().withAutoExpectLogPrefix(false); + for (var msg : new String[] { "Raven", null }) { + data.addAll(List.of(assertFunc.args(List.of("a"), List.of("a", "b"), msg).expectLog( + concatMessages("TRACE: assertStringListEquals()", msg), + "TRACE: assertStringListEquals(1, a)", + concatMessages("ERROR: Actual list is longer than expected by 1 elements", msg) + ).create())); + + data.addAll(List.of(assertFunc.args(List.of("n", "m"), List.of("n"), msg).expectLog( + concatMessages("TRACE: assertStringListEquals()", msg), + "TRACE: assertStringListEquals(1, n)", + concatMessages("ERROR: Actual list is shorter than expected by 1 elements", msg) + ).create())); + + data.addAll(List.of(assertFunc.args(List.of("a", "b"), List.of("n", "m"), msg).expectLog( + concatMessages("TRACE: assertStringListEquals()", msg), + concatMessages("ERROR: (1) Expected [a]. Actual [n]", msg) + ).create())); + } + + return data.stream().map(v -> { + return new Object[]{v}; + }).toList(); + } + + public record MethodCallConfig(Method method, Object[] args, boolean expectFail, String[] expectLog) { + @Override + public String toString() { + return String.format("%s%s%s", method.getName(), Arrays.toString(args), expectFail ? "!" : ""); + } + + static Builder build(String name, Class ... parameterTypes) { + return new Builder(name, parameterTypes); + } + + private static class Builder { + Builder(Method method) { + Objects.requireNonNull(method); + this.method = method; + } + + Builder(String name, Class ... parameterTypes) { + method = toSupplier(() -> TKit.class.getMethod(name, parameterTypes)).get(); + } + + MethodCallConfig create() { + String[] effectiveExpectLog; + if (!withAutoExpectLogPrefix) { + effectiveExpectLog = expectLog; + } else { + var prefix = expectFail ? "ERROR: " : "TRACE: "; + effectiveExpectLog = Stream.of(expectLog).map(line -> { + return prefix + line; + }).toArray(String[]::new); + } + return new MethodCallConfig(method, args, expectFail, effectiveExpectLog); + } + + MethodCallConfig[] createForMessage(String msg) { + return Arrays.asList(msg, null).stream().map(curMsg -> { + var builder = new Builder(method); + builder.expectFail = expectFail; + builder.withAutoExpectLogPrefix = withAutoExpectLogPrefix; + builder.args = Stream.concat(Stream.of(args), Stream.of(curMsg)).toArray(); + builder.expectLog = Arrays.copyOf(expectLog, expectLog.length); + builder.expectLog[0] = concatMessages(builder.expectLog[0], curMsg); + return builder.create(); + }).toArray(MethodCallConfig[]::new); + } + + Builder fail() { + expectFail = true; + return this; + } + + Builder pass() { + expectFail = false; + return this; + } + + Builder args(Object ... v) { + args = v; + return this; + } + + Builder expectLog(String expectLogFirstStr, String ... extra) { + expectLog = Stream.concat(Stream.of(expectLogFirstStr), Stream.of(extra)).toArray(String[]::new); + return this; + } + + Builder withAutoExpectLogPrefix(boolean v) { + withAutoExpectLogPrefix = v; + return this; + } + + private final Method method; + private Object[] args = new Object[0]; + private boolean expectFail; + private String[] expectLog; + private boolean withAutoExpectLogPrefix = true; + } + } + + public TKitTest(MethodCallConfig methodCall) { + this.methodCall = methodCall; + } + + @Test + public void test() { + runAssertWithExpectedLogOutput(() -> { + methodCall.method.invoke(null, methodCall.args); + }, methodCall.expectFail, methodCall.expectLog); + } + + private static void runAssertWithExpectedLogOutput(ThrowingRunnable action, + boolean expectFail, String... expectLogStrings) { + runWithExpectedLogOutput(() -> { + TKit.assertAssert(!expectFail, toRunnable(action)); + }, expectLogStrings); + } + + private static void runWithExpectedLogOutput(ThrowingRunnable action, + String... expectLogStrings) { + final var buf = new ByteArrayOutputStream(); + try (PrintStream ps = new PrintStream(buf, true, StandardCharsets.UTF_8)) { + TKit.withExtraLogStream(action, ps); + } finally { + toRunnable(() -> { + var output = new BufferedReader(new InputStreamReader( + new ByteArrayInputStream(buf.toByteArray()), + StandardCharsets.UTF_8)).lines().map(line -> { + // Skip timestamp + return line.substring(LOG_MSG_TIMESTAMP_LENGTH); + }).toList(); + if (output.size() == 1 && expectLogStrings.length == 1) { + TKit.assertEquals(expectLogStrings[0], output.get(0), null); + } else { + TKit.assertStringListEquals(List.of(expectLogStrings), output, null); + } + }).run(); + } + } + + private static String concatMessages(String msg, String msg2) { + if (msg2 != null && !msg2.isBlank()) { + return msg + ": " + msg2; + } + return msg; + } + + private final MethodCallConfig methodCall; + + private static final int LOG_MSG_TIMESTAMP_LENGTH = "[HH:mm:ss.SSS] ".length(); +} diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TestSuite.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TestSuite.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TestSuite.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/helpers-test/jdk/jpackage/test/TestSuite.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package jdk.jpackage.test; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; + +/* + * @test + * @summary Unit tests for jpackage test library + * @library /test/jdk/tools/jpackage/helpers + * @library /test/jdk/tools/jpackage/helpers-test + * @build jdk.jpackage.test.* + * @run main/othervm/timeout=360 -Xmx512m jdk.jpackage.test.TestSuite + */ + +public final class TestSuite { + public static void main(String args[]) throws Throwable { + final var pkgName = TestSuite.class.getPackageName(); + final var javaSuffix = ".java"; + final var testSrcNameSuffix = "Test" + javaSuffix; + + final var unitTestDir = TKit.TEST_SRC_ROOT.resolve(Path.of("helpers-test", pkgName.split("\\."))); + + final List runTestArgs = new ArrayList<>(); + runTestArgs.addAll(List.of(args)); + + try (var javaSources = Files.list(unitTestDir)) { + runTestArgs.addAll(javaSources.filter(path -> { + return path.getFileName().toString().endsWith(testSrcNameSuffix); + }).map(path -> { + var filename = path.getFileName().toString(); + return String.join(".", pkgName, filename.substring(0, filename.length() - javaSuffix.length())); + }).map(testClassName -> { + return "--jpt-run=" + testClassName; + }).toList()); + } + + Main.main(runTestArgs.toArray(String[]::new)); + } +} diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/resources/Win8365790Test.ps1 openjdk-21-21.0.10+7/test/jdk/tools/jpackage/resources/Win8365790Test.ps1 --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/resources/Win8365790Test.ps1 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/resources/Win8365790Test.ps1 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,83 @@ +# +# Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code 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 +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +param ( + # Path to executable to start. + [Parameter(Mandatory=$true)] + [string]$Executable, + + # Timeout to wait after the executable has been started. + [Parameter(Mandatory=$true)] + [double]$TimeoutSeconds +) + +$type = @{ + TypeDefinition = @' +using System; +using System.Runtime.InteropServices; + +namespace Stuff { + + internal struct Details { + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static extern bool GenerateConsoleCtrlEvent(uint dwCtrlEvent, uint dwProcessGroupId); + } + + public struct Facade { + public static void GenerateConsoleCtrlEvent() { + if (!Details.GenerateConsoleCtrlEvent(0, 0)) { + reportLastErrorAndExit("GenerateConsoleCtrlEvent"); + } + } + + internal static void reportLastErrorAndExit(String func) { + int errorCode = Marshal.GetLastWin32Error(); + Console.Error.WriteLine(func + " function failed with error code: " + errorCode); + Environment.Exit(100); + } + } +} +'@ +} +Add-Type @type + +Set-PSDebug -Trace 2 + +# Launch the target executable. +# `-NoNewWindow` parameter will attach the started process to the existing console. +$childProc = Start-Process -PassThru -NoNewWindow $Executable + +# Wait a bit to let the started process complete initialization. +Start-Sleep -Seconds $TimeoutSeconds + +# Call GenerateConsoleCtrlEvent to send a CTRL+C event to the launched executable. +# CTRL+C event will be sent to all processes attached to the console of the current process, +# i.e., it will be sent to this PowerShell process and to the started $Executable process because +# it was configured to attach to the existing console (the console of this PowerShell process). +[Stuff.Facade]::GenerateConsoleCtrlEvent() + +# Wait for child process termination +Wait-Process -InputObject $childProc + +Exit 0 diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/AddLShortcutTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AddLShortcutTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/AddLShortcutTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AddLShortcutTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -22,8 +22,6 @@ */ import java.nio.file.Path; -import java.io.File; -import java.util.Map; import java.lang.invoke.MethodHandles; import jdk.jpackage.test.PackageTest; import jdk.jpackage.test.FileAssociations; @@ -109,6 +107,6 @@ packageTest.run(); } - private final static Path GOLDEN_ICON = TKit.TEST_SRC_ROOT.resolve(Path.of( + private static final Path GOLDEN_ICON = TKit.TEST_SRC_ROOT.resolve(Path.of( "resources", "icon" + TKit.ICON_SUFFIX)); } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/AddLauncherTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AddLauncherTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/AddLauncherTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AddLauncherTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -22,7 +22,6 @@ */ import java.nio.file.Path; -import java.io.File; import java.util.Map; import java.lang.invoke.MethodHandles; import jdk.jpackage.test.PackageTest; @@ -229,11 +228,11 @@ TKit.assertEquals(ExpectedCN, mainClass, String.format("Check value of app.mainclass=[%s]" + "in NonModularAppLauncher cfg file is as expected", ExpectedCN)); - TKit.assertTrue(classpath.startsWith("$APPDIR" + File.separator - + nonModularAppDesc.jarFileName()), + TKit.assertTrue(classpath.startsWith(Path.of("$APPDIR", + nonModularAppDesc.jarFileName()).toString()), "Check app.classpath value in ModularAppLauncher cfg file"); } - private final static Path GOLDEN_ICON = TKit.TEST_SRC_ROOT.resolve(Path.of( + private static final Path GOLDEN_ICON = TKit.TEST_SRC_ROOT.resolve(Path.of( "resources", "icon" + TKit.ICON_SUFFIX)); } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/AppContentTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AppContentTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/AppContentTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AppContentTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -21,22 +21,25 @@ * questions. */ -import java.nio.file.Path; +import java.io.IOException; import java.nio.file.Files; -import jdk.jpackage.internal.ApplicationLayout; +import java.nio.file.Path; import jdk.jpackage.test.PackageTest; -import jdk.jpackage.test.PackageType; import jdk.jpackage.test.TKit; import jdk.jpackage.test.Annotations.Test; -import jdk.jpackage.test.Annotations.Parameter; import jdk.jpackage.test.Annotations.Parameters; import java.util.Arrays; import java.util.Collection; import java.util.List; +import static java.util.stream.Collectors.joining; +import java.util.stream.Stream; +import jdk.jpackage.internal.IOUtils; +import jdk.jpackage.test.Functional.ThrowingFunction; +import jdk.jpackage.test.JPackageCommand; /** - * Tests generation of packages with input folder containing empty folders. + * Tests generation of packages with additional content in app image. */ /* @@ -51,14 +54,18 @@ */ public class AppContentTest { - private static final String TEST_JAVA = TKit.TEST_SRC_ROOT.resolve( - "apps/PrintEnv.java").toString(); - private static final String TEST_DUKE = TKit.TEST_SRC_ROOT.resolve( - "apps/dukeplug.png").toString(); - private static final String TEST_DIR = TKit.TEST_SRC_ROOT.resolve( - "apps").toString(); - private static final String TEST_BAD = TKit.TEST_SRC_ROOT.resolve( - "non-existant").toString(); + private static final String TEST_JAVA = "apps/PrintEnv.java"; + private static final String TEST_DUKE = "apps/dukeplug.png"; + private static final String TEST_DIR = "apps"; + private static final String TEST_BAD = "non-existant"; + + // On OSX `--app-content` paths will be copied into the "Contents" folder + // of the output app image. + // "codesign" imposes restrictions on the directory structure of "Contents" folder. + // In particular, random files should be placed in "Contents/Resources" folder + // otherwise "codesign" will fail to sign. + // Need to prepare arguments for `--app-content` accordingly. + private final static boolean copyInResources = TKit.isOSX(); private final List testPathArgs; @@ -78,28 +85,90 @@ @Test public void test() throws Exception { + final int expectedJPackageExitCode; + if (testPathArgs.contains(TEST_BAD)) { + expectedJPackageExitCode = 1; + } else { + expectedJPackageExitCode = 0; + } + + var appContentInitializer = new AppContentInitializer(testPathArgs); new PackageTest().configureHelloApp() - .addInitializer(cmd -> { - for (String arg : testPathArgs) { - cmd.addArguments("--app-content", arg); - } - }) + .addRunOnceInitializer(appContentInitializer::initAppContent) + .addInitializer(appContentInitializer::applyTo) .addInstallVerifier(cmd -> { - ApplicationLayout appLayout = cmd.appLayout(); - Path contentDir = appLayout.contentDirectory(); + Path baseDir = getAppContentRoot(cmd); for (String arg : testPathArgs) { List paths = Arrays.asList(arg.split(",")); for (String p : paths) { Path name = Path.of(p).getFileName(); - TKit.assertPathExists(contentDir.resolve(name), true); + TKit.assertPathExists(baseDir.resolve(name), true); } } }) - // On macOS we always signing app image and signing will fail, since - // test produces invalid app bundle. - .setExpectedExitCode(testPathArgs.contains(TEST_BAD) || TKit.isOSX() ? 1 : 0) + .setExpectedExitCode(expectedJPackageExitCode) .run(); + } + + private static Path getAppContentRoot(JPackageCommand cmd) { + Path contentDir = cmd.appLayout().contentDirectory(); + if (copyInResources) { + return contentDir.resolve("Resources"); + } else { + return contentDir; + } + } + + private static final class AppContentInitializer { + AppContentInitializer(List appContentArgs) { + appContentPathGroups = appContentArgs.stream().map(arg -> { + return Stream.of(arg.split(",")).map(Path::of).toList(); + }).toList(); } + + void initAppContent() { + jpackageArgs = appContentPathGroups.stream() + .map(AppContentInitializer::initAppContentPaths) + .mapMulti((appContentPaths, consumer) -> { + consumer.accept("--app-content"); + consumer.accept( + appContentPaths.stream().map(Path::toString).collect( + joining(","))); + }).toList(); + } + + void applyTo(JPackageCommand cmd) { + cmd.addArguments(jpackageArgs); + } + + private static Path copyAppContentPath(Path appContentPath) throws IOException { + var appContentArg = TKit.createTempDirectory("app-content").resolve("Resources"); + var srcPath = TKit.TEST_SRC_ROOT.resolve(appContentPath); + var dstPath = appContentArg.resolve(srcPath.getFileName()); + Files.createDirectories(dstPath.getParent()); + IOUtils.copyRecursive(srcPath, dstPath); + return appContentArg; + } + + private static List initAppContentPaths(List appContentPaths) { + if (copyInResources) { + return appContentPaths.stream().map(appContentPath -> { + if (appContentPath.endsWith(TEST_BAD)) { + return appContentPath; + } else { + return ThrowingFunction.toFunction( + AppContentInitializer::copyAppContentPath).apply( + appContentPath); + } + }).toList(); + } else { + return appContentPaths.stream().map(TKit.TEST_SRC_ROOT::resolve).toList(); + } + } + + private List jpackageArgs; + private final List> appContentPathGroups; + } } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/AppLauncherEnvTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AppLauncherEnvTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/AppLauncherEnvTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/AppLauncherEnvTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,6 +30,7 @@ import jdk.jpackage.test.JPackageCommand; import jdk.jpackage.test.Annotations.Test; import jdk.jpackage.test.Executor; +import static jdk.jpackage.test.HelloApp.configureAndExecute; import jdk.jpackage.test.TKit; /** @@ -53,6 +54,7 @@ JPackageCommand cmd = JPackageCommand .helloAppImage(TEST_APP_JAVA + "*Hello") + .ignoreFakeRuntime() .addArguments("--java-options", "-D" + testAddDirProp + "=$APPDIR"); @@ -60,16 +62,12 @@ final String envVarName = envVarName(); - final int attempts = 3; - final int waitBetweenAttemptsSeconds = 5; - List output = new Executor() + List output = configureAndExecute(0, new Executor() .saveOutput() .setExecutable(cmd.appLauncherPath().toAbsolutePath()) .addArguments("--print-env-var=" + envVarName) .addArguments("--print-sys-prop=" + testAddDirProp) - .addArguments("--print-sys-prop=" + "java.library.path") - .executeAndRepeatUntilExitCode(0, attempts, - waitBetweenAttemptsSeconds).getOutput(); + .addArguments("--print-sys-prop=" + "java.library.path")).getOutput(); BiFunction getValue = (idx, name) -> { return output.get(idx).substring((name + "=").length()); diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/BasicTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/BasicTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/BasicTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/BasicTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -72,7 +72,7 @@ .saveConsoleOutput(true) .addArguments("--app-version", appVersion, "--arguments", "jpackage.app-version jpackage.app-path") - .ignoreDefaultRuntime(true); + .ignoreFakeRuntime(); cmd.executeAndAssertImageCreated(); Path launcherPath = cmd.appLauncherPath(); diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/InstallDirTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/InstallDirTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/share/InstallDirTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/share/InstallDirTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -22,13 +22,12 @@ */ import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; +import jdk.internal.util.OperatingSystem; import jdk.jpackage.test.TKit; import jdk.jpackage.test.PackageTest; import jdk.jpackage.test.PackageType; -import jdk.jpackage.test.Functional; import jdk.jpackage.test.Annotations.Parameter; +import jdk.jpackage.test.Annotations.Test; /** * Test --install-dir parameter. Output of the test should be @@ -76,28 +75,18 @@ */ public class InstallDirTest { - public static void testCommon() { - final Map INSTALL_DIRS = Functional.identity(() -> { - Map reply = new HashMap<>(); - reply.put(PackageType.WIN_MSI, Path.of("TestVendor\\InstallDirTest1234")); - reply.put(PackageType.WIN_EXE, reply.get(PackageType.WIN_MSI)); - - reply.put(PackageType.LINUX_DEB, Path.of("/opt/jpackage")); - reply.put(PackageType.LINUX_RPM, reply.get(PackageType.LINUX_DEB)); - - reply.put(PackageType.MAC_PKG, Path.of("/Applications/jpackage")); - reply.put(PackageType.MAC_DMG, reply.get(PackageType.MAC_PKG)); - - return reply; - }).get(); - + @Test + @Parameter(value = "TestVendor\\InstallDirTest1234", ifOS = OperatingSystem.WINDOWS) + @Parameter(value = "/opt/jpackage", ifOS = OperatingSystem.LINUX) + @Parameter(value = "/Applications/jpackage", ifOS = OperatingSystem.MACOS) + public static void testCommon(Path installDir) { new PackageTest().configureHelloApp() .addInitializer(cmd -> { - cmd.addArguments("--install-dir", INSTALL_DIRS.get( - cmd.packageType())); + cmd.addArguments("--install-dir", installDir); }).run(); } + @Test(ifOS = OperatingSystem.LINUX) @Parameter("/") @Parameter(".") @Parameter("foo") diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/windows/Win8365790Test.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/windows/Win8365790Test.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/windows/Win8365790Test.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/windows/Win8365790Test.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import static jdk.jpackage.test.HelloApp.configureAndExecute; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.Duration; +import jdk.jpackage.test.AdditionalLauncher; +import jdk.jpackage.test.Annotations.Test; +import jdk.jpackage.test.CfgFile; +import jdk.jpackage.test.Executor; +import jdk.jpackage.test.JPackageCommand; +import jdk.jpackage.test.TKit; + +/** + * Test the child process has a chance to handle Ctrl+C signal. + */ + +/* + * @test + * @summary Test case for JDK-8365790 + * @library /test/jdk/tools/jpackage/helpers + * @build jdk.jpackage.test.* + * @build Win8365790Test + * @requires (os.family == "windows") + * @run main/othervm/timeout=100 -Xmx512m jdk.jpackage.test.Main + * --jpt-run=Win8365790Test + */ +public class Win8365790Test { + + @Test + public void test() throws InterruptedException, IOException { + + var outputDir = TKit.createTempDirectory("response-dir"); + + var mainOutputFile = outputDir.resolve("output.txt"); + var mainTraceFile = outputDir.resolve("trace.txt"); + + var probeOutputFile = outputDir.resolve("probe-output.txt"); + var probeTraceFile = outputDir.resolve("probe-trace.txt"); + + var cmd = JPackageCommand + .helloAppImage(TEST_APP_JAVA + "*UseShutdownHook") + .ignoreFakeRuntime() + .addArguments("--java-options", "-Djpackage.test.trace-file=" + mainTraceFile.toString()) + .addArguments("--arguments", mainOutputFile.toString()) + .addArguments("--arguments", Long.toString(Duration.ofSeconds(TETS_APP_AUTOCLOSE_TIMEOUT_SECONDS).getSeconds())); + + new AdditionalLauncher("probe") { + @Override + protected void verify(JPackageCommand cmd) { + } + }.addJavaOptions("-Djpackage.test.trace-file=" + probeTraceFile.toString()) + .addDefaultArguments(probeOutputFile.toString(), Long.toString(Duration.ofSeconds(TETS_APP_AUTOCLOSE_TIMEOUT_SECONDS).getSeconds())) + .applyTo(cmd); + + cmd.executeAndAssertImageCreated(); + + cmd.readLauncherCfgFile("probe") + .add(new CfgFile().addValue("Application", "win.norestart", Boolean.TRUE.toString())) + .save(cmd.appLauncherCfgPath("probe")); + + // Try Ctrl+C signal on a launcher with disabled restart functionality. + // It will create a single launcher process instead of the parent and the child processes. + // Ctrl+C always worked for launcher with disabled restart functionality. + var probeOutput = runLauncher(cmd, "probe", probeTraceFile, probeOutputFile); + + if (!probeOutput.equals("shutdown hook executed")) { + // Ctrl+C signal didn't make it. Test environment doesn't support Ctrl+C signal + // delivery from the prowershell process to a child process, don't run the main + // test. + TKit.throwSkippedException( + "The environment does NOT support Ctrl+C signal delivery from the prowershell process to a child process"); + } + + var mainOutput = runLauncher(cmd, null, mainTraceFile, mainOutputFile); + + TKit.assertEquals("shutdown hook executed", mainOutput, "Check shutdown hook executed"); + } + + private static String runLauncher(JPackageCommand cmd, String launcherName, Path traceFile, Path outputFile) throws IOException { + // Launch the specified launcher and send Ctrl+C signal to it. + Thread.ofVirtual().start(() -> { + configureAndExecute(0, Executor.of("powershell", "-NonInteractive", "-NoLogo", "-NoProfile", "-ExecutionPolicy", "Unrestricted") + .addArgument("-File").addArgument(TEST_PS1) + .addArguments("-TimeoutSeconds", Long.toString(Duration.ofSeconds(5).getSeconds())) + .addArgument("-Executable").addArgument(cmd.appLauncherPath(launcherName)) + .dumpOutput()); + }); + + TKit.waitForFileCreated(traceFile, Duration.ofSeconds(20), Duration.ofSeconds(2)); + + try { + TKit.waitForFileCreated(outputFile, Duration.ofSeconds(TETS_APP_AUTOCLOSE_TIMEOUT_SECONDS * 2), Duration.ofSeconds(2)); + } finally { + TKit.traceFileContents(traceFile, "Test app trace"); + } + + TKit.assertFileExists(outputFile); + return Files.readString(outputFile); + } + + private static final long TETS_APP_AUTOCLOSE_TIMEOUT_SECONDS = 30; + + private static final Path TEST_APP_JAVA = TKit.TEST_SRC_ROOT.resolve("apps/UseShutdownHook.java"); + private static final Path TEST_PS1 = TKit.TEST_SRC_ROOT.resolve(Path.of("resources/Win8365790Test.ps1")).normalize(); +} diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/jpackage/windows/WinChildProcessTest.java openjdk-21-21.0.10+7/test/jdk/tools/jpackage/windows/WinChildProcessTest.java --- openjdk-21-21.0.9+10/test/jdk/tools/jpackage/windows/WinChildProcessTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/jpackage/windows/WinChildProcessTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,7 +27,6 @@ * when System.exit(0) is invoked along with terminating java program. * @library /test/jdk/tools/jpackage/helpers * @requires os.family == "windows" - * @build WinChildProcessTest * @build jdk.jpackage.test.* * @build WinChildProcessTest * @run main/othervm -Xmx512m jdk.jpackage.test.Main @@ -41,29 +40,32 @@ import java.nio.file.Path; import jdk.jpackage.test.JPackageCommand; +import static jdk.jpackage.test.HelloApp.configureAndExecute; import jdk.jpackage.test.Annotations.Test; import jdk.jpackage.test.Executor; import jdk.jpackage.test.TKit; +import static jdk.jpackage.test.WindowsHelper.killProcess; public class WinChildProcessTest { private static final Path TEST_APP_JAVA = TKit.TEST_SRC_ROOT .resolve("apps/ChildProcessAppLauncher.java"); @Test - public static void test() throws Throwable { + public static void test() { long childPid = 0; try { JPackageCommand cmd = JPackageCommand - .helloAppImage(TEST_APP_JAVA + "*Hello"); + .helloAppImage(TEST_APP_JAVA + "*Hello") + .ignoreFakeRuntime(); // Create the image of the third party application launcher cmd.executeAndAssertImageCreated(); // Start the third party application launcher and dump and save the // output of the application - List output = new Executor().saveOutput().dumpOutput() - .setExecutable(cmd.appLauncherPath().toAbsolutePath()) - .execute(0).getOutput(); + List output = configureAndExecute(0, new Executor().saveOutput().dumpOutput() + .setExecutable(cmd.appLauncherPath().toAbsolutePath())) + .getOutput(); String pidStr = output.get(0); // parse child PID @@ -76,10 +78,12 @@ Optional processHandle = ProcessHandle.of(childPid); boolean isAlive = processHandle.isPresent() && processHandle.get().isAlive(); - TKit.assertTrue(isAlive, "Check is child process is alive"); + TKit.assertTrue(isAlive, "Check child process is alive"); } finally { - // Kill only a specific child instance - Runtime.getRuntime().exec("taskkill /F /PID " + childPid); + if (childPid != 0) { + // Kill only a specific child instance + killProcess(childPid); + } } } } diff -Nru openjdk-21-21.0.9+10/test/jdk/tools/launcher/TooSmallStackSize.java openjdk-21-21.0.10+7/test/jdk/tools/launcher/TooSmallStackSize.java --- openjdk-21-21.0.9+10/test/jdk/tools/launcher/TooSmallStackSize.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jdk/tools/launcher/TooSmallStackSize.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,8 @@ * @bug 6762191 8222334 * @summary Setting stack size to 16K causes segmentation fault * @compile TooSmallStackSize.java + * @comment VM fails to launch with minimum allowed stack size of 136k when asan is enabled + * @requires !vm.asan * @run main TooSmallStackSize */ diff -Nru openjdk-21-21.0.9+10/test/jtreg-ext/requires/VMProps.java openjdk-21-21.0.10+7/test/jtreg-ext/requires/VMProps.java --- openjdk-21-21.0.9+10/test/jtreg-ext/requires/VMProps.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/jtreg-ext/requires/VMProps.java 2026-01-15 15:34:19.000000000 +0000 @@ -128,7 +128,7 @@ map.put("vm.graal.enabled", this::isGraalEnabled); map.put("vm.compiler1.enabled", this::isCompiler1Enabled); map.put("vm.compiler2.enabled", this::isCompiler2Enabled); - map.put("docker.support", this::dockerSupport); + map.put("container.support", this::containerSupport); map.put("systemd.support", this::systemdSupport); map.put("vm.musl", this::isMusl); map.put("vm.asan", this::isAsanEnabled); @@ -535,16 +535,16 @@ } /** - * A simple check for docker support + * A simple check for container support * - * @return true if docker is supported in a given environment + * @return true if container is supported in a given environment */ - protected String dockerSupport() { - log("Entering dockerSupport()"); + protected String containerSupport() { + log("Entering containerSupport()"); boolean isSupported = false; if (Platform.isLinux()) { - // currently docker testing is only supported for Linux, + // currently container testing is only supported for Linux, // on certain platforms String arch = System.getProperty("os.arch"); @@ -560,17 +560,17 @@ } } - log("dockerSupport(): platform check: isSupported = " + isSupported); + log("containerSupport(): platform check: isSupported = " + isSupported); if (isSupported) { try { - isSupported = checkProgramSupport("checkDockerSupport()", Container.ENGINE_COMMAND); + isSupported = checkProgramSupport("checkContainerSupport()", Container.ENGINE_COMMAND); } catch (Exception e) { isSupported = false; } } - log("dockerSupport(): returning isSupported = " + isSupported); + log("containerSupport(): returning isSupported = " + isSupported); return "" + isSupported; } diff -Nru openjdk-21-21.0.9+10/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.java openjdk-21-21.0.10+7/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.java --- openjdk-21-21.0.9+10/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,22 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8334756 + * @summary javac crashes on call to non-existent generic method with explicit annotated type arg + * @compile/fail/ref=CrashOnNonExistingMethodTest.out -XDrawDiagnostics -XDdev CrashOnNonExistingMethodTest.java + */ + +import static java.lang.annotation.ElementType.TYPE_USE; +import java.lang.annotation.Target; + +class CrashOnNonExistingMethodTest { + @Target(TYPE_USE) + @interface Nullable {} + + static T identity(T t) { + return t; + } + + static void test() { + CrashOnNonExistingMethodTest.<@Nullable Object>nonNullIdentity(null); + } +} diff -Nru openjdk-21-21.0.9+10/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.out openjdk-21-21.0.10+7/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.out --- openjdk-21-21.0.9+10/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.out 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/langtools/tools/javac/annotations/typeAnnotations/CrashOnNonExistingMethodTest.out 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,2 @@ +CrashOnNonExistingMethodTest.java:20:37: compiler.err.cant.resolve.location.args.params: kindname.method, nonNullIdentity, java.lang.Object, compiler.misc.type.null, (compiler.misc.location: kindname.class, CrashOnNonExistingMethodTest, null) +1 error diff -Nru openjdk-21-21.0.9+10/test/langtools/tools/javac/jvm/ClassRefDupInConstantPoolTest.java openjdk-21-21.0.10+7/test/langtools/tools/javac/jvm/ClassRefDupInConstantPoolTest.java --- openjdk-21-21.0.9+10/test/langtools/tools/javac/jvm/ClassRefDupInConstantPoolTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/langtools/tools/javac/jvm/ClassRefDupInConstantPoolTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,7 @@ * @bug 8015927 * @summary Class reference duplicates in constant pool * @modules jdk.jdeps/com.sun.tools.classfile - * @clean ClassRefDupInConstantPoolTest$Duplicates + * @clean ClassRefDupInConstantPoolTest ClassRefDupInConstantPoolTest$Duplicates * @run main ClassRefDupInConstantPoolTest */ diff -Nru openjdk-21-21.0.9+10/test/langtools/tools/javac/parser/ExtraImportSemicolon.java openjdk-21-21.0.10+7/test/langtools/tools/javac/parser/ExtraImportSemicolon.java --- openjdk-21-21.0.9+10/test/langtools/tools/javac/parser/ExtraImportSemicolon.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/langtools/tools/javac/parser/ExtraImportSemicolon.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,6 +1,6 @@ /* * @test /nodynamiccopyright/ - * @bug 5059679 + * @bug 8027682 * @summary Verify proper error reporting of extra semicolon before import statement * @compile/fail/ref=ExtraImportSemicolon.out1 -XDrawDiagnostics ExtraImportSemicolon.java * @compile/ref=ExtraImportSemicolon.out2 --release 20 -XDrawDiagnostics ExtraImportSemicolon.java diff -Nru openjdk-21-21.0.9+10/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/AnnotatedTypeToString.java openjdk-21-21.0.10+7/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/AnnotatedTypeToString.java --- openjdk-21-21.0.9+10/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/AnnotatedTypeToString.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/AnnotatedTypeToString.java 2026-01-15 15:34:19.000000000 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 8284220 + * @bug 8284220 8342934 * @summary Tests DeclaredType.toString with type annotations present, for example that '@A * Map.Entry' is printed as 'java.util.@A Map.Entry' (and not '@A java.util.Map.Entry' or * 'java.util.@A Entry'). diff -Nru openjdk-21-21.0.9+10/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/Test.java openjdk-21-21.0.10+7/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/Test.java --- openjdk-21-21.0.9+10/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/Test.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/langtools/tools/javac/processing/model/type/AnnotatedTypeToString/Test.java 2026-01-15 15:34:19.000000000 +0000 @@ -32,6 +32,10 @@ @Target(ElementType.TYPE_USE) @interface A {} +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE_USE) +@interface B {} + public class Test { static class StaticNested { static class InnerMostStaticNested {} @@ -41,8 +45,8 @@ class InnerMost {} } - @ExpectedToString("p.Test.@p.A StaticNested") - @A StaticNested i; + @ExpectedToString("p.Test.@p.A @p.B StaticNested") + @A @B StaticNested i; @ExpectedToString("p.Test.StaticNested.@p.A InnerMostStaticNested") StaticNested.@A InnerMostStaticNested j; diff -Nru openjdk-21-21.0.9+10/test/lib/jdk/test/lib/Container.java openjdk-21-21.0.10+7/test/lib/jdk/test/lib/Container.java --- openjdk-21-21.0.9+10/test/lib/jdk/test/lib/Container.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/lib/jdk/test/lib/Container.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,6 @@ /* * Copyright (c) 2019, Red Hat Inc. + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,9 +24,9 @@ package jdk.test.lib; public class Container { - // Use this property to specify docker location on your system. + // Use this property to specify container runtime location (e.g. docker) on your system. // E.g.: "/usr/local/bin/docker". We define this constant here so - // that it can be used in VMProps as well which checks docker support + // that it can be used in VMProps as well which checks container support // via this command public static final String ENGINE_COMMAND = System.getProperty("jdk.test.container.command", "docker"); diff -Nru openjdk-21-21.0.9+10/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java openjdk-21-21.0.10+7/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java --- openjdk-21-21.0.9+10/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -122,8 +122,8 @@ outputAnalyzer.shouldHaveExitValue(exitCode.value); } catch (RuntimeException e) { String errorMessage = String.format( - "JVM process should have exit value '%d'.%n%s", - exitCode.value, exitErrorMessage); + "JVM process should have exit value '%d', but has '%d'.%n%s", + exitCode.value, outputAnalyzer.getExitValue(), exitErrorMessage); throw new AssertionError(errorMessage, e); } @@ -300,9 +300,12 @@ CommandLineOptionTest.PRINT_FLAGS_FINAL_FORMAT, optionName, expectedValue)); } catch (RuntimeException e) { + String observedValue = outputAnalyzer.firstMatch(String.format( + CommandLineOptionTest.PRINT_FLAGS_FINAL_FORMAT, + optionName, "\\S")); String errorMessage = String.format( - "Option '%s' is expected to have '%s' value%n%s", - optionName, expectedValue, + "Option '%s' is expected to have '%s' value, but is '%s'.%n%s", + optionName, expectedValue, observedValue, optionErrorString); throw new AssertionError(errorMessage, e); } diff -Nru openjdk-21-21.0.9+10/test/lib/jdk/test/lib/containers/cgroup/MetricsTesterCgroupV2.java openjdk-21-21.0.10+7/test/lib/jdk/test/lib/containers/cgroup/MetricsTesterCgroupV2.java --- openjdk-21-21.0.9+10/test/lib/jdk/test/lib/containers/cgroup/MetricsTesterCgroupV2.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/lib/jdk/test/lib/containers/cgroup/MetricsTesterCgroupV2.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,6 @@ /* * Copyright (c) 2020, Red Hat Inc. + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -447,13 +448,13 @@ Metrics metrics = Metrics.systemMetrics(); long oldVal = metrics.getBlkIOServiceCount(); long newVal = getIoStatAccumulate(new String[] { "rios", "wios" }); - if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) { + if (newVal < oldVal) { fail("io.stat->rios/wios: ", oldVal, newVal); } oldVal = metrics.getBlkIOServiced(); newVal = getIoStatAccumulate(new String[] { "rbytes", "wbytes" }); - if (!CgroupMetricsTester.compareWithErrorMargin(oldVal, newVal)) { + if (newVal < oldVal) { fail("io.stat->rbytes/wbytes: ", oldVal, newVal); } } diff -Nru openjdk-21-21.0.9+10/test/lib/jdk/test/lib/containers/docker/ContainerRuntimeVersionTestUtils.java openjdk-21-21.0.10+7/test/lib/jdk/test/lib/containers/docker/ContainerRuntimeVersionTestUtils.java --- openjdk-21-21.0.9+10/test/lib/jdk/test/lib/containers/docker/ContainerRuntimeVersionTestUtils.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/lib/jdk/test/lib/containers/docker/ContainerRuntimeVersionTestUtils.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Methods and definitions related to container runtime version to test container in this directory + */ + +package jdk.test.lib.containers.docker; + +import jdk.test.lib.Container; +import jdk.test.lib.process.OutputAnalyzer; +import jtreg.SkippedException; + +public class ContainerRuntimeVersionTestUtils implements Comparable { + private final int major; + private final int minor; + private final int micro; + private static final boolean IS_DOCKER = Container.ENGINE_COMMAND.contains("docker"); + private static final boolean IS_PODMAN = Container.ENGINE_COMMAND.contains("podman"); + public static final ContainerRuntimeVersionTestUtils DOCKER_MINIMAL_SUPPORTED_VERSION_CGROUPNS = new ContainerRuntimeVersionTestUtils(20, 10, 0); + public static final ContainerRuntimeVersionTestUtils PODMAN_MINIMAL_SUPPORTED_VERSION_CGROUPNS = new ContainerRuntimeVersionTestUtils(1, 5, 0); + + private ContainerRuntimeVersionTestUtils(int major, int minor, int micro) { + this.major = major; + this.minor = minor; + this.micro = micro; + } + + public static void checkContainerVersionSupported() { + if (IS_DOCKER && ContainerRuntimeVersionTestUtils.DOCKER_MINIMAL_SUPPORTED_VERSION_CGROUPNS.compareTo(ContainerRuntimeVersionTestUtils.getContainerRuntimeVersion()) > 0) { + throw new SkippedException("Docker version too old for this test. Expected >= 20.10.0"); + } + if (IS_PODMAN && ContainerRuntimeVersionTestUtils.PODMAN_MINIMAL_SUPPORTED_VERSION_CGROUPNS.compareTo(ContainerRuntimeVersionTestUtils.getContainerRuntimeVersion()) > 0) { + throw new SkippedException("Podman version too old for this test. Expected >= 1.5.0"); + } + } + + @Override + public int compareTo(ContainerRuntimeVersionTestUtils other) { + if (this.major > other.major) { + return 1; + } else if (this.major < other.major) { + return -1; + } else if (this.minor > other.minor) { + return 1; + } else if (this.minor < other.minor) { + return -1; + } else if (this.micro > other.micro) { + return 1; + } else if (this.micro < other.micro) { + return -1; + } else { + // equal majors, minors, micro + return 0; + } + } + + public static ContainerRuntimeVersionTestUtils fromVersionString(String version) { + try { + // Example 'docker version 20.10.0 or podman version 4.9.4-rhel' + String versNums = version.split("\\s+", 3)[2]; + // On some docker implementations e.g. RHEL8 ppc64le we have the following version output: + // Docker version v25.0.3, build 4debf41 + // Trim potentially leading 'v' and trailing ',' + if (versNums.startsWith("v")) { + versNums = versNums.substring(1); + } + int cidx = versNums.indexOf(','); + versNums = (cidx != -1) ? versNums.substring(0, cidx) : versNums; + + String[] numbers = versNums.split("-")[0].split("\\.", 3); + return new ContainerRuntimeVersionTestUtils(Integer.parseInt(numbers[0]), + Integer.parseInt(numbers[1]), + Integer.parseInt(numbers[2])); + } catch (Exception e) { + throw new RuntimeException("Failed to parse container runtime version: " + version, e); + } + } + + public static String getContainerRuntimeVersionStr() { + try { + ProcessBuilder pb = new ProcessBuilder(Container.ENGINE_COMMAND, "--version"); + OutputAnalyzer out = new OutputAnalyzer(pb.start()) + .shouldHaveExitValue(0); + String result = out.asLines().get(0); + System.out.println(Container.ENGINE_COMMAND + " --version returning: " + result); + return result; + } catch (Exception e) { + throw new RuntimeException(Container.ENGINE_COMMAND + " --version command failed."); + } + } + + public static ContainerRuntimeVersionTestUtils getContainerRuntimeVersion() { + return ContainerRuntimeVersionTestUtils.fromVersionString(getContainerRuntimeVersionStr()); + } +} diff -Nru openjdk-21-21.0.9+10/test/lib/jdk/test/lib/security/CertificateBuilder.java openjdk-21-21.0.10+7/test/lib/jdk/test/lib/security/CertificateBuilder.java --- openjdk-21-21.0.9+10/test/lib/jdk/test/lib/security/CertificateBuilder.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/lib/jdk/test/lib/security/CertificateBuilder.java 2026-01-15 15:34:19.000000000 +0000 @@ -24,12 +24,12 @@ package jdk.test.lib.security; import java.io.*; +import java.security.cert.*; +import java.security.cert.Extension; import java.util.*; import java.security.*; -import java.security.cert.X509Certificate; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.Extension; +import java.time.temporal.ChronoUnit; +import java.time.Instant; import javax.security.auth.x500.X500Principal; import java.math.BigInteger; @@ -41,6 +41,7 @@ import sun.security.x509.AlgorithmId; import sun.security.x509.AuthorityInfoAccessExtension; import sun.security.x509.AuthorityKeyIdentifierExtension; +import sun.security.x509.IPAddressName; import sun.security.x509.SubjectKeyIdentifierExtension; import sun.security.x509.BasicConstraintsExtension; import sun.security.x509.ExtendedKeyUsageExtension; @@ -54,6 +55,7 @@ import sun.security.x509.KeyIdentifier; import sun.security.x509.X500Name; + /** * Helper class that builds and signs X.509 certificates. * @@ -98,6 +100,89 @@ private byte[] tbsCertBytes; private byte[] signatureBytes; + public enum KeyUsage { + DIGITAL_SIGNATURE, + NONREPUDIATION, + KEY_ENCIPHERMENT, + DATA_ENCIPHERMENT, + KEY_AGREEMENT, + KEY_CERT_SIGN, + CRL_SIGN, + ENCIPHER_ONLY, + DECIPHER_ONLY; + } + + /** + * Create a new CertificateBuilder instance. This method sets the subject name, + * public key, authority key id, and serial number. + * + * @param subjectName entity associated with the public key + * @param publicKey the entity's public key + * @param caKey public key of certificate signer + * @param keyUsages list of key uses + * @return + * @throws CertificateException + * @throws IOException + */ + public static CertificateBuilder newCertificateBuilder(String subjectName, + PublicKey publicKey, PublicKey caKey, KeyUsage... keyUsages) + throws CertificateException, IOException { + SecureRandom random = new SecureRandom(); + + boolean [] keyUsage = new boolean[KeyUsage.values().length]; + for (KeyUsage ku : keyUsages) { + keyUsage[ku.ordinal()] = true; + } + + CertificateBuilder builder = new CertificateBuilder() + .setSubjectName(subjectName) + .setPublicKey(publicKey) + .setSerialNumber(BigInteger.valueOf(random.nextLong(1000000)+1)) + .addSubjectKeyIdExt(publicKey) + .addAuthorityKeyIdExt(caKey); + if (keyUsages.length != 0) { + builder.addKeyUsageExt(keyUsage); + } + return builder; + } + + /** + * Create a Subject Alternative Name extension for the given DNS name + * @param critical Sets the extension to critical or non-critical + * @param dnsName DNS name to use in the extension + * @throws IOException + */ + public static SubjectAlternativeNameExtension createDNSSubjectAltNameExt( + boolean critical, String dnsName) throws IOException { + GeneralNames gns = new GeneralNames(); + gns.add(new GeneralName(new DNSName(dnsName))); + return new SubjectAlternativeNameExtension(critical, gns); + } + + /** + * Create a Subject Alternative Name extension for the given IP address + * @param critical Sets the extension to critical or non-critical + * @param ipAddress IP address to use in the extension + * @throws IOException + */ + public static SubjectAlternativeNameExtension createIPSubjectAltNameExt( + boolean critical, String ipAddress) throws IOException { + GeneralNames gns = new GeneralNames(); + gns.add(new GeneralName(new IPAddressName(ipAddress))); + return new SubjectAlternativeNameExtension(critical, gns); + } + + public static void printCertificate(X509Certificate certificate, PrintStream ps) { + try { + Base64.Encoder encoder = Base64.getEncoder(); + ps.println("-----BEGIN CERTIFICATE-----"); + ps.println(encoder.encodeToString(certificate.getEncoded())); + ps.println("-----END CERTIFICATE-----"); + } catch (CertificateEncodingException exc) { + exc.printStackTrace(ps); + } + } + /** * Default constructor for a {@code CertificateBuilder} object. * @@ -191,6 +276,11 @@ return setNotBefore(nbDate).setNotAfter(naDate); } + public CertificateBuilder setOneHourValidity() { + return setNotBefore(Date.from(Instant.now().minus(5, ChronoUnit.MINUTES))) + .setNotAfter(Date.from(Instant.now().plus(1, ChronoUnit.HOURS))); + } + /** * Set the serial number on the certificate. * diff -Nru openjdk-21-21.0.9+10/test/lib/jdk/test/whitebox/WhiteBox.java openjdk-21-21.0.10+7/test/lib/jdk/test/whitebox/WhiteBox.java --- openjdk-21-21.0.9+10/test/lib/jdk/test/whitebox/WhiteBox.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/lib/jdk/test/whitebox/WhiteBox.java 2026-01-15 15:34:19.000000000 +0000 @@ -24,7 +24,11 @@ package jdk.test.whitebox; import java.lang.management.MemoryUsage; +import java.lang.ref.Reference; import java.lang.reflect.Executable; +import java.lang.reflect.InaccessibleObjectException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Arrays; import java.util.List; import java.util.function.BiFunction; @@ -526,6 +530,53 @@ // Force Full GC public native void fullGC(); + // Infrastructure for waitForReferenceProcessing() + private static volatile Method waitForReferenceProcessingMethod = null; + + private static Method getWaitForReferenceProcessingMethod() { + Method wfrp = waitForReferenceProcessingMethod; + if (wfrp == null) { + try { + wfrp = Reference.class.getDeclaredMethod("waitForReferenceProcessing"); + wfrp.setAccessible(true); + assert wfrp.getReturnType() == Boolean.class; + Class[] ev = wfrp.getExceptionTypes(); + assert ev.length == 1; + assert ev[0] == InterruptedException.class; + waitForReferenceProcessingMethod = wfrp; + } catch (InaccessibleObjectException e) { + throw new RuntimeException("Need to add @modules java.base/java.lang.ref:open to test?", e); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + return wfrp; + } + + /** + * Wait for reference processing, via Reference.waitForReferenceProcessing(). + * Callers of this method will need the + * @modules java.base/java.lang.ref:open + * jtreg tag. + * + * This method should usually be called after a call to WhiteBox.fullGC(). + */ + public boolean waitForReferenceProcessing() throws InterruptedException { + try { + Method wfrp = getWaitForReferenceProcessingMethod(); + return (Boolean) wfrp.invoke(null); + } catch (IllegalAccessException e) { + throw new RuntimeException("Shouldn't happen, we call setAccessible()", e); + } catch (InvocationTargetException e) { + Throwable cause = e.getCause(); + if (cause instanceof InterruptedException) { + throw (InterruptedException) cause; + } else { + throw new RuntimeException(e); + } + } + } + // Returns true if the current GC supports concurrent collection control. public native boolean supportsConcurrentGCBreakpoints(); @@ -727,7 +778,8 @@ // Container testing public native boolean isContainerized(); - public native int validateCgroup(String procCgroups, + public native int validateCgroup(boolean cgroupsV2Enabled, + String controllersFile, String procSelfCgroup, String procSelfMountinfo); public native void printOsInfo(); diff -Nru openjdk-21-21.0.9+10/test/lib-test/jdk/test/whitebox/vm_flags/SizeTTest.java openjdk-21-21.0.10+7/test/lib-test/jdk/test/whitebox/vm_flags/SizeTTest.java --- openjdk-21-21.0.9+10/test/lib-test/jdk/test/whitebox/vm_flags/SizeTTest.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/lib-test/jdk/test/whitebox/vm_flags/SizeTTest.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,7 @@ import jdk.test.lib.Platform; public class SizeTTest { - private static final String FLAG_NAME = "ArrayAllocatorMallocLimit"; + private static final String FLAG_NAME = "LargePageHeapSizeThreshold"; private static final Long[] TESTS = {0L, 100L, (long) Integer.MAX_VALUE, (1L << 32L) - 1L, 1L << 32L}; private static final Long[] EXPECTED_64 = TESTS; diff -Nru openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/lang/StringConstructor.java openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/lang/StringConstructor.java --- openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/lang/StringConstructor.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/lang/StringConstructor.java 2026-01-15 15:34:19.000000000 +0000 @@ -21,11 +21,13 @@ * questions. */ -package micro.org.openjdk.bench.java.lang; +package org.openjdk.bench.java.lang; import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; import java.nio.charset.StandardCharsets; +import java.util.Arrays; import java.util.concurrent.TimeUnit; @State(Scope.Thread) @@ -36,45 +38,115 @@ @Fork(3) public class StringConstructor { - @Param({"7", "64"}) - public int size; + private static final char INTEROBANG = 0x2030; - // Offset to use for ranged newStrings - @Param("1") - public int offset; - private byte[] array; - - @Setup - public void setup() { - if (offset > size) { - offset = size; - } - array = "a".repeat(size).getBytes(StandardCharsets.UTF_8); - } - - @Benchmark - public String newStringFromArray() { - return new String(array); - } - - @Benchmark - public String newStringFromArrayWithCharset() { - return new String(array, StandardCharsets.UTF_8); - } - - @Benchmark - public String newStringFromArrayWithCharsetName() throws Exception { - return new String(array, StandardCharsets.UTF_8.name()); - } - - @Benchmark - public String newStringFromRangedArray() { - return new String(array, offset, array.length - offset); - } - - @Benchmark - public String newStringFromRangedArrayWithCharset() { - return new String(array, offset, array.length - offset, StandardCharsets.UTF_8); - } + // Fixed offset to use for ranged newStrings + public final int offset = 1; + @Param({"7", "64"}) + public int size; + + private byte[] array; + private char[] chars; + private char[] charsMixedBegin; + private char[] charsMixedSmall; + private char[] charsMixedEnd; + private int[] codePointsLatin1; + private int[] codePointsMixedBegin; + private int[] codePointsMixedSmall; + + private static int[] intCopyOfChars(char[] chars, int newLength) { + int[] res = new int[newLength]; + for (int i = 0; i < Math.min(chars.length, newLength); i++) + res[i] = chars[i]; + return res; + } + + @Setup + public void setup() { + String s = "a".repeat(size); + array = s.getBytes(StandardCharsets.UTF_8); + chars = s.toCharArray(); + charsMixedBegin = Arrays.copyOf(chars, array.length); + charsMixedBegin[0] = INTEROBANG; + charsMixedSmall = Arrays.copyOf(chars, array.length); + charsMixedSmall[Math.min(charsMixedSmall.length - 1, 7)] = INTEROBANG; + charsMixedEnd = new char[size + 7]; + Arrays.fill(charsMixedEnd, 'a'); + charsMixedEnd[charsMixedEnd.length - 1] = INTEROBANG; + + codePointsLatin1 = intCopyOfChars(chars, array.length); + codePointsMixedBegin = intCopyOfChars(chars, array.length); + codePointsMixedBegin[0] = INTEROBANG; + codePointsMixedSmall = intCopyOfChars(chars, array.length); + codePointsMixedSmall[Math.min(codePointsMixedSmall.length - 1, 7)] = INTEROBANG; + } + + @Benchmark + public String newStringFromBytes() { + return new String(array); + } + + @Benchmark + public String newStringFromBytesRanged() { + return new String(array, offset, array.length - offset); + } + + @Benchmark + public String newStringFromBytesRangedWithCharsetUTF8() { + return new String(array, offset, array.length - offset, StandardCharsets.UTF_8); + } + + @Benchmark + public String newStringFromBytesWithCharsetUTF8() { + return new String(array, StandardCharsets.UTF_8); + } + + @Benchmark + public String newStringFromBytesWithCharsetNameUTF8() throws Exception { + return new String(array, StandardCharsets.UTF_8.name()); + } + + @Benchmark + public String newStringFromCharsLatin1() { + return new String(chars); + } + + @Benchmark + public String newStringFromCharsMixedBegin() { + return new String(charsMixedBegin); + } + + @Benchmark + public String newStringFromCharsMixedSmall() { + return new String(charsMixedSmall); + } + + @Benchmark + public String newStringFromCharsMixedEnd() { + return new String(charsMixedEnd); + } + + @Benchmark + @CompilerControl(CompilerControl.Mode.DONT_INLINE) + public void newStringFromCharsMixedAll(Blackhole bh) { + bh.consume(new String(charsMixedBegin)); + bh.consume(new String(charsMixedSmall)); + bh.consume(new String(chars)); + } + + @Benchmark + public String newStringFromCodePointRangedLatin1() { + return new String(codePointsLatin1, 0, codePointsLatin1.length); + } + + @Benchmark + public String newStringFromCodePointRangedMixedBegin() { + return new String(codePointsMixedBegin, 0, codePointsMixedBegin.length); + } + + @Benchmark + public String newStringFromCodePointRangedMixedSmall() { + return new String(codePointsMixedSmall, 0, codePointsMixedSmall.length); + } } diff -Nru openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/net/URIAuthorityParsingBenchmark.java openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/net/URIAuthorityParsingBenchmark.java --- openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/net/URIAuthorityParsingBenchmark.java 1970-01-01 00:00:00.000000000 +0000 +++ openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/net/URIAuthorityParsingBenchmark.java 2026-01-15 15:34:19.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package org.openjdk.bench.java.net; + +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.net.URI; +import java.util.concurrent.TimeUnit; + +/** + * Tests Java.net.URI.create performance on various URI types. + */ +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +@State(Scope.Benchmark) +@Warmup(iterations = 5, time = 1) +@Measurement(iterations = 5, time = 1) +@Fork(value = 3) +public class URIAuthorityParsingBenchmark { + + @Param({ + "https://98765432101.abc.xyz.com", + "https://ABCDEFGHIJK.abc.xyz.com" + }) + private String uri; + + @Benchmark + public void create(Blackhole blackhole) { + blackhole.consume(URI.create(uri)); + } + +} diff -Nru openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/security/Signatures.java openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/security/Signatures.java --- openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/security/Signatures.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/security/Signatures.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -194,4 +194,3 @@ } } } - diff -Nru openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/util/concurrent/ProducerConsumer.java openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/util/concurrent/ProducerConsumer.java --- openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/util/concurrent/ProducerConsumer.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/util/concurrent/ProducerConsumer.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ import org.openjdk.jmh.annotations.TearDown; import org.openjdk.jmh.annotations.Warmup; import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.infra.ThreadParams; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; @@ -55,7 +56,7 @@ @Fork(3) public class ProducerConsumer { - @Param("100") + @Param("100") // Will be expanded to at least the number of threads used private int capacity; @Param @@ -65,7 +66,9 @@ private Producer prod; @Setup - public void prepare() { + public void prepare(ThreadParams params) { + capacity = Math.max(params.getThreadCount(), capacity); + switch (type) { case ABQ_F: q = new ArrayBlockingQueue<>(capacity, true); diff -Nru openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/util/concurrent/Queues.java openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/util/concurrent/Queues.java --- openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/java/util/concurrent/Queues.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/java/util/concurrent/Queues.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,6 +34,7 @@ import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.annotations.Warmup; import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.infra.ThreadParams; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; @@ -49,7 +50,7 @@ @Fork(3) public class Queues { - @Param("100") + @Param("100") // Will be expanded to at least the number of threads used private int capacity; @Param @@ -65,7 +66,9 @@ private BlockingQueue q; @Setup - public void setup() { + public void setup(ThreadParams params) { + capacity = Math.max(params.getThreadCount(), capacity); + switch (type) { case ABQ_F: q = new ArrayBlockingQueue<>(capacity, true); diff -Nru openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/vm/compiler/AutoVectorization2DArray.java openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/vm/compiler/AutoVectorization2DArray.java --- openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/vm/compiler/AutoVectorization2DArray.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/vm/compiler/AutoVectorization2DArray.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2022, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff -Nru openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/vm/compiler/LoopUnroll.java openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/vm/compiler/LoopUnroll.java --- openjdk-21-21.0.9+10/test/micro/org/openjdk/bench/vm/compiler/LoopUnroll.java 2025-10-13 07:49:24.000000000 +0000 +++ openjdk-21-21.0.10+7/test/micro/org/openjdk/bench/vm/compiler/LoopUnroll.java 2026-01-15 15:34:19.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. + * Copyright (C) 2021, Tencent. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it