From ee49de021bab8838ed44897f1046cb7d0f8f5921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Mon, 16 Jun 2014 22:31:50 +0200 Subject: Check if there is an active gateway selected. The active gateway cannot be null. --- app/src/main/res/values/untranslatable.xml | 78 +++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) (limited to 'app/src/main/res') diff --git a/app/src/main/res/values/untranslatable.xml b/app/src/main/res/values/untranslatable.xml index 50e598ac..4212cec2 100644 --- a/app/src/main/res/values/untranslatable.xml +++ b/app/src/main/res/values/untranslatable.xml @@ -777,4 +777,80 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From 6ac43e5e95046308815581abf3189f12df841923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Thu, 19 Jun 2014 16:39:27 +0200 Subject: Provider name in Dashboard is ellipsized correctly --- app/src/main/res/layout/client_dashboard.xml | 58 ++++++++++------------------ app/src/main/res/values/untranslatable.xml | 3 +- 2 files changed, 23 insertions(+), 38 deletions(-) (limited to 'app/src/main/res') diff --git a/app/src/main/res/layout/client_dashboard.xml b/app/src/main/res/layout/client_dashboard.xml index a5387efd..0103e7bc 100644 --- a/app/src/main/res/layout/client_dashboard.xml +++ b/app/src/main/res/layout/client_dashboard.xml @@ -10,44 +10,28 @@ android:layout_width="match_parent" android:layout_height="40dp" android:background="?android:attr/selectableItemBackground" > - - - - - - - - - - + + + + - + + \ No newline at end of file -- cgit v1.2.3 From f721df21a6fd1f3bb2588e67298ae33993041779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Thu, 19 Jun 2014 16:41:53 +0200 Subject: Reordered introduced lines in textviews --- app/src/main/res/layout/client_dashboard.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/src/main/res') diff --git a/app/src/main/res/layout/client_dashboard.xml b/app/src/main/res/layout/client_dashboard.xml index 0103e7bc..f33ac285 100644 --- a/app/src/main/res/layout/client_dashboard.xml +++ b/app/src/main/res/layout/client_dashboard.xml @@ -12,9 +12,9 @@ android:background="?android:attr/selectableItemBackground" > Date: Fri, 20 Jun 2014 12:29:56 +0200 Subject: Service is down message correctly shown. I've also fixed another message: if a file to be downloaded is not found, we say the entered provider isn't a LEAP provider. This is based on the fact that if provider.json doesn't exist/contain valid information, then the url isn't pointing to a LEAP provider. --- app/src/main/res/values/strings.xml | 1 + 1 file changed, 1 insertion(+) (limited to 'app/src/main/res') diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d7114b73..62d54981 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,6 +52,7 @@ Server is unreachable, please try again. It doesn\'t seem to be a Bitmask provider. This is not a trusted Bitmask provider. + Service is down. Configuring provider Your anon cert was not downloaded Logging in -- cgit v1.2.3 From e53c1b281014e584e6ad92593863870afe26499a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Fri, 20 Jun 2014 13:55:54 +0200 Subject: Updated ics-openvpn-upstream: less patches of ours. --- app/src/main/res/menu/logmenu.xml | 5 +-- app/src/main/res/values-de/strings-icsopenvpn.xml | 6 ++-- app/src/main/res/values/untranslatable.xml | 38 +++++++++++++++++++++++ 3 files changed, 44 insertions(+), 5 deletions(-) (limited to 'app/src/main/res') diff --git a/app/src/main/res/menu/logmenu.xml b/app/src/main/res/menu/logmenu.xml index c498eefc..c8c9e815 100644 --- a/app/src/main/res/menu/logmenu.xml +++ b/app/src/main/res/menu/logmenu.xml @@ -33,6 +33,7 @@ android:alphabeticShortcut="e" android:icon="@android:drawable/ic_menu_edit" android:showAsAction="withText|ifRoom" - android:title="@string/edit_vpn"/> + android:title="@string/edit_vpn" + android:visible="false"/> - \ No newline at end of file + diff --git a/app/src/main/res/values-de/strings-icsopenvpn.xml b/app/src/main/res/values-de/strings-icsopenvpn.xml index 9bf58685..bf115be5 100755 --- a/app/src/main/res/values-de/strings-icsopenvpn.xml +++ b/app/src/main/res/values-de/strings-icsopenvpn.xml @@ -62,7 +62,7 @@ VPN löschen Überprüfe, ob der Server ein Zertifikat mit TLS-Servererweiterungen verwendet (--remote-cert-tls server) TLS-Serverzertifikat erwarten - Server Zertifikatssubjekt überprüfen + Server Zertifikatssubjekt DN überprüfen Zertifikat Namen überprüfen Spezifizieren Sie die Methode mit welcher der DN des Serverzertifikates (z. B. C=DE, L=Paderborn, OU=Avian IP-Carrier, CN=openvpn.blinkt.de) überprüft wird.\n\nSie können den vollständigen DN oder den RDN (openvpn.blinkt.de im Beispiel) oder ein RDN-Präfix angeben.\n\nDer RDN Präfix \"Server\" erlaubt z.B. \"Server-1\" und \"Server-2\" \n\nWenn Sie das Eingabefeld leer lassen, wird der RDN gegen den Servernamen geprüft.\n\n Für weitere Details sehen Sie die Manpage von OpenVPN 2.3.1+ unter —verify-x509-name Serverzertifikat Subject @@ -84,7 +84,7 @@ Leitet allen Internet Verkehr über das VPN Benutze Default Route Benutze eigene Routen. Geben Sie Zielnetzwerk im CIDR Format an. Z.b. \"10.0.0.0/8 2002::/16\" würde die Netzwerke 10.0.0.0/8 und 2002::/16 über das VPN routen. - Netze, die nicht über das VPN weitergeleitet werden sollen. Nutzt die gleiche Syntax wie die eigenen Routen. + Netze, die nicht über das VPN geleitet werden sollen. Nutzt die gleiche Syntax wie die eigenen Routen. Eigene Routen Ausgeschlossene Netze Log Detail Level @@ -312,7 +312,7 @@ %3$s: %1$s\n\n%2$s Wenn Sie ihr Gerät gerootet haben können Sie das <a href=\"http://xposed.info/\">Xposed Framework</a> und das <a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\">VPN Dialog confirm Modul</a> auf eigene Gefahr installieren. Komplette Lizenzen - Netze, die direkt über ein lokales Interfaces erreicht werden können werden nicht über das VPN gerottet. Deaktivieren dieser Option leitet allen Verkehr, der für lokale Netzwerke bestimmt ist, über das VPN. + Netze, die direkt über ein lokales Interfaces erreicht werden können werden nicht über das VPN geroutet. Deaktivieren dieser Option leitet allen Verkehr, der für lokale Netzwerke bestimmt ist, über das VPN. VPN für lokale Netzwerke umgehen Datei mit Benutzername und Passwort [Importiert aus %s] diff --git a/app/src/main/res/values/untranslatable.xml b/app/src/main/res/values/untranslatable.xml index de355720..cc39df3d 100644 --- a/app/src/main/res/values/untranslatable.xml +++ b/app/src/main/res/values/untranslatable.xml @@ -833,6 +833,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From 49aee8dd5fe884eabdc291d758bb8a635f9d1271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 24 Jun 2014 09:32:06 +0200 Subject: LEAP copyright updated until 2014. --- app/src/main/res/values/untranslatable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/src/main/res') diff --git a/app/src/main/res/values/untranslatable.xml b/app/src/main/res/values/untranslatable.xml index cc39df3d..6bffb192 100644 --- a/app/src/main/res/values/untranslatable.xml +++ b/app/src/main/res/values/untranslatable.xml @@ -3,7 +3,7 @@ Bitmask Bitmask - Copyright 2012\nLEAP Encryption Access Project <info@leap.se> + Copyright 2012-2014\nLEAP Encryption Access Project <info@leap.se> Copyright © 2002–2010 OpenVPN Technologies, Inc. <sales@openvpn.net>\n "OpenVPN" is a trademark of OpenVPN Technologies, Inc. @@ -892,4 +892,4 @@ - \ No newline at end of file + -- cgit v1.2.3 From c228f481090a468106b57593117d95d9e3dda3f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 24 Jun 2014 10:00:31 +0200 Subject: Tracker link pointing to chili --- app/src/main/res/layout/about.xml | 6 ++++++ app/src/main/res/values-es/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 3 ++- app/src/main/res/values/untranslatable.xml | 3 ++- 4 files changed, 12 insertions(+), 2 deletions(-) (limited to 'app/src/main/res') diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml index 4b3f16e0..ccb1ea26 100644 --- a/app/src/main/res/layout/about.xml +++ b/app/src/main/res/layout/about.xml @@ -37,6 +37,12 @@ android:autoLink="all" android:text="@string/repository_url_text" /> + + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 6a9cce29..ec8c21ff 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -6,4 +6,6 @@ Rutas IPv6: %s El nombre de usuario no debe estar vacío. Conseguido el certificado de \'%s\' de almacén de claves + Código fuente disponible en https://github.com/leapcode/bitmask_android/ + Tracker disponible en https://leap.se/code diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 62d54981..bb68b942 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,7 +2,8 @@ Retry - Source code and issue tracker available at https://github.com/leapcode/bitmask_android/ + Source code available at https://github.com/leapcode/bitmask_android/ + Tracker available at https://leap.se/code Translations welcome and appreciated. See our Transifex project at https://www.transifex.com/projects/p/bitmask-android/ Switch provider info diff --git a/app/src/main/res/values/untranslatable.xml b/app/src/main/res/values/untranslatable.xml index 6bffb192..f956b6bd 100644 --- a/app/src/main/res/values/untranslatable.xml +++ b/app/src/main/res/values/untranslatable.xml @@ -892,4 +892,5 @@ - + + \ No newline at end of file -- cgit v1.2.3 From 55e9c0c60b94c09f8321dccd2971b32d92ec72a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 24 Jun 2014 10:29:09 +0200 Subject: We don't predict future certificate. --- app/src/main/res/values/strings.xml | 2 -- 1 file changed, 2 deletions(-) (limited to 'app/src/main/res') diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bb68b942..6db6962f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -17,9 +17,7 @@ No provider configured Access EIP connection settings Status unknown. - Connection will be secure using an anonymous certificate. Connection secure using an anonymous certificate. - Connection will be secure using your own certificate. Connection secure using your own certificate. Encrypted Internet Select a service provider -- cgit v1.2.3 From 58785d184e4acf5f60f3b40f7387c233777b5c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Wed, 25 Jun 2014 18:55:13 +0200 Subject: Update notification icons. If the connection is being established, the key with a clock icon is shown. If the connection has been established, the key without the clock icon is shown. I've also added all some icons to more resolutions. --- app/src/main/res/drawable-hdpi/ic_stat_vpn.png | Bin 0 -> 539 bytes .../main/res/drawable-hdpi/ic_stat_vpn_empty_halo.png | Bin 816 -> 721 bytes app/src/main/res/drawable-hdpi/ic_stat_vpn_offline.png | Bin 637 -> 801 bytes app/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png | Bin 863 -> 28 bytes app/src/main/res/drawable-hdpi/ic_vpn_disconnected.png | Bin 801 -> 0 bytes app/src/main/res/drawable-ldpi/ic_stat_vpn.png | Bin 461 -> 757 bytes .../main/res/drawable-ldpi/ic_stat_vpn_empty_halo.png | Bin 0 -> 404 bytes app/src/main/res/drawable-ldpi/ic_stat_vpn_offline.png | Bin 0 -> 455 bytes app/src/main/res/drawable-ldpi/ic_stat_vpn_outline.png | 1 + app/src/main/res/drawable-mdpi/ic_stat_vpn.png | Bin 0 -> 502 bytes .../main/res/drawable-mdpi/ic_stat_vpn_empty_halo.png | Bin 545 -> 504 bytes app/src/main/res/drawable-mdpi/ic_stat_vpn_offline.png | Bin 451 -> 586 bytes app/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png | Bin 609 -> 28 bytes app/src/main/res/drawable-xhdpi/ic_stat_vpn.png | Bin 0 -> 688 bytes .../main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.png | Bin 1033 -> 902 bytes .../main/res/drawable-xhdpi/ic_stat_vpn_offline.png | Bin 834 -> 1091 bytes .../main/res/drawable-xhdpi/ic_stat_vpn_outline.png | Bin 1151 -> 28 bytes app/src/main/res/values/untranslatable.xml | 3 ++- 18 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_stat_vpn.png mode change 100644 => 120000 app/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_vpn_disconnected.png create mode 100644 app/src/main/res/drawable-ldpi/ic_stat_vpn_empty_halo.png create mode 100644 app/src/main/res/drawable-ldpi/ic_stat_vpn_offline.png create mode 120000 app/src/main/res/drawable-ldpi/ic_stat_vpn_outline.png create mode 100644 app/src/main/res/drawable-mdpi/ic_stat_vpn.png mode change 100644 => 120000 app/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_stat_vpn.png mode change 100644 => 120000 app/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png (limited to 'app/src/main/res') diff --git a/app/src/main/res/drawable-hdpi/ic_stat_vpn.png b/app/src/main/res/drawable-hdpi/ic_stat_vpn.png new file mode 100644 index 00000000..c3547e85 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_vpn.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_vpn_empty_halo.png b/app/src/main/res/drawable-hdpi/ic_stat_vpn_empty_halo.png index 7df5b670..25f82a95 100644 Binary files a/app/src/main/res/drawable-hdpi/ic_stat_vpn_empty_halo.png and b/app/src/main/res/drawable-hdpi/ic_stat_vpn_empty_halo.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_vpn_offline.png b/app/src/main/res/drawable-hdpi/ic_stat_vpn_offline.png index 8aa48803..dfb962b9 100644 Binary files a/app/src/main/res/drawable-hdpi/ic_stat_vpn_offline.png and b/app/src/main/res/drawable-hdpi/ic_stat_vpn_offline.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png b/app/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png deleted file mode 100644 index b5583d99..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png b/app/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png new file mode 120000 index 00000000..96d8d34d --- /dev/null +++ b/app/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png @@ -0,0 +1 @@ +./ic_stat_vpn_empty_halo.png \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/ic_vpn_disconnected.png b/app/src/main/res/drawable-hdpi/ic_vpn_disconnected.png deleted file mode 100644 index dfb962b9..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_vpn_disconnected.png and /dev/null differ diff --git a/app/src/main/res/drawable-ldpi/ic_stat_vpn.png b/app/src/main/res/drawable-ldpi/ic_stat_vpn.png index f973015c..65fc6db7 100644 Binary files a/app/src/main/res/drawable-ldpi/ic_stat_vpn.png and b/app/src/main/res/drawable-ldpi/ic_stat_vpn.png differ diff --git a/app/src/main/res/drawable-ldpi/ic_stat_vpn_empty_halo.png b/app/src/main/res/drawable-ldpi/ic_stat_vpn_empty_halo.png new file mode 100644 index 00000000..2df0a9bd Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_stat_vpn_empty_halo.png differ diff --git a/app/src/main/res/drawable-ldpi/ic_stat_vpn_offline.png b/app/src/main/res/drawable-ldpi/ic_stat_vpn_offline.png new file mode 100644 index 00000000..22f3497e Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_stat_vpn_offline.png differ diff --git a/app/src/main/res/drawable-ldpi/ic_stat_vpn_outline.png b/app/src/main/res/drawable-ldpi/ic_stat_vpn_outline.png new file mode 120000 index 00000000..482dafd3 --- /dev/null +++ b/app/src/main/res/drawable-ldpi/ic_stat_vpn_outline.png @@ -0,0 +1 @@ +./ic_stat_vpn_offline.png \ No newline at end of file diff --git a/app/src/main/res/drawable-mdpi/ic_stat_vpn.png b/app/src/main/res/drawable-mdpi/ic_stat_vpn.png new file mode 100644 index 00000000..7e167f84 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_vpn.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_vpn_empty_halo.png b/app/src/main/res/drawable-mdpi/ic_stat_vpn_empty_halo.png index fc039a82..a658d9e9 100644 Binary files a/app/src/main/res/drawable-mdpi/ic_stat_vpn_empty_halo.png and b/app/src/main/res/drawable-mdpi/ic_stat_vpn_empty_halo.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_vpn_offline.png b/app/src/main/res/drawable-mdpi/ic_stat_vpn_offline.png index f31387a4..f8b02bfb 100644 Binary files a/app/src/main/res/drawable-mdpi/ic_stat_vpn_offline.png and b/app/src/main/res/drawable-mdpi/ic_stat_vpn_offline.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png b/app/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png deleted file mode 100644 index 052aef9d..00000000 Binary files a/app/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png b/app/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png new file mode 120000 index 00000000..96d8d34d --- /dev/null +++ b/app/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png @@ -0,0 +1 @@ +./ic_stat_vpn_empty_halo.png \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_vpn.png b/app/src/main/res/drawable-xhdpi/ic_stat_vpn.png new file mode 100644 index 00000000..1f46be2c Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_vpn.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.png b/app/src/main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.png index 2f61e890..f4f28ef7 100644 Binary files a/app/src/main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.png and b/app/src/main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_vpn_offline.png b/app/src/main/res/drawable-xhdpi/ic_stat_vpn_offline.png index e9411518..7f44c46f 100644 Binary files a/app/src/main/res/drawable-xhdpi/ic_stat_vpn_offline.png and b/app/src/main/res/drawable-xhdpi/ic_stat_vpn_offline.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png b/app/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png deleted file mode 100644 index 5d27240d..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png b/app/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png new file mode 120000 index 00000000..96d8d34d --- /dev/null +++ b/app/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png @@ -0,0 +1 @@ +./ic_stat_vpn_empty_halo.png \ No newline at end of file diff --git a/app/src/main/res/values/untranslatable.xml b/app/src/main/res/values/untranslatable.xml index 6bffb192..f956b6bd 100644 --- a/app/src/main/res/values/untranslatable.xml +++ b/app/src/main/res/values/untranslatable.xml @@ -892,4 +892,5 @@ - + + \ No newline at end of file -- cgit v1.2.3 From b5c84602ebb9bf2f593d4352dfe51029f44731b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Wed, 25 Jun 2014 19:44:14 +0200 Subject: Show "Logged out." message. --- app/src/main/res/values/strings.xml | 1 + 1 file changed, 1 insertion(+) (limited to 'app/src/main/res') diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6db6962f..c928f001 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -57,6 +57,7 @@ Logging in Signing up Logging out from this session. + Logged out. Didn\'t logged out. Authentication succeeded. Authentication failed. -- cgit v1.2.3