{"id":104757,"date":"2022-08-02T15:37:00","date_gmt":"2022-08-02T13:37:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-sistemnoj-biblioteki-glibc-2-36"},"modified":"2022-08-02T15:37:00","modified_gmt":"2022-08-02T13:37:00","slug":"vypusk-sistemnoj-biblioteki-glibc-2-36","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/news\/vypusk-sistemnoj-biblioteki-glibc-2-36","title":{"rendered":"Version der Systembibliothek Glibc 2.36","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nach sechs Monaten der Entwicklung wurde die Version der GNU C Library (glibc) 2.36 ver\u00f6ffentlicht, die vollst\u00e4ndig den Anforderungen der ISO C11- und POSIX.1-2017-Standards entspricht. Der neue Release enth\u00e4lt Korrekturen von 59 Entwicklern.     <\/p>\n<p>Bei den in Glibc 2.36 implementierten Verbesserungen sind folgende hervorzuheben:   <\/p>\n<ul>\n<li class=\"l\"> Die Unterst\u00fctzung f\u00fcr das neue Format der relativen Adressverschiebungen DT_RELR (relative relocation) wurde hinzugef\u00fcgt, was die Gr\u00f6\u00dfe der relativen Verschiebungen in gemeinsam genutzten Objekten und ausf\u00fchrbaren Dateien, die im Modus mit PIE (Position-independent executables) kompiliert wurden, reduziert. Um das Feld DT_RELR in ELF-Dateien zu verwenden, ist die Unterst\u00fctzung der Option &#171;-z pack-relative-relocs&#187; im Linker erforderlich, die in der Ver\u00f6ffentlichung des binutils-Pakets 2.38 eingef\u00fchrt wurde.\n<li class=\"l\"> F\u00fcr die Linux-Plattform wurden die Funktionen pidfd_open, pidfd_getfd und pidfd_send_signal implementiert, die den Zugriff auf die Funktionalit\u00e4t von pidfd erm\u00f6glichen, die hilft, Situationen mit der Wiederverwendung von PIDs besser zu verwalten, um Prozesse, die auf \u00fcberwachte Dateien zugreifen, genauer zu identifizieren (pidfd wird mit einem bestimmten Prozess verbunden und \u00e4ndert sich nicht, w\u00e4hrend die PID nach Abschluss des aktuellen mit dieser PID verkn\u00fcpften Prozesses an einen anderen Prozess gebunden werden kann).\n<li class=\"l\"> F\u00fcr die Linux-Plattform wurde die Funktion process_madvise() hinzugef\u00fcgt, die es einem Prozess erm\u00f6glicht, den Systemaufruf madvise() im Namen eines anderen Prozesses auszuf\u00fchren, indem der Zielprozess \u00fcber pidfd identifiziert wird. \u00dcber madvise() kann der Kernel \u00fcber die Speichereigenschaften informiert werden, um die Speicherverwaltung des Prozesses zu optimieren; beispielsweise kann der Kernel basierend auf den \u00fcbermittelten Informationen die Freigabe zus\u00e4tzlicher freier Speicherressourcen initiieren. Der Aufruf von madvise() durch einen anderen Prozess kann erforderlich sein, wenn die f\u00fcr die Optimierung notwendigen Informationen dem aktuellen Prozess nicht bekannt sind und von einem separaten Hintergrundverwaltungsprozess koordiniert werden, der eigenst\u00e4ndig die Freigabe ungenutzten Speichers bei Prozessen ansto\u00dfen kann.\n<li class=\"l\"> F\u00fcr die Linux-Plattform wurde die Funktion process_mrelease() hinzugef\u00fcgt, die eine schnellere Freigabe des Speichers f\u00fcr einen Prozess erm\u00f6glicht, der seine Ausf\u00fchrung beendet. Unter normalen Bedingungen erfolgt die Freigabe von Ressourcen und das Beenden eines Prozesses nicht sofort und kann aus verschiedenen Gr\u00fcnden verz\u00f6gert werden, was die Arbeit von im Benutzerraum laufenden Systemen zur fr\u00fchzeitigen Reaktion auf Speicherknappheit, wie z.B. oomd (bereitgestellt in systemd), st\u00f6rt. Mit dem Aufruf von process_mrelease k\u00f6nnen solche Systeme vorhersehbarer Speicher von zwangsweise beendeten Prozessen zur\u00fcckfordern.\n<li class=\"l\"> Die eingebaute Implementierung des DNS-Resolvers hat die Unterst\u00fctzung der Option &#171;no-aaaa&#187; erhalten, die es erm\u00f6glicht, zur vereinfachten Diagnose von Problemen die Sendung von DNS-Anfragen f\u00fcr AAAA-Eintr\u00e4ge (Bestimmung der IPv6-Adresse anhand des Hostnamens) zu deaktivieren, auch bei der Ausf\u00fchrung von NSS-Funktionen wie getaddrinfo(). Die Option hat keinen Einfluss auf die Verarbeitung von IPv6-Adressen, die in \/etc\/hosts definiert sind, und den Aufruf von getaddrinfo() mit dem Flag AI_PASSIVE.\n<li class=\"l\"> F\u00fcr die Linux-Plattform wurden die Funktionen fsopen, fsmount, move_mount, fsconfig, fspick, open_tree und mount_setattr hinzugef\u00fcgt, die Zugriff auf die neue Kernel-API zur Verwaltung der Einbindung von Dateisystemen unter Ber\u00fccksichtigung der Mount-Namensr\u00e4ume bieten. Die vorgeschlagenen Funktionen erm\u00f6glichen es, verschiedene Phasen des Einbindens (Superblock verarbeiten, Informationen \u00fcber das FS abrufen, einbinden, an den Mount-Punkt anh\u00e4ngen) getrennt zu behandeln, die zuvor mit der allgemeinen Funktion mount() durchgef\u00fchrt wurden. Separierte Funktionen erm\u00f6glichen es, komplexere Einbindungsszenarien durchzuf\u00fchren und solche Operationen wie das Neuausrichten des Superblocks, das Aktivieren von Optionen, das \u00c4ndern des Mount-Punkts und das Verschieben in einen anderen Namensraum separat auszuf\u00fchren. Dar\u00fcber hinaus erm\u00f6glicht die getrennte Verarbeitung eine pr\u00e4zise Bestimmung der Gr\u00fcnde f\u00fcr die Ausgabe von Fehlercodes und das Festlegen mehrerer Quellen f\u00fcr mehrschichtige Dateisysteme wie overlayfs.\n<li class=\"l\"> In localedef wurde die Unterst\u00fctzung f\u00fcr die Verarbeitung von Dateien mit Locale-Definitionen implementiert, die in UTF-8 anstelle von ASCII bereitgestellt werden.\n<li class=\"l\"> Funktionen zur Umwandlung von Multi-Byte-Codierungen mbrtoc8 und c8rtomb wurden hinzugef\u00fcgt, die den Spezifikationen ISO C2X N2653 und C++20 P0482R6 entsprechen.\n<li class=\"l\"> Die Unterst\u00fctzung f\u00fcr den Typ char8_t, der im Entwurf des Standards ISO C2X N2653 definiert ist, wurde hinzugef\u00fcgt.\n<li class=\"l\"> Die Funktionen arc4random, arc4random_buf und arc4random_uniform wurden hinzugef\u00fcgt, die Wrapper f\u00fcr den Systemaufruf getrandom und die Schnittstelle \/dev\/urandom bereitstellen und qualitativ hochwertige Pseudozufallszahlen zur\u00fcckgeben.\n<li class=\"l\"> Auf der Linux-Plattform wurde die Unterst\u00fctzung f\u00fcr die LoongArch-Befehlssatzarchitektur implementiert, die in den Loongson 3 5000-Prozessoren verwendet wird und ein neues RISC ISA implementiert, das MIPS und RISC-V \u00e4hnelt. Derzeit steht nur die Unterst\u00fctzung der 64-Bit-Version von LoongArch (LA64) zur Verf\u00fcgung. Es wird mindestens die Version 2.38 von binutils, GCC 12 und den Linux-Kernel 5.19 ben\u00f6tigt.\n<li class=\"l\">  Der prelink-Mechanismus sowie die damit verbundenen Umgebungsvariablen LD_TRACE_PRELINKING und LD_USE_LOAD_BIAS und die M\u00f6glichkeiten des Linkers wurden als veraltet erkl\u00e4rt und werden in der n\u00e4chsten Version entfernt.\n<li class=\"l\"> Der Code zur \u00dcberpr\u00fcfung der Linux-Kernel-Version und zur Verarbeitung der Umgebungsvariablen LD_ASSUME_KERNEL wurde entfernt. Die minimal unterst\u00fctzte Kernel-Version beim Erstellen von Glibc wird \u00fcber das ELF-Feld NT_GNU_ABI_TAG definiert.\n<li class=\"l\"> Auf der Linux-Plattform wurde die Unterst\u00fctzung f\u00fcr die Umgebungsvariable LD_LIBRARY_VERSION eingestellt.  <\/ul>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=57585\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0440\u0435\u043b\u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 GNU C Library (glibc) 2.36, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 ISO C11 \u0438 POSIX.1-2017. \u0412 \u0441\u043e\u0441\u0442\u0430\u0432 \u043d\u043e\u0432\u043e\u0433\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442 59 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0418\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 Glibc 2.36 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c: \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 DT_RELR (relative relocation), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-104757","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0440\u0435\u043b\u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 GNU C Library (glibc) 2.36, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 ISO C11 \u0438 POSIX.1-2017.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/news\/vypusk-sistemnoj-biblioteki-glibc-2-36\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Glibc 2.36 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0440\u0435\u043b\u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 GNU C Library (glibc) 2.36, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 ISO C11 \u0438 POSIX.1-2017.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/news\/vypusk-sistemnoj-biblioteki-glibc-2-36\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2022-08-02T13:37:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-08-02T13:37:00+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ver\u00f6ffentlichung der Systembibliothek Glibc 2.36 | ProHoster","description":"Nach sechs Monaten Entwicklung wurde die Systembibliothek GNU C Library (glibc) 2.36 ver\u00f6ffentlicht, die vollst\u00e4ndig den Anforderungen der ISO C11- und POSIX.1-2017-Standards entspricht.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/vypusk-sistemnoj-biblioteki-glibc-2-36","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Glibc 2.36 | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0440\u0435\u043b\u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 GNU C Library (glibc) 2.36, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 ISO C11 \u0438 POSIX.1-2017.","og:url":"https:\/\/prohoster.info\/de\/blog\/news\/vypusk-sistemnoj-biblioteki-glibc-2-36","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2022-08-02T13:37:00+00:00","article:modified_time":"2022-08-02T13:37:00+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"104757","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2022-08-02 13:38:12","updated":"2022-09-28 23:12:01","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/104757","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=104757"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/104757\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=104757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=104757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=104757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}