{"id":163792,"date":"2026-03-10T23:11:57","date_gmt":"2026-03-10T21:11:59","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/uyazvimosti-v-proekte-pingora-pozvolyayushhie-vklinitsya-v-storonnie-zaprosy"},"modified":"2026-03-10T23:11:57","modified_gmt":"2026-03-10T21:11:59","slug":"uyazvimosti-v-proekte-pingora-pozvolyayushhie-vklinitsya-v-storonnie-zaprosy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimosti-v-proekte-pingora-pozvolyayushhie-vklinitsya-v-storonnie-zaprosy","title":{"rendered":"Vuln\u00e9rabilit\u00e9s dans le projet Pingora permettant d'intercepter les requ\u00eates externes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>L'entreprise Cloudflare a annonc\u00e9 avoir corrig\u00e9 trois vuln\u00e9rabilit\u00e9s dans le cadre de Pingora, dont deux ont \u00e9t\u00e9 class\u00e9es comme critiques (9,3 sur 10). Le cadre Pingora est \u00e9crit en Rust et est destin\u00e9 \u00e0 d\u00e9velopper des services r\u00e9seau s\u00e9curis\u00e9s et hautes performances. Le proxy construit avec Pingora est utilis\u00e9 dans le r\u00e9seau de distribution de contenu de Cloudflare et traite plus de 40 millions de requ\u00eates par seconde. Les vuln\u00e9rabilit\u00e9s ont \u00e9t\u00e9 corrig\u00e9es dans la version Pingora 0.8.0.    <\/p>\n<p>Deux des vuln\u00e9rabilit\u00e9s les plus dangereuses permettent de mener des attaques de type \u00ab HTTP Request Smuggling \u00bb, qui contournent les syst\u00e8mes de restriction d'acc\u00e8s et s'immiscent dans le contenu des requ\u00eates d'autres utilisateurs trait\u00e9es dans le m\u00eame flux entre le frontend et le backend (par exemple, pour injecter un code JavaScript malveillant dans la session d'un autre utilisateur sur le site). Les probl\u00e8mes ont \u00e9t\u00e9 identifi\u00e9s par un participant au programme Bug Bounty, qui pr\u00e9voit une r\u00e9compense pour la d\u00e9couverte de vuln\u00e9rabilit\u00e9s.        <\/p>\n<p>Dans le sch\u00e9ma d'appel au backend via un proxy inverse, les requ\u00eates des clients sont accept\u00e9es par un n\u0153ud suppl\u00e9mentaire qui \u00e9tablit une connexion TCP persistante avec le backend, qui g\u00e8re directement les requ\u00eates. \u00c0 travers cette connexion partag\u00e9e, des requ\u00eates de diff\u00e9rents utilisateurs sont g\u00e9n\u00e9ralement transmises, suivant la cha\u00eene les unes apr\u00e8s les autres, s\u00e9par\u00e9es par les moyens du protocole HTTP. Les attaques de type HTTP Request Smuggling surviennent en raison d'interpr\u00e9tations diff\u00e9rentes des en-t\u00eates HTTP et des sp\u00e9cifications du protocole HTTP entre le frontend et le backend, par exemple, lorsque le frontend utilise l'en-t\u00eate HTTP \u00ab Content-Length \u00bb pour d\u00e9terminer la taille de la requ\u00eate et le backend \u00ab Transfer-Encoding: chunked \u00bb.     <\/p>\n<p>La premi\u00e8re vuln\u00e9rabilit\u00e9 CVE-2026-2835 est pr\u00e9sente dans le code d'analyse des requ\u00eates HTTP\/1.0 et est caus\u00e9e par un traitement incorrect de l'en-t\u00eate \u00ab Transfer-Encoding \u00bb avec plusieurs valeurs, ainsi que par l'utilisation de la fermeture de la connexion comme indicateur de fin du corps de la requ\u00eate (close-delimited). Pingora v\u00e9rifiait uniquement l'option \u00ab Transfer-Encoding: chunked \u00bb et ignorait cet en-t\u00eate lorsqu'il contenait plusieurs valeurs. Dans cette situation, Pingora ne tenait pas compte de la taille dans l'en-t\u00eate \u00ab Content-Length \u00bb, consid\u00e9rant comme corps de requ\u00eate toutes les donn\u00e9es re\u00e7ues jusqu'\u00e0 la fermeture de la connexion.    <\/p>\n<p>En sp\u00e9cifiant plusieurs valeurs dans l'en-t\u00eate \u00ab Transfer-Encoding \u00bb, l'attaquant pouvait cr\u00e9er des conditions dans lesquelles une requ\u00eate redirig\u00e9e vers le backend avait une taille r\u00e9elle ne correspondant pas \u00e0 la taille de la cha\u00eene chunked calcul\u00e9e sur la base de l'en-t\u00eate \u00ab Transfer-Encoding \u00bb. Pingora redirigeait toutes les donn\u00e9es re\u00e7ues comme une seule requ\u00eate, tandis que le backend, par exemple Node.js, calculait la requ\u00eate sur la base de \u00ab Transfer-Encoding: chunked \u00bb et traitait le reste du tail comme le d\u00e9but d'une autre requ\u00eate. GET \/ HTTP\/1.0 Host: example.com Connection: keep-alive Transfer-Encoding: identity, chunked Content-Length: 29 0 GET \/admin HTTP\/1.1 X:      <center><img decoding=\"async\" alt=\"Vuln\u00e9rabilit\u00e9s dans le projet Pingora permettant d&#039;intercepter les requ\u00eates externes\" src=\"\/wp-content\/uploads\/2026\/03\/6a4654a05c9ff8c64cc4cb4773bf4ec9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>La deuxi\u00e8me vuln\u00e9rabilit\u00e9 CVE-2026-2833 est caus\u00e9e par un traitement incorrect de l'en-t\u00eate HTTP \u00ab Upgrade \u00bb dans les requ\u00eates HTTP\/1.1. Lorsqu'un en-t\u00eate \u00ab Upgrade \u00bb est pr\u00e9sent dans la requ\u00eate, le proxy le transmet imm\u00e9diatement au backend, sans attendre une r\u00e9ponse du backend avec un code 101 (Switching Protocols) pour les autres donn\u00e9es de la requ\u00eate suivant l'en-t\u00eate \u00ab Upgrade \u00bb. Cela perturbe la synchronisation du flux entre le proxy et le backend, et le backend interpr\u00e8te les donn\u00e9es envoy\u00e9es apr\u00e8s l'en-t\u00eate \u00ab Upgrade \u00bb comme une demande distincte, envoyant le r\u00e9sultat de cette requ\u00eate en r\u00e9ponse \u00e0 la demande suivante d'un autre utilisateur. GET \/ HTTP\/1.1 Host: example.com Upgrade: foo GET \/admin HTTP\/1.1 Host: example.com      <center><img decoding=\"async\" alt=\"Vuln\u00e9rabilit\u00e9s dans le projet Pingora permettant d&#039;intercepter les requ\u00eates externes\" src=\"\/wp-content\/uploads\/2026\/03\/f86f840431a9be00c4cfd74cc6b4c89b.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <center><img decoding=\"async\" alt=\"Vuln\u00e9rabilit\u00e9s dans le projet Pingora permettant d&#039;intercepter les requ\u00eates externes\" src=\"\/wp-content\/uploads\/2026\/03\/8b23d0642fc0b783c2027b91078607e4.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Les probl\u00e8mes se manifestent lors de l'utilisation de Pingora en tant que proxy inverse (ingress proxy), relayant les requ\u00eates des utilisateurs vers les backends en utilisant les protocoles HTTP\/1.0 ou HTTP\/1.1. La configuration de Pingora utilis\u00e9e dans le r\u00e9seau de distribution de contenu Cloudflare ne permettait pas d'exploiter les vuln\u00e9rabilit\u00e9s, car Pingora dans le CDN n'est pas utilis\u00e9 en tant que proxy d'entr\u00e9e, redirige uniquement les requ\u00eates en utilisant le protocole HTTP\/1.1, bloque les requ\u00eates avec des valeurs Content-Length incorrectes, ne redirige qu'une seule valeur de l'en-t\u00eate \u00ab Transfer-Encoding: chunked \u00bb et ajoute dans les requ\u00eates avec l'en-t\u00eate \u00ab Upgrade: \u00bb un en-t\u00eate suppl\u00e9mentaire \u00ab Connection: close \u00bb, emp\u00eachant l'envoi de requ\u00eates suppl\u00e9mentaires dans la m\u00eame connexion.          <\/p>\n<p>La troisi\u00e8me vuln\u00e9rabilit\u00e9 CVE-2026-2836 (niveau de gravit\u00e9 8.4 sur 10) entra\u00eene une empoisonnement du cache (cache poisoning) en raison de la g\u00e9n\u00e9ration de la cl\u00e9 de placement des donn\u00e9es dans le cache (CacheKey) uniquement sur la base du chemin URI, ignorant le contenu de l'en-t\u00eate \u00ab Host \u00bb. Ce d\u00e9faut entra\u00eene la formation de cl\u00e9s de mise en cache identiques pour des chemins HTTP identiques vers diff\u00e9rents h\u00f4tes. La vuln\u00e9rabilit\u00e9 peut \u00eatre utilis\u00e9e pour remplacer le contenu du cache lors de l'utilisation du mode de mise en cache pour plusieurs h\u00f4tes. Dans Pingora, la mise en cache est une fonction exp\u00e9rimentale, non recommand\u00e9e pour les d\u00e9ploiements en production.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=64957\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Cloudflare \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e\u0431 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0442\u0440\u0451\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 Pingora, \u0434\u0432\u0443\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (9.3 \u0438\u0437 10). \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Pingora \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Rust \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Pingora \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u0442\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 Cloudflare \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 40 \u043c\u043b\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":8,"featured_media":163793,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-163792","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Cloudflare \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e\u0431 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0442\u0440\u0451\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 Pingora, \u0434\u0432\u0443\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (9.3 \u0438\u0437 10).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Erik Peterson\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimosti-v-proekte-pingora-pozvolyayushhie-vklinitsya-v-storonnie-zaprosy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Pingora, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0432\u043a\u043b\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Cloudflare \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e\u0431 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0442\u0440\u0451\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 Pingora, \u0434\u0432\u0443\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (9.3 \u0438\u0437 10).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimosti-v-proekte-pingora-pozvolyayushhie-vklinitsya-v-storonnie-zaprosy\" \/>\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=\"2026-03-10T21:11:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-03-10T21:11:59+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\udd47Vuln\u00e9rabilit\u00e9s dans le projet Pingora permettant d'intercepter des requ\u00eates externes | ProHoster","description":"La soci\u00e9t\u00e9 Cloudflare a annonc\u00e9 avoir corrig\u00e9 trois vuln\u00e9rabilit\u00e9s dans le framework Pingora, dont deux ont \u00e9t\u00e9 class\u00e9es comme critiques (9.3 sur 10).","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimosti-v-proekte-pingora-pozvolyayushhie-vklinitsya-v-storonnie-zaprosy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Pingora, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0432\u043a\u043b\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b | ProHoster","og:description":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Cloudflare \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e\u0431 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0442\u0440\u0451\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 Pingora, \u0434\u0432\u0443\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (9.3 \u0438\u0437 10).","og:url":"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimosti-v-proekte-pingora-pozvolyayushhie-vklinitsya-v-storonnie-zaprosy","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":"2026-03-10T21:11:59+00:00","article:modified_time":"2026-03-10T21:11:59+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/163792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=163792"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/163792\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/163793"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=163792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=163792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=163792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}