{"id":200921,"date":"2026-01-07T10:54:30","date_gmt":"2026-01-07T10:54:30","guid":{"rendered":"https:\/\/bccci.net\/blog\/euro-area-annual-inflation-down-to-2-0-2\/"},"modified":"2026-01-07T10:54:30","modified_gmt":"2026-01-07T10:54:30","slug":"euro-area-annual-inflation-down-to-2-0-2","status":"publish","type":"post","link":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/","title":{"rendered":"Euro area annual inflation down to 2.0%"},"content":{"rendered":"<p><br \/>\n<\/p>\n<div>\n<p>[]<br \/><button>                                   Print page        <\/button>                                                                                                                       <\/p>\n<p>Printing can have negative environmental impacts due to paper waste. We encourage you to explore eco-friendly alternatives. Bookmarking this page in your browser allows you to access it anytime.<\/p>\n<p>This publication can also be converted to PDF, if you have a PDF printer installed on your computer. PDF printers function as virtual printers, enabling you to create digital copies of web pages and access the content offline.<\/p>\n<p>                                                                                 {   const buttonPrintPage = document.getElementById(\u2018estat-print-page-modal-toggle\u2019);   const cookieSkipModal = \u2018skipModalBeforePrinting\u2019;   if (configuration.displayInPageHeader) {     const headerElement = document.querySelector(\u2018.ecl-page-header .ecl-page-header__meta\u2019) || document.querySelector(\u2018.ecl-page-header .ecl-page-header__title-container \u2018)     if (headerElement) {       headerElement.prepend(buttonPrintPage);       headerElement.classList.add(\u2018ecl-u-width-100\u2019)     }   }    buttonPrintPage.addEventListener(\u2018click\u2019, () =&gt; {     const skipModal = readCookie(cookieSkipModal);     if (skipModal == \u2018true\u2019) {       window.print();     } else {       const eclModalElement = document.getElementById(\u2018estat-print-page-modal\u2019);       const eclModal = ECL.components.get(eclModalElement);       eclModal.openModal();     }   });    document.getElementById(\u2018print-submit\u2019).addEventListener(\u2018click\u2019, () =&gt; {     const skipModal = document.getElementById(\u2018checkbox-skip-modal\u2019).checked     if (skipModal) {       writeCookieWithMaxAgeValue(cookieSkipModal, \u2018true\u2019, 15768000);     } else {       deleteCookie(cookieSkipModal);     }     window.print();   }); });;}());]]&gt;  \t\t\t\t\t\t\t\t\t\t\t  \t\t\t\t\t\t\t\t\t\t\t\t                                        <\/p>\n<h2 align=\"center\">Pre-announcement: upcoming changes to the HICP<\/h2>\n<p>As of 4 February 2026, several methodological changes will take effect in the HICP. The index will be compiled according to the new European Classification of Individual Consumption According to Purpose version 2, aligned with the UN COICOP 2018 classification. Games of chance will be included in the HICP as part of Recreation services under the division of Recreation, sport and culture. The index reference period will also be updated to 2025=100.<\/p>\n<h2>Overview<\/h2>\n<p>Euro area annual inflation is expected to be 2.0% in December 2025, down from 2.1% in November according to a flash estimate from Eurostat, the statistical office of the European Union.<\/p>\n<p>Looking at the main components of euro area inflation, services is expected to have the highest annual rate in December (3.4%, compared with 3.5% in November), followed by food, alcohol &amp; tobacco (2.6%, compared with 2.4% in November), non-energy industrial goods (0.4%, compared with 0.5% in November) and energy (-1.9%, compared with -0.5% in November).<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/ec.europa.eu\/eurostat\/documents\/2995521\/22814804\/2-07012026-ap-en-image-0001.png?w=1200&amp;ssl=1\" alt=\"Euro area annual inflation - December 2025, %\"\/><\/p>\n<h2 align=\"left\">Tables<\/h2>\n<table>\n<tbody>\n<tr>\n<th>\n<p>Euro area annual inflation and its components (%)<\/p>\n<\/th>\n<\/tr>\n<tr>\n<th\/>\n<th>\n<p>Weights (\u2030)<\/p>\n<\/th>\n<th>\n<p>Annual rate<\/p>\n<\/th>\n<th>\n<p>Monthly rate<\/p>\n<\/th>\n<\/tr>\n<tr>\n<th\/>\n<th>\n<p>2025<\/p>\n<\/th>\n<th>\n<p>Dec 24<\/p>\n<\/th>\n<th>\n<p>Jul 25<\/p>\n<\/th>\n<th>\n<p>Aug 25<\/p>\n<\/th>\n<th>\n<p>Sep 25<\/p>\n<\/th>\n<th>\n<p>Oct 25<\/p>\n<\/th>\n<th>\n<p>Nov 25<\/p>\n<\/th>\n<th>\n<p>Dec 25<\/p>\n<\/th>\n<th>\n<p>Dec 25<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p>1000.0<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.0<\/p>\n<\/td>\n<td>\n<p>2.0<\/p>\n<\/td>\n<td>\n<p>2.2<\/p>\n<\/td>\n<td>\n<p>2.1<\/p>\n<\/td>\n<td>\n<p>2.1<\/p>\n<\/td>\n<td>\n<p>2.0e<\/p>\n<\/td>\n<td>\n<p>0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>906.0<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.4e<\/p>\n<\/td>\n<td>\n<p>0.3e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>863.4<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.3<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.3e<\/p>\n<\/td>\n<td>\n<p>0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>712.8<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>2.3<\/p>\n<\/td>\n<td>\n<p>2.3<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.3e<\/p>\n<\/td>\n<td>\n<p>0.3e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>193.3<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>3.3<\/p>\n<\/td>\n<td>\n<p>3.2<\/p>\n<\/td>\n<td>\n<p>3.0<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.6e<\/p>\n<\/td>\n<td>\n<p>0.1e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>150.6<\/p>\n<\/td>\n<td>\n<p>2.9<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>2.3<\/p>\n<\/td>\n<td>\n<p>2.2<\/p>\n<\/td>\n<td>\n<p>2.1e<\/p>\n<\/td>\n<td>\n<p>-0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>42.7<\/p>\n<\/td>\n<td>\n<p>1.6<\/p>\n<\/td>\n<td>\n<p>5.4<\/p>\n<\/td>\n<td>\n<p>5.5<\/p>\n<\/td>\n<td>\n<p>4.7<\/p>\n<\/td>\n<td>\n<p>3.2<\/p>\n<\/td>\n<td>\n<p>3.2<\/p>\n<\/td>\n<td>\n<p>4.2e<\/p>\n<\/td>\n<td>\n<p>0.8e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>94.0<\/p>\n<\/td>\n<td>\n<p>0.1<\/p>\n<\/td>\n<td>\n<p>-2.4<\/p>\n<\/td>\n<td>\n<p>-2.0<\/p>\n<\/td>\n<td>\n<p>-0.4<\/p>\n<\/td>\n<td>\n<p>-0.9<\/p>\n<\/td>\n<td>\n<p>-0.5<\/p>\n<\/td>\n<td>\n<p>-1.9e<\/p>\n<\/td>\n<td>\n<p>-0.8e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>256.3<\/p>\n<\/td>\n<td>\n<p>0.5<\/p>\n<\/td>\n<td>\n<p>0.8<\/p>\n<\/td>\n<td>\n<p>0.8<\/p>\n<\/td>\n<td>\n<p>0.8<\/p>\n<\/td>\n<td>\n<p>0.6<\/p>\n<\/td>\n<td>\n<p>0.5<\/p>\n<\/td>\n<td>\n<p>0.4e<\/p>\n<\/td>\n<td>\n<p>-0.3e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>456.5<\/p>\n<\/td>\n<td>\n<p>4.0<\/p>\n<\/td>\n<td>\n<p>3.2<\/p>\n<\/td>\n<td>\n<p>3.1<\/p>\n<\/td>\n<td>\n<p>3.2<\/p>\n<\/td>\n<td>\n<p>3.4<\/p>\n<\/td>\n<td>\n<p>3.5<\/p>\n<\/td>\n<td>\n<p>3.4e<\/p>\n<\/td>\n<td>\n<p>0.7e<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<th>\n<p>Inflation rates (%) measured by the HICP<\/p>\n<\/th>\n<\/tr>\n<tr>\n<th\/>\n<th>\n<p>Annual rate<\/p>\n<\/th>\n<th>\n<p>Monthly rate<\/p>\n<\/th>\n<\/tr>\n<tr>\n<th\/>\n<th>\n<p>Dec 24<\/p>\n<\/th>\n<th>\n<p>Jul 25<\/p>\n<\/th>\n<th>\n<p>Aug 25<\/p>\n<\/th>\n<th>\n<p>Sep 25<\/p>\n<\/th>\n<th>\n<p>Oct 25<\/p>\n<\/th>\n<th>\n<p>Nov 25<\/p>\n<\/th>\n<th>\n<p>Dec 25<\/p>\n<\/th>\n<th>\n<p>Dec 25<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p>4.4<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>2.2e<\/p>\n<\/td>\n<td>\n<p>0.3e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>2.8<\/p>\n<\/td>\n<td>\n<p>1.8<\/p>\n<\/td>\n<td>\n<p>2.1<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.3<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>2.0e<\/p>\n<\/td>\n<td>\n<p>0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>4.1<\/p>\n<\/td>\n<td>\n<p>5.6<\/p>\n<\/td>\n<td>\n<p>6.2<\/p>\n<\/td>\n<td>\n<p>5.3<\/p>\n<\/td>\n<td>\n<p>4.5<\/p>\n<\/td>\n<td>\n<p>4.7<\/p>\n<\/td>\n<td>\n<p>4.1e<\/p>\n<\/td>\n<td>\n<p>-0.4e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.0<\/p>\n<\/td>\n<td>\n<p>1.6<\/p>\n<\/td>\n<td>\n<p>1.9<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>2.8<\/p>\n<\/td>\n<td>\n<p>3.1<\/p>\n<\/td>\n<td>\n<p>2.7e<\/p>\n<\/td>\n<td>\n<p>0.6e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>2.9<\/p>\n<\/td>\n<td>\n<p>3.7<\/p>\n<\/td>\n<td>\n<p>3.1<\/p>\n<\/td>\n<td>\n<p>1.8<\/p>\n<\/td>\n<td>\n<p>1.6<\/p>\n<\/td>\n<td>\n<p>2.8<\/p>\n<\/td>\n<td>\n<p>2.9e<\/p>\n<\/td>\n<td>\n<p>0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>2.8<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>3.0<\/p>\n<\/td>\n<td>\n<p>3.2<\/p>\n<\/td>\n<td>\n<p>3.2<\/p>\n<\/td>\n<td>\n<p>3.0e<\/p>\n<\/td>\n<td>\n<p>0.3e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.8<\/p>\n<\/td>\n<td>\n<p>0.9<\/p>\n<\/td>\n<td>\n<p>0.8<\/p>\n<\/td>\n<td>\n<p>1.1<\/p>\n<\/td>\n<td>\n<p>0.8<\/p>\n<\/td>\n<td>\n<p>0.8<\/p>\n<\/td>\n<td>\n<p>0.7e<\/p>\n<\/td>\n<td>\n<p>0.1e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>4.5<\/p>\n<\/td>\n<td>\n<p>4.5<\/p>\n<\/td>\n<td>\n<p>4.6<\/p>\n<\/td>\n<td>\n<p>4.6<\/p>\n<\/td>\n<td>\n<p>4.0<\/p>\n<\/td>\n<td>\n<p>4.3<\/p>\n<\/td>\n<td>\n<p>3.8e<\/p>\n<\/td>\n<td>\n<p>-0.3e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.4<\/p>\n<\/td>\n<td>\n<p>1.7<\/p>\n<\/td>\n<td>\n<p>1.6<\/p>\n<\/td>\n<td>\n<p>1.8<\/p>\n<\/td>\n<td>\n<p>1.3<\/p>\n<\/td>\n<td>\n<p>1.1<\/p>\n<\/td>\n<td>\n<p>1.2e<\/p>\n<\/td>\n<td>\n<p>0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>3.1<\/p>\n<\/td>\n<td>\n<p>0.1<\/p>\n<\/td>\n<td>\n<p>0.0<\/p>\n<\/td>\n<td>\n<p>0.0<\/p>\n<\/td>\n<td>\n<p>0.2<\/p>\n<\/td>\n<td>\n<p>0.1<\/p>\n<\/td>\n<td>\n<p>0.1e<\/p>\n<\/td>\n<td>\n<p>-0.4e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>3.4<\/p>\n<\/td>\n<td>\n<p>3.9<\/p>\n<\/td>\n<td>\n<p>4.2<\/p>\n<\/td>\n<td>\n<p>4.2<\/p>\n<\/td>\n<td>\n<p>4.3<\/p>\n<\/td>\n<td>\n<p>3.8<\/p>\n<\/td>\n<td>\n<p>3.5e<\/p>\n<\/td>\n<td>\n<p>0.0e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.9<\/p>\n<\/td>\n<td>\n<p>3.4<\/p>\n<\/td>\n<td>\n<p>3.6<\/p>\n<\/td>\n<td>\n<p>3.7<\/p>\n<\/td>\n<td>\n<p>3.7<\/p>\n<\/td>\n<td>\n<p>3.6<\/p>\n<\/td>\n<td>\n<p>3.2e<\/p>\n<\/td>\n<td>\n<p>-0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.6<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>2.8<\/p>\n<\/td>\n<td>\n<p>3.1<\/p>\n<\/td>\n<td>\n<p>3.0<\/p>\n<\/td>\n<td>\n<p>3.6<\/p>\n<\/td>\n<td>\n<p>3.3e<\/p>\n<\/td>\n<td>\n<p>-0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.8<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.3e<\/p>\n<\/td>\n<td>\n<p>-0.5e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>3.9<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>3.0<\/p>\n<\/td>\n<td>\n<p>3.0<\/p>\n<\/td>\n<td>\n<p>2.6<\/p>\n<\/td>\n<td>\n<p>2.5e<\/p>\n<\/td>\n<td>\n<p>0.2e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>2.1<\/p>\n<\/td>\n<td>\n<p>3.7<\/p>\n<\/td>\n<td>\n<p>4.1<\/p>\n<\/td>\n<td>\n<p>3.9<\/p>\n<\/td>\n<td>\n<p>4.0<\/p>\n<\/td>\n<td>\n<p>4.0<\/p>\n<\/td>\n<td>\n<p>3.9e<\/p>\n<\/td>\n<td>\n<p>0.6e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>3.1<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>2.5<\/p>\n<\/td>\n<td>\n<p>1.9<\/p>\n<\/td>\n<td>\n<p>2.0<\/p>\n<\/td>\n<td>\n<p>2.1<\/p>\n<\/td>\n<td>\n<p>2.4e<\/p>\n<\/td>\n<td>\n<p>0.0e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>2.0<\/p>\n<\/td>\n<td>\n<p>2.9<\/p>\n<\/td>\n<td>\n<p>3.0<\/p>\n<\/td>\n<td>\n<p>2.7<\/p>\n<\/td>\n<td>\n<p>3.1<\/p>\n<\/td>\n<td>\n<p>2.4<\/p>\n<\/td>\n<td>\n<p>2.6e<\/p>\n<\/td>\n<td>\n<p>0.1e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>3.2<\/p>\n<\/td>\n<td>\n<p>4.6<\/p>\n<\/td>\n<td>\n<p>4.4<\/p>\n<\/td>\n<td>\n<p>4.6<\/p>\n<\/td>\n<td>\n<p>3.9<\/p>\n<\/td>\n<td>\n<p>3.9<\/p>\n<\/td>\n<td>\n<p>4.1e<\/p>\n<\/td>\n<td>\n<p>-0.3e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1.6<\/p>\n<\/td>\n<td>\n<p>1.9<\/p>\n<\/td>\n<td>\n<p>2.2<\/p>\n<\/td>\n<td>\n<p>2.2<\/p>\n<\/td>\n<td>\n<p>1.4<\/p>\n<\/td>\n<td>\n<p>1.5<\/p>\n<\/td>\n<td>\n<p>1.8e<\/p>\n<\/td>\n<td>\n<p>0.4e<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Notes for users<\/h2>\n<h3>Revisions and timetable<\/h3>\n<p>The euro area inflation flash estimate is issued at the end of each reference month.<\/p>\n<p>The complete set of harmonised indices of consumer prices (HICP) for the euro area, EU and Member States is released around the middle of the month following the reference month.<\/p>\n<p>The next release with full data for December 2025 is scheduled for 19 January 2026.<\/p>\n<h3>Methods and definitions<\/h3>\n<p>Annual inflation is the price change of consumer goods and services between the current month and the same month of the previous year. Monthly inflation is the price change between the current month and the previous month.<\/p>\n<h3>Geographical information<\/h3>\n<p>The euro area consists of Belgium, Germany, Estonia, Ireland, Greece, Spain, France, Croatia, Italy, Cyprus, Latvia, Lithuania, Luxembourg, Malta, the Netherlands, Austria, Portugal, Slovenia, Slovakia and Finland.<\/p>\n<p>The euro area data refer to the country composition at a specific point in time. Changes in the composition of the euro area are incorporated using a chain index formula.<\/p>\n<h2 align=\"left\">For more information<\/h2>\n<h2>Share the release<\/h2>\n<p>Share component will be rendered here.<\/p>\n<p>                 <!--[CDATA[(function() {var fragmentElement = document.querySelector('#fragment-18488078-dnmj'); var configuration = {};\/**  * Executed when the html document is loaded  * @param {*} print - true if the users clicks on the \"Print\" button within the Editor,   * false if the user clicks on \"Preview\" button  *\/ function load(print) {    \/** We open the printer options *\/   if (print) {     printDocument();   }    \/** We adapt the structure of the tables *\/   tableConfiguration();    \/** We configure the tables in order to make them sortable *\/   setDynamicTables();     \/** We configure the charts, converting the images to dynamic charts *\/   setDynamicCharts(); }  \/**  * Opens the Printer options in order to print the html document  *\/ function printDocument() {   window.print(); }  \/**  * Configures the tables according to the expected structure given by Regine   *   *   \n\n<table-->  *     Here the title  *     <\/p>\n<thead>\u2026<\/thead>\n<p>  *     <\/p>\n<tbody>\u2026<\/tbody>\n<p>  *   <\/p>\n<p>  *   Here the logo and notes  *   *\/ function tableConfiguration() {    \/**  Retrieves the list of table elements (images) *\/   const tables = document.getElementsByTagName(\u2018table\u2019);    \/** We go through the list of tables *\/   for (let table of tables) {      \/** We create a section to wrap the table *\/     let section = document.createElement(\u2018section\u2019);      \/** Add table-wrapper class to section element *\/     section.classList.add(\u2018table-wrapper\u2019);      \/** We create a caption element to place the title *\/     let caption = document.createElement(\u2018caption\u2019);      \/** We create thead element to place the headers *\/     let tHead = document.createElement(\u2018thead\u2019);      \/** We create a footer to place notes, datasource and logo *\/     let footer = document.createElement(\u2018footer\u2019);      \/** Retrieves the tBody *\/     let tBody = table.tBodies[0];      \/** Retrieves the table rows *\/     let rows = tBody.rows;      let datalabels = [];     let captionContent = [];      \/** Stores the indexes of the rows to be removed after processing the whole table *\/     let rowsToRemove = [];      \/** We go through the rows within the table and extract caption, headers and footnotes *\/     buildTable(rows, captionContent, datalabels, footer, rowsToRemove);     deleteRows(table, rowsToRemove);     addTableCaption(caption, captionContent);     addTableHeaders(table, tHead, datalabels);     wrapInSection(section, table, caption, tHead, tBody, footer);     linkHeaders(table);   } }  \/**  * Builds a table with the expected format: adding caption, datalabels and footer  * @param {*} rows \u2013 The table rows  * @param {*} captionContent \u2013 The content of the caption (title)  * @param {*} datalabels \u2013 The list of datalabels (table headers)  * @param {*} footer \u2013 The footer element   * @param {*} rowsToRemove \u2013 Array containing the index of the rows to be removed  *\/ function buildTable(rows, captionContent, datalabels, footer, rowsToRemove) {   let rowIndex = 0;   for (let row of rows) {     let cells = row.cells;      \/** We check the first cell in order to guess the cell type: th, td; and cell classes: title, datalabel\u2026  *\/     let firstCell = row.firstElementChild;      \/** If the th class name is title, we convert this th into a caption *\/     if (isCaption(firstCell)) {       addCaption(cells, captionContent, rowIndex, rowsToRemove)     }     \/** If the th class name is datalabel, we add the header to the tHead component *\/     else if (isDatalabel(firstCell)) {       addDatalabels(row, datalabels, rowIndex, rowsToRemove);     }     \/** If the th class name is title, we convert this th into a caption *\/     else if (isFooter(firstCell)) {       addFooter(row, footer, rowIndex, rowsToRemove);     } else {       row.setAttribute(\u2018initial-position\u2019, rowIndex);     }     rowIndex++;   } }  \/**  * Checks whether the given cell has the given tagName and className  * @param {*} cell \u2013 The cell to be checked  * @param {*} tagName \u2013 The tag name to be checked  * @param {*} className \u2013 The class name to be checked  * @returns true if the cell\u2019s tagName and className matches the given ones, false otherwise  *\/ function checkCell(cell, tagName, className) {   return cell.tagName.toLowerCase() === tagName &amp;&amp; cell.className.indexOf(className) &gt; -1; }  \/**  * Whether a cell is a caption (title)  * @param {*} cell \u2013 The cell to be checked  * @returns true if the cell is a caption, false otherwise  *\/ function isCaption(cell) {   return checkCell(cell, \u2018th\u2019, \u2018title\u2019); }  \/**  * Whether a cell is a datalabel  * @param {*} cell \u2013 The cell to be checked  * @returns true if the cell is a datalabel, false otherwise  *\/ function isDatalabel(cell) {   return checkCell(cell, \u2018th\u2019, \u2018datalabel\u2019); }  \/**  * Whether a cell is a vertical header  * @param {*} cell \u2013 The cell to be checked  * @returns true if the cell is a vertical header, false otherwise  *\/ function isVerticalHeader(cell) {   return checkCell(cell, \u2018th\u2019, \u2018vertical-header\u2019); }  \/**  * Whether a cell is a footer  * @param {*} cell \u2013 The cell to be checked  * @returns true if the cell is a footer, false otherwise  *\/ function isFooter(cell) {   return checkCell(cell, \u2018td\u2019, \u2018footer\u2019); }  \/**  * Adds the content of the caption cells: paragraphs   * @param {*} cells \u2013 The cells belonging to the row  * @param {*} captionContent \u2013 The content of the caption   * @param {*} rowIndex \u2013 The index of current row  * @param {*} rowsToRemove \u2013 Array containing the index of the rows to be removed  *\/ function addCaption(cells, captionContent, rowIndex, rowsToRemove) {   for (let cell of cells) {     \/** We must add all the Child Nodes of each th title Cell *\/     for (let childNode of cell.childNodes) {       captionContent.push(childNode);     }   }    \/** We remove the row from within the tables as now it\u2019s out in the caption *\/   rowsToRemove.push(rowIndex); }  \/**  * Adds the row as a datalabel  * @param {*} row \u2013 The current row  * @param {*} datalabels \u2013 List of datalabels  * @param {*} rowIndex \u2013 The index of current row  * @param {*} rowsToRemove \u2013 Array containing the index of the rows to be removed  *\/ function addDatalabels(row, datalabels, rowIndex, rowsToRemove) {   datalabels.push(row);   \/** We remove the row from within the tables as now it\u2019s out in the caption *\/   rowsToRemove.push(rowIndex); }  \/**  * Adds the notes and logo  * @param {*} row \u2013 The current row  * @param {*} footer \u2013 The footer of the table  * @param {*} rowIndex \u2013 The index of current row  * @param {*} rowsToRemove \u2013 Array containing the index of the rows to be removed  *\/ function addFooter(row, footer, rowIndex, rowsToRemove) {    \/** We create a div element for notes and logo *\/   const notes = document.createElement(\u2018div\u2019);   notes.classList.add(\u2018footer-element\u2019, \u2018notes\u2019);    \/** We add the content to the new note element *\/   notes.innerHTML = row.firstElementChild.innerHTML;    \/** We create a footer to place notes, datasource and logo *\/   footer.appendChild(notes);    \/** We remove the row from within the tables as now it\u2019s out in the footer *\/   rowsToRemove.push(rowIndex); }  \/**  * Deletes the rows which data has been moved to either caption, tHead or footer  * @param {*} table \u2013 The current table   * @param {*} rowsToRemove \u2013 Array containing the index of the rows to be removed  *\/ function deleteRows(table, rowsToRemove) {    \/** We go through the title rows and append them to the caption element *\/   for (let j = rowsToRemove.length \u2013 1; j &gt;= 0; j\u2013) {     table.deleteRow(rowsToRemove[j]);   } }  \/**  * Adds the caption to the table.  * @param {*} caption \u2013 The caption dom element  * @param {*} captionContent \u2013 The content of the caption  *\/ function addTableCaption(caption, captionContent) {    \/** We go through the Caption Content and append the nodes to the caption element *\/   for (let node of captionContent) {     caption.appendChild(node);   } }  \/**  * Adds the headers to the table  * @param {*} table \u2013 The table to make sortable  * @param {*} tHead \u2013 The thead dom element  * @param {*} datalabels \u2013 The datalabels to be added (headers)  *\/ function addTableHeaders(table, tHead, dataLabels) {    let sortable = false;    \/** We go through the header rows and append them to the tHead element *\/   for (let dataLabelRow of dataLabels) {     let cells = dataLabelRow.cells;      for (let th of cells) {       if (th.classList.contains(\u2018sortable\u2019)) {         sortable = true;         let button = createNewSortButton();         th.appendChild(button);       }           }      tHead.appendChild(dataLabelRow);   }    if (sortable) {     table.classList.add(\u2018sortable\u2019);   } }  function createNewSortButton() {   \/\/ creates sort button   const button = document.createElement(\u2018button\u2019);   button.classList.add(\u2018ecl-table__arrow\u2019);    \/\/ creates a generic svg element for the two arrows   const svgIconUp = document.createElementNS(\u2018http:\/\/www.w3.org\/2000\/svg\u2019, \u2018svg\u2019);   svgIconUp.setAttribute(\u2018xml:space\u2019, \u2018preserve\u2019);   svgIconUp.setAttribute(\u2018viewBox\u2019, \u20180 0 24 24\u2019);   svgIconUp.setAttribute(\u2018enable-background\u2019, \u2018new 0 0 24 24\u2019);   svgIconUp.setAttribute(\u2018focusable\u2019, \u2018false\u2019);   svgIconUp.setAttribute(\u2018aria-hidden\u2019, \u2018true\u2019);   svgIconUp.setAttribute(\u2018class\u2019, \u2018ecl-table__icon ecl-icon ecl-icon\u2013m\u2019);      \/\/ adds path element of the arrow to the arrow svg   const pathIconArrow = document.createElementNS(\u2018http:\/\/www.w3.org\/2000\/svg\u2019, \u2018path\u2019);   pathIconArrow.setAttribute(\u2018d\u2019, \u2018M7.4 13 11 9.4c.5-.5 1.4-.5 2 0l3.6 3.6c.9.9.2 2.4-1 2.4H8.4c-1.3 0-1.9-1.5-1-2.4\u2019);   svgIconUp.appendChild(pathIconArrow);    \/\/ clones the generic arrow svg including the child path also   const svgIconDown = svgIconUp.cloneNode(true);    \/\/ seups the arrow directions to up and down by extra css classes   svgIconUp.classList.add(\u2018ecl-table__icon-up\u2019);   svgIconDown.classList.add(\u2018ecl-table__icon-down\u2019);    \/\/ insert the two arrow svg elements into the button   button.appendChild(svgIconUp);   button.appendChild(svgIconDown);    return button; }  \/**  * Places all the elements in their places and wraps the table into a section.  * @param {*} section \u2013 The section (dom element) which will wrap table and footer  * @param {*} table \u2013 The table to be wrapped  * @param {*} caption \u2013 The caption (dom element) to be added to the table  * @param {*} tHead \u2013 The thead (dom element) to be added to the table  * @param {*} tBody \u2013 The tbody (dom element) to be added to the table  * @param {*} footer \u2013 The footer (dom element) to be added to the section  *\/ function wrapInSection(section, table, caption, tHead, tBody, footer) {    \/** We insert caption and thead before tbody *\/   table.insertBefore(caption, tBody);   table.insertBefore(tHead, tBody);    \/** We wrap the table into a section *\/   table.parentNode.insertBefore(section, table);   section.appendChild(table);   section.appendChild(footer); }  \/**  * Adds ids and header attributes to link every cell to all related headers so that machines can correctly read the figures.  * @param {*} table \u2013 The table to be wrapped  *\/ function linkHeaders(table) {   const headers = getHeaders(table.tHead);   const tBody = table.tBodies ? table.tBodies[0] : null;   addHeaderLinks(tBody, headers); }   function getHeaders(tHead) {   const headers = [];    if (tHead) {     let i = 0;     for (let row of tHead.rows) {       \/** We add a new row in the headers array *\/       headers.push([]);        \/** Stores the header ids and colSpan so we can guess to which cells (td) we must add the headers *\/       let j = 0;       for (const cell of row.cells) {         cell.setAttribute(\u2018id\u2019, \u2018h_\u2019 + i + \u2018_\u2019 + j);         headers[i].push({ id: cell.id, colSpan: cell.colSpan ? cell.colSpan : 1 });         j++;       }       i++;     }   }    return headers; }  function addHeaderLinks(tBody, headers) {   if (tBody) {     let i = 0;     for (let row of tBody.rows) {       let j = 0;       for (const cell of row.cells) {         \/** If the cell is a vertical header we add its id *\/         if (cell.className.indexOf(\u2018vertical-header\u2019) &gt; -1) {           cell.setAttribute(\u2018id\u2019, \u2018vh_\u2019 + i + \u2018_\u2019 + j);         }          const headerLinks = getHeaderLinks(headers, j, cell.colSpan, row.cells[0]);         cell.setAttribute(\u2018headers\u2019, headerLinks);         j++;       }       i++;     }   } }  \/**  * Retrieves the header (ths) ids in order to link them to a specific cell (td)  * @param {*} rows \u2013 The rows containing all headers  * @param {*} index \u2013 The index of the specific cell  * @param {*} colSpan \u2013 The colspan of the specific cell  * @param {*} firstCell \u2013 The first cell of the row. Used to reference possible vertical headers  * @returns A string containing the list of header ids split by spaces  *\/ function getHeaderLinks(rows, index, colSpan, firstCell) {   \/** It will contain the header ids *\/   let links = \u201d;    \/** We add the reference of the vertical header if there is *\/   if (index &gt; 0 &amp;&amp; firstCell.className.indexOf(\u2018vertical-header\u2019) &gt; -1) {     links = firstCell.id;   }    \/** We go through the list of header rows *\/   for (const headers of rows) {     \/** Accumulates the colspan of the checked headers *\/     let sumColSpan = 0;      \/** We go through the list of headers for the specific header row *\/     for (const header of headers) {        \/** We check that the index of the cell belongs to a specific column *\/       if (index &gt;= sumColSpan &amp;&amp; index  chartObj.resize()).observe(chartDiv);   } }  \/**  * Customizes the chart by applying custom events, axis formats, tooltips, and axis labels.  * @param option \u2013 The chart options object.  *\/ function customChartOptions(option) {   setClickableDatasourceLinks(option);   setAxisFormatter(option);   setTooltipFormatter(option); }  \/**  * Attaches event handlers to a chart: \u2018legendselectchanged\u2019.  *  * @param {Chart} chart \u2013 The chart object.  *\/ function addEventHandlers(chart) {    \/** Attach an event handler for the \u2018legendselectchanged\u2019 event *\/   chart.on(\u2018legendselectchanged\u2019, (event) =&gt; {      \/** Call the onChartLegendSelected function with the event and chart object *\/     onChartLegendSelected(event, chart);   }); }  \/**  * Handles the legend selected changed event of the chart.  * @param {any} event \u2013 The event object containing the selected legend items.  * @param {any} chart \u2013 The chart object.  *\/ function onChartLegendSelected(event, chart) {    \/** Get the selected legend items *\/   const selected = event.selected;    \/** Count the number of selected legend items *\/   const selectedCount = Object.values(selected).filter(Boolean).length;    \/** If all legend items are deselected, keep the selection on the last clicked item *\/   if (selectedCount === 0) {     selected[event.name] = true;   }    \/** Update the legend selection *\/   chart.setOption({     legend: {       selected: selected     }   }); }   \/**  * Attaches custom events to the provided option object.  *  * @param {object} option \u2013 The option object to attach custom events to.  *\/ function setClickableDatasourceLinks(option) {    \/** If the table has datasource link *\/   if (option.graphic &amp;&amp; option.graphic.length &gt;= 3) {      \/** Attach an onclick event handler to the third element of the graphic array (datasource links) *\/     option.graphic[2].onclick = function (event) {        \/** If the element has a link defined in its style *\/       if (this.style?.link) {          \/** Open the link in a new tab\/window *\/         window.open(this.style.link, \u2018_blank\u2019);       }     };   } }  \/** * Sets the default axis formatter for axis labels. * @param {object} option \u2013 The option object to update the axis formatter *  *\/ function setAxisFormatter(option) {    \/** The default unit used in axis labels *\/   const defaultUnit = \u2018%\u2019;    \/** If the yAxis are used as values *\/   if (option.yAxis.type === \u2018value\u2019) {      \/** If the yAxis unit is not defined, set % as default *\/     option.yAxis.axisLabel.unit = option.yAxis.axisLabel.unit ? option.yAxis.axisLabel.unit : defaultUnit;      \/** If the yAxis label padding is not defined, set 15 as default suffix *\/     option.yAxis.axisLabel.padding = option.yAxis?.axisLabel?.padding ? option.yAxis.axisLabel.padding : 15;      \/** Use the custom formatter *\/     option.yAxis.axisLabel.formatter = (value) =&gt; customAxisFormatter(option.lang, value, option.yAxis.axisLabel.unit, parseInt(option.yAxis.axisLabel.decimals)); \/\/ Use the custom formatter   }    \/** If the xAxis are used as values *\/   if (option.xAxis.type === \u2018value\u2019) {      \/** If the xAxis unit is not defined, set % as default *\/     option.xAxis.axisLabel.unit = option.xAxis.axisLabel.unit ? option.xAxis.axisLabel.unit : defaultUnit;      \/** Use the custom formatter *\/     option.xAxis.axisLabel.formatter = (value) =&gt; customAxisFormatter(option.lang, value, option.xAxis.axisLabel.unit, parseInt(option.xAxis.axisLabel.decimals));   }    \/** If xAxis type is category *\/   else if (option.xAxis.type === \u2018category\u2019) {     richStyle(option);   } }  \/** * Formats a numeric value with a specified unit and decimal precision. * * @param {number} value \u2013 The numeric value to be formatted. * @param {string} unit \u2013 The unit to be appended to the formatted value. * @param {number} decimals \u2013 The number of decimal places to round the value to. * @returns {string} The formatted string representation of the value with unit. *\/ function customAxisFormatter(lang, value, unit, decimals) {    \/**    * Check the language and format the value accordingly.   * For French (fr) and German (de), use commas instead of dots.   * For other languages (en), use the default format with dots.   *\/   const formattedValue = lang === \u2018fr\u2019 || lang === \u2018de\u2019     ? `${value.toFixed(decimals).replace(\u2018.\u2019, \u2018,\u2019)}${unit}`     : `${value.toFixed(decimals)}${unit}`;    return formattedValue; }  \/** * Applies custom rich text formatting to axis labels based on certain string patterns and HTML tags. * * Checks if the axis label contains certain values such as \u201cEU\u201d, \u201cEuro Area\u201d, and specific HTML tags. * It formats the labels by applying bold or italic styles as needed. * * @param axis \u2013 The axis object to which the formatting will be applied. * @returns The updated axis object with the formatted axis label. *\/ function richStyle(option) {    \/** Regular expression to match HTML tags like  and <em> *\/   const htmlTagRegex = \/(.*?)\/g;    \/** Mapping of HTML tags to corresponding rich text formatting styles *\/   const style = {     strong: \u201cbold\u201d,     em: \u201citalic\u201d   };    \/**    * Formatter function for axis labels.   * Converts specific label values into rich text format (e.g., bold).   *   * @param value \u2013 The value of the axis label to be formatted.   * @returns The formatted axis label.   *\/   option.xAxis.axisLabel.formatter = function (value) {      \/** Convert input string to lowercase for case-insensitive comparison *\/     const lowerCaseV = value ? value.toLowerCase() : \u201d;      \/** Check for \u201cEU\u201d, \u201cUE\u201d, \u201cEuro Area\u201d, \u201cEuroraum\u201d or \u201cZone Euro\u201d and format them as bold *\/     if (lowerCaseV === \u2018eu\u2019 || lowerCaseV === \u2018ue\u2019 || lowerCaseV === \u2018euro area\u2019 || lowerCaseV === \u2018euroraum\u2019 || lowerCaseV === \u2018zone euro\u2019) {       return `{bold|${value}}`;     }      \/** Strictly check if the string contains supported HTML tags before formatting *\/     if (htmlTagRegex.test(value)) {        \/** Replace HTML tags with corresponding rich text formatting *\/       return value.replace(htmlTagRegex, (match, tag, content) =&gt; {         return `{${style[tag]}|${content}}`;       });     }      \/** Return the value as is if no formatting is needed *\/     return value;   };    \/**    * Define the rich text styles for the axis labels.   * These styles will be applied to specific HTML tags detected in the formatter function.   *\/   option.xAxis.axisLabel.rich = {     bold: { fontWeight: \u2018bold\u2019 },     italic: { fontStyle: \u2018italic\u2019 }   }; }  \/** * Handles formatting the tooltip decimal convention in the graphic. * @remarks * This function formats the tooltip based on the language and decimal convention. *  * @param {object} option \u2013 The option object to add custom tooltip. *\/ function setTooltipFormatter(option) {    \/**   * Tooltip formatter for ECharts.   * @param {object[]} params \u2013 Parameters for the tooltip formatter.   * @param {string} params[].name \u2013 Name of the x-axis value.   * @param {string} params[].seriesName \u2013 Name of the series.   * @param {number} params[].value \u2013 Value of the data point.   * @param {string} params[].color \u2013 Color of the series.   * @param {string} ticket \u2013 Ticket for the callback.   * @param {Function} callback \u2013 Callback function.   * @returns {string} \u2013 Formatted tooltip content.   *\/    option.tooltip.formatter = function (params, ticket, callback) {      \/** Retrieve the x-axis value for the tooltip *\/     const xAxisValue = params[0].name;      \/** If xAxisValue is empty, return null to hide the tooltip *\/     if (!xAxisValue) {       return null;     }      \/** Create the tooltip content container with a white background and padding *\/     let tooltipContent = \u201d;      \/** Add the x-axis value to the tooltip content *\/     \/** @type {string} XAxis *\/     tooltipContent += \u201d + xAxisValue + \u201d;      \/** Retrieve the order from the tooltip option *\/     const sortOrder = option.tooltip.order;      \/** Sort the \u2018params\u2019 array based on the \u2018sortOrder\u2019 parameter. *\/     switch (sortOrder) {        \/** Sort by series name in ascending order. *\/       case \u2018seriesAsc\u2019:         params = params.sort((a, b) =&gt; a.seriesName.localeCompare(b.seriesName));         break;        \/** Sort by series name in descending order. *\/       case \u2018seriesDesc\u2019:         params = params.sort((a, b) =&gt; b.seriesName.localeCompare(a.seriesName));         break;        \/** Sort by numerical value in ascending order. *\/       case \u2018valueAsc\u2019:         params = params.sort((a, b) =&gt; parseFloat(a.value) \u2013 parseFloat(b.value));         break;        \/** Sort by numerical value in descending order.  *\/       case \u2018valueDesc\u2019:         params = params.sort((a, b) =&gt; parseFloat(b.value) \u2013 parseFloat(a.value));         break;        \/** Reverse the current order. *\/       case \u2018reverse\u2019:         params.reverse();         break;       default:         break;     }      \/** Iterate over each series in the tooltip parameters *\/     for (const param of params) {        \/** Retrieve the name and value of the current series *\/       let seriesName = param.seriesName;       let value = param.value;        \/** Replace every specific apostrphe by simple one. *\/       seriesName = seriesName.replaceAll(\u201c\u2019\u201d, \u201c\u2018\u201d);        \/** Convert the numeric value to its string representation. *\/       const strValue = String(value);        \/** Retrieve the axis used as value *\/       const axis = option.yAxis.type === \u2018value\u2019 ? option.yAxis : option.xAxis;        \/** Initialize the number of decimal places *\/       let decimals = option.tooltip.decimals;        \/** Check if decimals configuration is set to default and the value contains decimal places *\/       if (!decimals &amp;&amp; strValue.indexOf(\u2018.\u2019) &gt; -1) {          \/** Calculate the number of decimal places *\/         decimals = strValue.substring(strValue.indexOf(\u2018.\u2019), strValue.length \u2013 1).length;       } else {          \/** If there are no decimal places, format the value with 1 decimal place *\/         decimals = decimals || 1;          \/** Convert the value to a fixed-point notation string with a specified number of decimal places. *\/         value = Number(value).toFixed(decimals);       }              \/** Convert -0 value to 0 with the specified or calculated number of decimal places.*\/       if (Number(value) == -0) {         value = (Number(value) + 0).toFixed(decimals);       }        \/** Extract the unit from within the axis label *\/       const unit = axis.axisLabel.unit ? axis.axisLabel.unit : \u201d;        \/** Format the value using the appropriate number of decimal places *\/       if (isNaN(value)) {         value = \u2018N\/A\u2019;       } else {         value =  Number(value).toLocaleString(option.lang ? option.lang : \u2018en\u2019, { minimumFractionDigits: decimals }) + unit;       }              \/** Retrieve the color of the current series *\/       const color = param.color;        \/**         * Add the series name and value to the tooltip content         * Use a circle icon with the series color        *\/       tooltipContent += \u201d +         \u201d +         \u201d +         \u201d + seriesName + \u201d +         \u201d +         \u201d + value + \u201d +         \u201d;     }      \/** Close the tooltip content container *\/     tooltipContent += \u201d;      \/** Return the formatted tooltip content *\/     return tooltipContent;   } }  \/*   *   This content is licensed according to the W3C Software License at   *   https:\/\/www.w3.org\/Consortium\/Legal\/2015\/copyright-software-and-document   *   *   File:   sortable-table.js   *   *   Desc:   Adds sorting to a HTML data table that implements ARIA Authoring Practices   *\/  class SortableTable {   constructor(tableNode) {     this.tableNode = tableNode;      this.columnHeaders = tableNode.querySelectorAll(\u2018thead th.sortable\u2019);      this.sortColumns = [];      for (let i = 0; i &lt; this.columnHeaders.length; i++) {       const ch = this.columnHeaders[i];       const buttonNode = ch.querySelector(&#8216;button&#8217;);       if (buttonNode) {         this.sortColumns.push(i);         ch.setAttribute(&#8216;data-column-index&#8217;, i);         ch.addEventListener(&#8216;click&#8217;, this.handleClick.bind(this));       }     }      this.optionCheckbox = document.querySelector(       &#8216;input[type=&#8220;checkbox&#8220;][value=&#8220;show-unsorted-icon&#8220;]&#8217;     );      if (this.optionCheckbox) {       this.optionCheckbox.addEventListener(         &#8216;change&#8217;,         this.handleOptionChange.bind(this)       );       if (this.optionCheckbox.checked) {         this.tableNode.classList.add(&#8216;show-unsorted-icon&#8217;);       }     }   }    setColumnHeaderSort(columnIndex) {     if (typeof columnIndex === &#8216;string&#8217;) {       columnIndex = parseInt(columnIndex);     }      for (let i = 0; i  b.value ? -1 : 1;         }       } else if (isNumber) {           return a.value &#8211; b.value;       } else {         return a.value <b\/><\/em>  \t\t\t\t\t\t\t\t\t\t\t  \t\t\t\t\t\t\t\t\t\t\t\t                                                    <\/p>\n<p>Subscribe to receive the latest Eurostat Euro indicators releases<\/p>\n<p> {       if (document.querySelector(selector)) {           return resolve(document.querySelector(selector));       }        const observer = new MutationObserver(mutations =&gt; {           if (document.querySelector(selector)) {               resolve(document.querySelector(selector));               observer.disconnect();           }       });        observer.observe(document.body, {           childList: true,           subtree: true       });   }); }  waitForElm(\u2018div.chart\u2019).then((elm) =&gt; { \/\/ Has to be run after cool-ngx-editor.js script that is tweeking the charts   const elements = document.getElementsByClassName(\u201cchart\u201d);   for (let i = 0; i &lt; elements.length; i++) {     let div = document.createElement(&#8216;div&#8217;);     div.id = &#8222;share-chart-&#8220; + i;     div.style = &#8222;position: absolute; right: 0; z-index: 50;&#8220;;     elements[i].prepend(div);     let script = document.createElement(&#8216;script&#8217;);     script.type = &#8222;application\/json&#8220;;     let url = new URL(window.location.href);     url.searchParams.set(&#8216;item&#8217;, &#8216;chart&#8217;);     url.searchParams.set(&#8216;id&#8217;, i);          let code=&#8220;{&#8222;service&#8220;: &#8222;sbkm&#8220;, &#8222;version&#8220;: &#8222;2.0&#8220;, &#8222;popup&#8220;: false, &#8222;icon&#8220;: true,  &#8222;more&#8220; : [&#8222;facebook&#8220;, &#8222;x&#8220;, &#8222;linkedin&#8220;, &#8222;email&#8220;], &#8222;renderTo&#8220;: &#8222;&#8220; + div.id + &#8216;&#8220;, &#8222;to&#8220;: [&#8222;more&#8220;], &#8222;target&#8220;: true, &#8222;link&#8220;: &#8222;&#8216; + url.href + &#8216;&#8220;, &#8222;via&#8220;: &#8222;EU_Eurostat&#8220;, &#8222;title&#8220;: &#8222;&#8216; + getJournalArticleTitle() + &#8216;&#8220;}&#8217;;      try {       script.appendChild(document.createTextNode(code));     } catch (e) {       \/\/ Older browsers may not support appendChild(document.createTextNode(&#8230;)) on .       \/\/ Fallback to setting text directly on the script element.       console.warn(&#8216;Failed to append text node to script element, falling back to setting text&#8217;, e);       script.text = code;     }     elements[i].parentNode.insertBefore(script, elements[i].nextSibling);   } });  \/\/ Add share button to tables $(document).ready(function() { \/\/ Has to be run after cool-ngx-editor.js script that is tweeking the tables   const tables = document.getElementsByTagName(&#8222;table&#8220;);   for (let i = 0; i  position) {         await new Promise(r =&gt; setTimeout(r, 500)); \/\/ Wait a bit so that it doesn\u2019t scroll too far         allItems[position].scrollIntoView(true);     }   } });;}());]]&gt;<\/p>\n<div class=\"sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded\" id=\"like-post-wrapper-174531030-200897-695e3b6642aa9\" data-src=\"https:\/\/widgets.wp.com\/likes\/?ver=15.3.1#blog_id=174531030&amp;post_id=200897&amp;origin=bccci.net&amp;obj_id=174531030-200897-695e3b6642aa9\" data-name=\"like-post-frame-174531030-200897-695e3b6642aa9\" data-title=\"Like or Reblog\">\n<h3 class=\"sd-title\">Like this:<\/h3>\n<p><span class=\"button\"><span>Like<\/span><\/span> <span class=\"loading\">Loading&#8230;<\/span><\/p>\n<p><span class=\"sd-text-color\"\/><a class=\"sd-link-color\"\/><\/div>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/bccci.net\/blog\/euro-area-annual-inflation-down-to-2-0\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[] Print page Printing can have negative environmental impacts due to paper waste. We encourage you to explore eco-friendly alternatives. Bookmarking this page in your browser allows you to access it anytime. This publication can also be converted to PDF, if you have a PDF printer installed on your computer. PDF printers function as virtual&hellip;&nbsp;<a href=\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/\" rel=\"bookmark\">\u041f\u0440\u043e\u0447\u0435\u0442\u0435\u0442\u0435 \u043f\u043e\u0432\u0435\u0447\u0435 &raquo;<span class=\"screen-reader-text\">Euro area annual inflation down to 2.0%<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":200922,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"facebook_4156156451339083_570227806386203":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[404],"tags":[],"class_list":["post-200921","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bulgaria"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Euro area annual inflation down to 2.0%<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/\" \/>\n<meta property=\"og:locale\" content=\"bg_BG\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Euro area annual inflation down to 2.0%\" \/>\n<meta property=\"og:description\" content=\"[] Print page Printing can have negative environmental impacts due to paper waste. We encourage you to explore eco-friendly alternatives. Bookmarking this page in your browser allows you to access it anytime. This publication can also be converted to PDF, if you have a PDF printer installed on your computer. PDF printers function as virtual&hellip;&nbsp;\u041f\u0440\u043e\u0447\u0435\u0442\u0435\u0442\u0435 \u043f\u043e\u0432\u0435\u0447\u0435 &raquo;Euro area annual inflation down to 2.0%\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0411\u044a\u043b\u0433\u0430\u0440\u043e-\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0430 \u0422\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u043e-\u043f\u0440\u043e\u043c\u0438\u0448\u043b\u0435\u043d\u0430 \u043f\u0430\u043ba\u0442\u0430\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-07T10:54:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/ec.europa.eu\/eurostat\/documents\/2995521\/22814804\/2-07012026-ap-en-image-0001.png?w=1200&amp;ssl=1\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 \u043c\u0438\u043d\u0443\u0442\u0438\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/bccci.net\/bg\/#\/schema\/person\/9fa35c887650f9ce0705d80f0f1ec7f3\"},\"headline\":\"Euro area annual inflation down to 2.0%\",\"datePublished\":\"2026-01-07T10:54:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/\"},\"wordCount\":3945,\"publisher\":{\"@id\":\"https:\/\/bccci.net\/bg\/#organization\"},\"image\":{\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1\",\"articleSection\":[\"Bulgaria\"],\"inLanguage\":\"bg-BG\",\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/bccci.net\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/\",\"url\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/\",\"name\":\"Euro area annual inflation down to 2.0%\",\"isPartOf\":{\"@id\":\"https:\/\/bccci.net\/bg\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1\",\"datePublished\":\"2026-01-07T10:54:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#breadcrumb\"},\"inLanguage\":\"bg-BG\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"bg-BG\",\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1\",\"width\":1000,\"height\":668},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/bccci.net\/bg\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Euro area annual inflation down to 2.0%\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bccci.net\/bg\/#website\",\"url\":\"https:\/\/bccci.net\/bg\/\",\"name\":\"\u0411\u044a\u043b\u0433\u0430\u0440\u043e-\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0430 \u0422\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u043e-\u043f\u0440\u043e\u043c\u0438\u0448\u043b\u0435\u043d\u0430 \u043f\u0430\u043ba\u0442\u0430\",\"description\":\"\u0421\u0432\u044a\u0440\u0437\u0432\u0430 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043d\u0430 \u0411\u044a\u043b\u0433\u0430\u0440\u0438\u044f \u0438 \u041a\u0438\u0442\u0430\u0439\",\"publisher\":{\"@id\":\"https:\/\/bccci.net\/bg\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bccci.net\/bg\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"bg-BG\"},{\"@type\":[\"Organization\",\"Place\"],\"@id\":\"https:\/\/bccci.net\/bg\/#organization\",\"name\":\"Bulgarian-Chinese Chamber of Commerce (\u0411\u044a\u043b\u0433\u0430\u0440\u043e-\u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u043e-\u043f\u0440\u043e\u043c\u0438\u0448\u043b\u0435\u043d\u0430 \u043f\u0430\u043b\u0430\u0442\u0430)\",\"url\":\"https:\/\/bccci.net\/bg\/\",\"logo\":{\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#local-main-organization-logo\"},\"image\":{\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#local-main-organization-logo\"},\"telephone\":[],\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],\"opens\":\"09:00\",\"closes\":\"17:00\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/bccci.net\/bg\/#\/schema\/person\/9fa35c887650f9ce0705d80f0f1ec7f3\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"bg-BG\",\"@id\":\"https:\/\/bccci.net\/bg\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a42523465f9717ba8adb1ddc18cc3c37396375501cf91df6045092095f08a127?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a42523465f9717ba8adb1ddc18cc3c37396375501cf91df6045092095f08a127?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"url\":\"https:\/\/bccci.net\/bg\/blog\/author\/admin\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"bg-BG\",\"@id\":\"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#local-main-organization-logo\",\"url\":\"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2020\/12\/1.png?fit=161%2C161&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2020\/12\/1.png?fit=161%2C161&ssl=1\",\"width\":161,\"height\":161,\"caption\":\"Bulgarian-Chinese Chamber of Commerce (\u0411\u044a\u043b\u0433\u0430\u0440\u043e-\u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u043e-\u043f\u0440\u043e\u043c\u0438\u0448\u043b\u0435\u043d\u0430 \u043f\u0430\u043b\u0430\u0442\u0430)\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Euro area annual inflation down to 2.0%","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/","og_locale":"bg_BG","og_type":"article","og_title":"Euro area annual inflation down to 2.0%","og_description":"[] Print page Printing can have negative environmental impacts due to paper waste. We encourage you to explore eco-friendly alternatives. Bookmarking this page in your browser allows you to access it anytime. This publication can also be converted to PDF, if you have a PDF printer installed on your computer. PDF printers function as virtual&hellip;&nbsp;\u041f\u0440\u043e\u0447\u0435\u0442\u0435\u0442\u0435 \u043f\u043e\u0432\u0435\u0447\u0435 &raquo;Euro area annual inflation down to 2.0%","og_url":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/","og_site_name":"\u0411\u044a\u043b\u0433\u0430\u0440\u043e-\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0430 \u0422\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u043e-\u043f\u0440\u043e\u043c\u0438\u0448\u043b\u0435\u043d\u0430 \u043f\u0430\u043ba\u0442\u0430","article_published_time":"2026-01-07T10:54:30+00:00","og_image":[{"url":"https:\/\/i0.wp.com\/ec.europa.eu\/eurostat\/documents\/2995521\/22814804\/2-07012026-ap-en-image-0001.png?w=1200&amp;ssl=1","type":"","width":"","height":""}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"20 \u043c\u0438\u043d\u0443\u0442\u0438"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#article","isPartOf":{"@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/"},"author":{"name":"admin","@id":"https:\/\/bccci.net\/bg\/#\/schema\/person\/9fa35c887650f9ce0705d80f0f1ec7f3"},"headline":"Euro area annual inflation down to 2.0%","datePublished":"2026-01-07T10:54:30+00:00","mainEntityOfPage":{"@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/"},"wordCount":3945,"publisher":{"@id":"https:\/\/bccci.net\/bg\/#organization"},"image":{"@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1","articleSection":["Bulgaria"],"inLanguage":"bg-BG","copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/bccci.net\/#organization"}},{"@type":"WebPage","@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/","url":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/","name":"Euro area annual inflation down to 2.0%","isPartOf":{"@id":"https:\/\/bccci.net\/bg\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#primaryimage"},"image":{"@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1","datePublished":"2026-01-07T10:54:30+00:00","breadcrumb":{"@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#breadcrumb"},"inLanguage":"bg-BG","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/"]}]},{"@type":"ImageObject","inLanguage":"bg-BG","@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#primaryimage","url":"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1","contentUrl":"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1","width":1000,"height":668},{"@type":"BreadcrumbList","@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bccci.net\/bg\/"},{"@type":"ListItem","position":2,"name":"Euro area annual inflation down to 2.0%"}]},{"@type":"WebSite","@id":"https:\/\/bccci.net\/bg\/#website","url":"https:\/\/bccci.net\/bg\/","name":"\u0411\u044a\u043b\u0433\u0430\u0440\u043e-\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0430 \u0422\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u043e-\u043f\u0440\u043e\u043c\u0438\u0448\u043b\u0435\u043d\u0430 \u043f\u0430\u043ba\u0442\u0430","description":"\u0421\u0432\u044a\u0440\u0437\u0432\u0430 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043d\u0430 \u0411\u044a\u043b\u0433\u0430\u0440\u0438\u044f \u0438 \u041a\u0438\u0442\u0430\u0439","publisher":{"@id":"https:\/\/bccci.net\/bg\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bccci.net\/bg\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"bg-BG"},{"@type":["Organization","Place"],"@id":"https:\/\/bccci.net\/bg\/#organization","name":"Bulgarian-Chinese Chamber of Commerce (\u0411\u044a\u043b\u0433\u0430\u0440\u043e-\u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u043e-\u043f\u0440\u043e\u043c\u0438\u0448\u043b\u0435\u043d\u0430 \u043f\u0430\u043b\u0430\u0442\u0430)","url":"https:\/\/bccci.net\/bg\/","logo":{"@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#local-main-organization-logo"},"image":{"@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#local-main-organization-logo"},"telephone":[],"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"opens":"09:00","closes":"17:00"}]},{"@type":"Person","@id":"https:\/\/bccci.net\/bg\/#\/schema\/person\/9fa35c887650f9ce0705d80f0f1ec7f3","name":"admin","image":{"@type":"ImageObject","inLanguage":"bg-BG","@id":"https:\/\/bccci.net\/bg\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a42523465f9717ba8adb1ddc18cc3c37396375501cf91df6045092095f08a127?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a42523465f9717ba8adb1ddc18cc3c37396375501cf91df6045092095f08a127?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/bccci.net\/bg\/blog\/author\/admin\/"},{"@type":"ImageObject","inLanguage":"bg-BG","@id":"https:\/\/bccci.net\/bg\/blog\/euro-area-annual-inflation-down-to-2-0-2\/#local-main-organization-logo","url":"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2020\/12\/1.png?fit=161%2C161&ssl=1","contentUrl":"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2020\/12\/1.png?fit=161%2C161&ssl=1","width":161,"height":161,"caption":"Bulgarian-Chinese Chamber of Commerce (\u0411\u044a\u043b\u0433\u0430\u0440\u043e-\u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0430 \u0442\u044a\u0440\u0433\u043e\u0432\u0441\u043a\u043e-\u043f\u0440\u043e\u043c\u0438\u0448\u043b\u0435\u043d\u0430 \u043f\u0430\u043b\u0430\u0442\u0430)"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/bccci.net\/wp-content\/uploads\/2026\/01\/2-07012026-ap-en-image-0001.png?fit=1000%2C668&ssl=1","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/posts\/200921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/comments?post=200921"}],"version-history":[{"count":0,"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/posts\/200921\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/media\/200922"}],"wp:attachment":[{"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/media?parent=200921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/categories?post=200921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bccci.net\/bg\/wp-json\/wp\/v2\/tags?post=200921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}