{"id":152005,"date":"2025-12-18T23:11:55","date_gmt":"2025-12-18T21:11:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/reliz-openzfs-2-4-0-realizaczii-zfs-dlya-linux-i-freebsd"},"modified":"2025-12-18T23:11:55","modified_gmt":"2025-12-18T21:11:55","slug":"reliz-openzfs-2-4-0-realizaczii-zfs-dlya-linux-i-freebsd","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/reliz-openzfs-2-4-0-realizaczii-zfs-dlya-linux-i-freebsd","title":{"rendered":"Vyd\u00e1n\u00ed OpenZFS 2.4.0, implementace ZFS pro Linux a FreeBSD.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Po 11 m\u011bs\u00edc\u00edch v\u00fdvoje byl publikov\u00e1n vyd\u00e1n\u00ed projektu OpenZFS 2.4.0, kter\u00fd rozv\u00edj\u00ed implementaci souborov\u00e9ho syst\u00e9mu ZFS pro Linux a FreeBSD. Projekt se stal zn\u00e1m\u00fdm jako \u201eZFS on Linux\u201c a d\u0159\u00edve se omezoval na v\u00fdvoj modulu pro j\u00e1dro Linuxu, ale po slou\u010den\u00ed s k\u00f3dem z FreeBSD byl uzn\u00e1n jako hlavn\u00ed implementace OpenZFS a p\u0159ejmenov\u00e1n.     <\/p>\n<p>Fungov\u00e1n\u00ed OpenZFS bylo ov\u011b\u0159eno s j\u00e1dry Linux od 4.18 do 6.18 a se v\u0161emi v\u011btvemi FreeBSD od verze 13.3. K\u00f3d je distribuov\u00e1n pod svobodnou licenc\u00ed CDDL. OpenZFS se ji\u017e pou\u017e\u00edv\u00e1 ve FreeBSD a je sou\u010d\u00e1st\u00ed distribuc\u00ed Debian, Ubuntu, Gentoo, NixOS a ALT Linux. Bal\u00ed\u010dky s novou verz\u00ed budou brzy p\u0159ipraveny pro hlavn\u00ed distribuce Linux, v\u010detn\u011b Debian, Ubuntu, Fedora, RHEL\/CentOS.      <\/p>\n<p>OpenZFS poskytuje implementaci komponent ZFS, kter\u00e9 se vztahuj\u00ed jak k fungov\u00e1n\u00ed souborov\u00e9ho syst\u00e9mu, tak k fungov\u00e1n\u00ed spr\u00e1vce svazk\u016f. Byly implementov\u00e1ny komponenty: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) a ZPL (ZFS POSIX Layer). Projekt tak\u00e9 umo\u017e\u0148uje pou\u017eit\u00ed ZFS jako backendu pro clusterov\u00fd souborov\u00fd syst\u00e9m Lustre. Pr\u00e1ce OpenZFS vych\u00e1zej\u00ed z p\u016fvodn\u00edho k\u00f3du ZFS, importovan\u00e9ho z projektu OpenSolaris a roz\u0161\u00ed\u0159en\u00e9ho o vylep\u0161en\u00ed a opravy od komunity Illumos. Projekt se rozv\u00edj\u00ed za \u00fa\u010dasti zam\u011bstnanc\u016f Livermorsk\u00e9 n\u00e1rodn\u00ed laborato\u0159e na z\u00e1klad\u011b smlouvy s Ministerstvem energetiky USA.    <\/p>\n<p>K\u00f3d je distribuov\u00e1n pod svobodnou licenc\u00ed CDDL, kter\u00e1 je nekompatibiln\u00ed s GPLv2, co\u017e br\u00e1n\u00ed integraci OpenZFS do hlavn\u00ed v\u011btve j\u00e1dra Linuxu, proto\u017ee m\u00edch\u00e1n\u00ed k\u00f3du pod licencemi GPLv2 a CDDL nen\u00ed p\u0159\u00edpustn\u00e9. Aby se vy\u0159e\u0161ila licen\u010dn\u00ed nekompatibilita, bylo rozhodnuto distribuovat produkt pro Linux v\u00fdhradn\u011b pod licenc\u00ed CDDL jako samostatn\u011b stahovateln\u00fd modul dod\u00e1van\u00fd odd\u011blen\u011b od j\u00e1dra. Stabilita k\u00f3dov\u00e9 z\u00e1kladny OpenZFS je hodnocena jako srovnateln\u00e1 s jin\u00fdmi FS pro Linux.     <\/p>\n<p>Hlavn\u00ed zm\u011bny:  <\/p>\n<ul>\n<li class=\"l\"> Byla zavedena mo\u017enost nastaven\u00ed v\u00fdchoz\u00edch kv\u00f3t pro u\u017eivatele, skupiny a projekty. V minul\u00fdch verz\u00edch bylo mo\u017en\u00e9 nastavovat kv\u00f3ty pouze jednotliv\u011b pro ka\u017ed\u00e9ho u\u017eivatelsk\u00e9ho identifik\u00e1tora. V nov\u00e9 verzi je mo\u017en\u00e9 nastavit v\u00fdchoz\u00ed hodnotu, kter\u00e1 bude pou\u017eita, pokud nebyla pro konkr\u00e9tn\u00edho u\u017eivatele kv\u00f3ta nastavena.\n<li class=\"l\"> Byla p\u0159id\u00e1na mo\u017enost p\u0159epnut\u00ed re\u017eimu p\u0159\u00edm\u00e9ho vstupu\/v\u00fdstupu (O_DIRECT, Direct I\/O) na pou\u017eit\u00ed lehk\u00e9ho mechanismu neke\u0161ovan\u00e9ho vstupu\/v\u00fdstupu (Uncached I\/O) pro po\u017eadavky, kter\u00e9 nejsou zarovn\u00e1ny na hranici pam\u011b\u0165ov\u00e9 str\u00e1nky, kter\u00e9 Direct I\/O nepodporuje.\n<li class=\"l\"> Byl navr\u017een nov\u00fd jednotn\u00fd algoritmus pro omezen\u00ed rychlosti z\u00e1pisov\u00fdch operac\u00ed a um\u00edst\u011bn\u00ed blok\u016f, kter\u00fd sni\u017euje fragmentaci vdev (Virtual Device) t\u00edm, \u017ee agreguje n\u011bkolik z\u00e1pisov\u00fdch operac\u00ed a pou\u017e\u00edv\u00e1 pro n\u011b v\u011bt\u0161\u00ed, souvisl\u00e9 voln\u00e9 oblasti m\u00edsto ukl\u00e1d\u00e1n\u00ed v\u00fdsledk\u016f jednotliv\u00fdch z\u00e1pisov\u00fdch operac\u00ed do mal\u00fdch voln\u00fdch oblast\u00ed.\n<li class=\"l\"> Byla zv\u00fd\u0161ena v\u00fdkonnost \u0161ifrov\u00e1n\u00ed d\u00edky pou\u017eit\u00ed instrukc\u00ed AVX2 v implementaci algoritmu AES-GCM. V proveden\u00fdch testech dosahuje zrychlen\u00ed a\u017e 80%.\n<li class=\"l\"> Bylo povoleno um\u00eds\u0165ov\u00e1n\u00ed ZIL blok\u016f (ZFS Intent Log) nejen na b\u011b\u017en\u00e9 vdev nebo na samostatn\u00e9 za\u0159\u00edzen\u00ed SLOG, ale tak\u00e9 na speci\u00e1ln\u00ed vdev. Pokud je b\u011b\u017en\u00fd vdev spojen s pevn\u00fdm diskem, zat\u00edmco speci\u00e1ln\u00ed vdev s SSD, tato zm\u011bna umo\u017e\u0148uje vyhnout se situac\u00edm, kdy jsou data zapisov\u00e1na na SSD, zat\u00edmco souvisej\u00edc\u00ed bloky ZIL na pevn\u00fd disk, co\u017e zp\u016fsobuje zbyte\u010dn\u00e9 zpo\u017ed\u011bn\u00ed.\n<li class=\"l\"> Bylo povoleno nastavit vlastnost special_small_blocks pro sekce (ZVOL), a ne pouze pro souborov\u00e9 syst\u00e9my, co\u017e umo\u017e\u0148uje organizovat um\u00edst\u011bn\u00ed drobn\u00fdch blok\u016f na samostatn\u00e9m speci\u00e1ln\u00edm vdev, nap\u0159\u00edklad na SSD \u00falo\u017ei\u0161ti.\n<li class=\"l\"> Byl p\u0159id\u00e1n re\u017eim p\u0159eps\u00e1n\u00ed \u201ezfs rewrite -P\u201c, kter\u00fd co nejv\u00edce ponech\u00e1v\u00e1 nezm\u011bn\u011bn\u00fd logick\u00fd \u010das vytvo\u0159en\u00ed, co\u017e umo\u017e\u0148uje odli\u0161it bloky, kter\u00e9 byly jen p\u0159esunuty do poolu, od blok\u016f, kter\u00e9 byly skute\u010dn\u011b zm\u011bn\u011bny u\u017eivateli.\n<li class=\"l\"> Pro p\u0159\u00edkazy \u201ezpool trim\u201c, \u201ezpool scrub\u201c a \u201ezpool initialize\u201c byla implementov\u00e1na mo\u017enost \u201e-a\u201c (\u2014all), kter\u00e1 umo\u017e\u0148uje prov\u00e1d\u011bt tyto p\u0159\u00edkazy najednou pro v\u0161echny importovan\u00e9 pooly.\n<li class=\"l\"> Byl p\u0159id\u00e1n p\u0159\u00edkaz \u201ezpool scrub -S -E\u201c pro prov\u00e1d\u011bn\u00ed kontroly kontroln\u00edch sou\u010dt\u016f dat, kter\u00e1 spadaj\u00ed do zadan\u00fdch \u010dasov\u00fdch interval\u016f.\n<li class=\"l\"> Byly p\u0159id\u00e1ny nov\u00e9 optimalizace procesu deduplikace.          <\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=64448\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 11 \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 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 OpenZFS 2.4.0, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b ZFS \u0434\u043b\u044f Linux \u0438 FreeBSD. \u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043a &#171;ZFS on Linux&#187; \u0438 \u0440\u0430\u043d\u0435\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u044f\u0434\u0440\u0430 Linux, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u0438\u044f\u043d\u0438\u044f \u0441 \u043a\u043e\u0434\u043e\u043c \u0438\u0437 FreeBSD \u0431\u044b\u043b \u043f\u0440\u0438\u0437\u043d\u0430\u043d \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 OpenZFS \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d. \u0420\u0430\u0431\u043e\u0442\u0430 OpenZFS \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u0441 \u044f\u0434\u0440\u0430\u043c\u0438 Linux c 4.18 [&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-152005","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 11 \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 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 OpenZFS 2.4.0, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b ZFS \u0434\u043b\u044f Linux \u0438 FreeBSD.\" \/>\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\/cs\/blog\/news\/reliz-openzfs-2-4-0-realizaczii-zfs-dlya-linux-i-freebsd\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\u0420\u0435\u043b\u0438\u0437 OpenZFS 2.4.0, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 ZFS \u0434\u043b\u044f Linux \u0438 FreeBSD | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 11 \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 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 OpenZFS 2.4.0, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b ZFS \u0434\u043b\u044f Linux \u0438 FreeBSD.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/reliz-openzfs-2-4-0-realizaczii-zfs-dlya-linux-i-freebsd\" \/>\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=\"2025-12-18T21:11:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-12-18T21:11:55+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\udd47Release OpenZFS 2.4.0, implementace ZFS pro Linux a FreeBSD | ProHoster","description":"Po 11 m\u011bs\u00edc\u00edch v\u00fdvoje byl zve\u0159ejn\u011bn release projektu OpenZFS 2.4.0, kter\u00fd roz\u0161i\u0159uje implementaci souborov\u00e9ho syst\u00e9mu ZFS pro Linux a FreeBSD.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/reliz-openzfs-2-4-0-realizaczii-zfs-dlya-linux-i-freebsd","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\u0420\u0435\u043b\u0438\u0437 OpenZFS 2.4.0, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 ZFS \u0434\u043b\u044f Linux \u0438 FreeBSD | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 11 \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 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 OpenZFS 2.4.0, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b ZFS \u0434\u043b\u044f Linux \u0438 FreeBSD.","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/reliz-openzfs-2-4-0-realizaczii-zfs-dlya-linux-i-freebsd","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":"2025-12-18T21:11:55+00:00","article:modified_time":"2025-12-18T21:11:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"152005","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":"2026-01-20 13:40:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-20 13:40:19","updated":"2026-01-20 13:40:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/152005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=152005"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/152005\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=152005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=152005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=152005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}