quire "ebpf_utils"
     2337         ebpf_utils.draw_processes_graph(host_info)
     2338     elseif page == "geomap" then
     2339 
     2340         print([[
     2341         <div class="row">
     2342           <div class='col-md-12 col-lg-12 col-xs-12 mb-4'>
     2343             <div id='geomap-alert' style="display: none" role="alert" class='alert alert-danger alert-dismissible'>
     2344               <span id='error-message'></span>
     2345               <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
     2346             </div>
     2347             <div class="d-flex justify-content-center align-items-center" style="height: 720px" id="map-canvas">
     2348                <div class="spinner-border text-primary" role="status">
     2349                   <span class="sr-only">Loading...</span>
     2350                </div>
     2351             </div>
     2352           </div>
     2353         </div>
     2354       <script type='text/javascript'>
     2355       const zoomIP = "ifid=]] .. ifId .. [[&]] .. hostinfo2url(host_info) .. [[";
     2356 
     2357       const display_localized_error = (error_code) => {
     2358           $('#geomap-alert #error-message').html(`<b>]])
     2359         print(i18n("geo_map.geolocation_warning"))
     2360         print [[</b>: ]]
     2361         print(i18n("geo_map.using_default_location"))
     2362         print [[`);
     2363           $('#geomap-alert').removeClass('alert-danger').addClass('alert-warning').show();
     2364       }
     2365 
     2366       const display_localized_no_geolocation_msg = () => {
     2367           $('#geomap-alert p').html(`{* i18n("geo_map.unavailable_geolocation") .. ' ' .. i18n("geo_map.using_default_location") *}`);
     2368           $('#geomap-alert').addClass('alert-info').removeClass('alert-danger').show();
     2369       }
     2370 
     2371       const red_marker = L.icon({
     2372       iconUrl: `${http_prefix}/leaflet/images/marker-icon-red.png`,
     2373       shadowUrl: '${http_prefix}/leaflet/images/marker-shadow.png',
     2374       iconSize: [25, 41],
     2375       popupAnchor: [1, -34],
     2376       tooltipAnchor: [16, -28]
     2377   });
     2378 
     2379   const info_key_names = {
     2380       "score": i18n_ext.score,
     2381       "asname": i18n_ext.as,
     2382       "html": i18n_ext.nation,
     2383       "active_alerted_flows": i18n_ext.alerted_flows,
     2384       "num_blacklisted_flows": i18n_ext.blacklisted_flows,
     2385       "bytes.sent": i18n_ext.traffic_sent,
     2386       "bytes.rcvd": i18n_ext.traffic_rcvd,
     2387       "total_flows": i18n_ext.flows,
     2388   };
     2389 
     2390   const formatters = {
     2391       "bytes.sent": NtopUtils.bytesToSize,
     2392       "bytes.rcvd": NtopUtils.bytesToSize,
     2393   }
     2394 
     2395   const default_coords = [41.9, 12.4833333];
     2396   const zoom_level = 4;
     2397   let addRefToHost = true;
     2398   let endpoint = http_prefix + "/lua/rest/v2/get/geo_map/hosts.lua?";
     2399   let baseEndpoint = "";
     2400 
     2401   const create_marker = (h) => {
     2402       h = JSON.parse(JSON.stringify(h));
     2403       const settings = { title: h.name };
     2404       if (h.isRoot) settings.icon = red_marker;
     2405 
     2406       const ip = h.ip
     2407       const lat = h.lat;
     2408       const lng = h.lng;
     2409       const name = h.name;
     2410       let name_ip = ip;
     2411       let extra_info = '';
     2412 
     2413       h.ip = null;
     2414       h.lat = null;
     2415       h.lng = null;
     2416       h.name = null;
     2417       h.isRoot = null;
     2418 
     2419       // Formatting the extra info to print into the Geo Map
     2420       for (const key in h) {
     2421           if(formatters[key])
     2422               h[key] = formatters[key](h[key])
     2423 
     2424           if(h[key