1) { $newa=$outa[0]; for ($ij=1; $ijgetOffset() / 3600.0; } else { $offset = ($remote_dtz->getOffset($remote_dt) - $origin_dtz->getOffset($origin_dt)) / 3600.0; } array_push($nearoffset, $offset); array_push($neartnow, $remote_dt->format('Y/m/d/H:i')); $aseltz=explode("/",$nearname[$ik]); //array_push($neartnow, $remote_dt->format('H:i')); //$aseltz=explode("/",$nearname[$ik]); $seltz=str_replace("", "" . "",$seltz); } } } if (file_exists("csv.php")) { include "csv.php"; } else if (file_exists("../csv.php")) { include "../csv.php"; } function retval($inv) { if (strpos($inv, "E-") !== false) return "0"; return $inv; } function dlltf($gettzname, $getgmtoff, $getrightnow, $dllmode, $dllbitsmode, $tzais, $lastpar) { global $dllt, $dlltbits, $nearname, $nearoffset, $neartnow, $dllw, $dllwbits; $getweather=$lastpar; if ($dllmode >= 0 && $dllbitsmode >= 0) { //echo "\ngWeaTHER=" . $lastpar; $dllarr=explode("|", $dllt); $dllbitsarr=explode("|", $dlltbits); if (sizeof($dllarr) > $dllmode && sizeof($dllbitsarr) > $dllbitsmode) { return $dllarr[$dllmode] . "|" . $dllbitsarr[$dllbitsmode]; } else if (sizeof($dllarr) > $dllmode) { return $dllarr[$dllarr] . "|"; } else if (sizeof($dllbitsarr) > $dllbitsmode) { return "|" . $dllbitsarr[$dllbitsarr]; } else { return "|"; } } else if ($dllmode >= 0) { //echo "\ngWeaThER=" . $lastpar; $dllarr=explode("|", $dllt); if (sizeof($dllarr) > $dllmode) { return $dllarr[$dllmode]; } else { return ""; } } else if ($dllbitsmode >= 0) { //echo "\ngWeAThER=" . $lastpar; $dllbitsarr=explode("|", $dlltbits); if (sizeof($dllbitsarr) > $dllbitsmode) { return $dllbitsarr[$dllbitsmode]; } else { return ""; } } else { //echo "\ngWeAThER= =" . $lastpar; //echo "\n1: ... " . $zdllarr[0] . " ... " . $zdllarr[1] . " ... " . $zdllarr[2] . " ... " . $zdllarr[3] . " ... " . " getgmtoff,gettzname,getrightnow=" . $getgmtoff . ' ... ' . $gettzname . ' ... ' . $getrightnow; if (str_replace("?","",$getgmtoff) == "") { if (array_search($gettzname, $nearname) !== false) { $getgmtoff=$nearoffset[array_search($gettzname, $nearname)]; if (str_replace("?","",$getrightnow) == "") { $getrightnow=$neartnow[array_search($gettzname, $nearname)]; } } } if (str_replace("?","",$getrightnow) == "") { if (array_search($gettzname, $nearname) !== false) { $getrightnow=$neartnow[array_search($gettzname, $nearname)]; } } //echo "\n2: getgmtoff,gettzname,getrightnow=" . $getgmtoff . ' ... ' . $gettzname . ' ... ' . $getrightnow; if ($getgmtoff != "" && $gettzname != "") { //echo "\ngWeAThER= = =" . $lastpar . " ... " . $dllt; $arrdll=explode("|", $dllt); if ($dllt != "") $dllt.="|"; if ($dlltbits != "") { $dlltbits.=" else if (ir == " . $tzais . ") { "; } else { $dlltbits=" if (ir == " . $tzais . ") { "; } if ($getrightnow != "") { $huhw=explode("http", $getrightnow); if (sizeof($huhw) > 1) { $getnonw=$huhw[0]; if ($getweather == "") $getweather=str_replace($getnonw . "http", "http", $getrightnow); $getrightnow=$getnonw; } if (strpos($gettzname,"/") === false && strpos($getgmtoff, ":") !== false) { $spareg=$gettzname; $gettzname=$getrightnow; $getrightnow=$getgmtoff; $getgmtoff=$spareg; } $dlltm="TimeZone " . $gettzname . " (GMT " . str_replace("+-","-",("+" . $getgmtoff)) . ") (where it is " . $getrightnow . ") Information=T"; $dllt.=$dlltm; //"TimeZone " . $gettzname . " (GMT " . str_replace("+-","-",("+" . $getgmtoff)) . ") (where it is " . $getrightnow . ") Information=T"; //echo "\ngWeAThER= = =- =" . $lastpar . " ... " . $dllt . "\n getweather=" . $getweather; } else { $dlltm="TimeZone " . $gettzname . " (GMT " . str_replace("+-","-",("+" . $getgmtoff)) . ") Information=T"; $dllt.=$dlltm; //"TimeZone " . $gettzname . " (GMT " . str_replace("+-","-",("+" . $getgmtoff)) . ") Information=T"; //echo "\ngWeAThER= = = =" . $lastpar . " ... " . $dllt . "\n getweather=" . $getweather; } $dlltbitsm="window.open('HTTP://timezoneconverter.com/cgi-bin/zoneinfo?tz=" . urldecode($gettzname) . "','_blank');"; $dlltbits.=$dlltbitsm; //"window.open('HTTP://timezoneconverter.com/cgi-bin/zoneinfo?tz=" . urldecode($gettzname) . "','_blank');"; echo "\n" . ' if (' . $tzais . ' >= 0) { while (tzarr.length < ' . $tzais . ') { tzbrr.push(""); tzbrrbits.push(""); tzarr.push(""); tzarrbits.push(""); } } ' . "\n" . ' tzarr.push("' . $dlltm . '"); ' . "\n"; echo "\n" . ' tzarrbits.push("' . $dlltbitsm . '"); ' . "\n"; if (strpos($dllwbits, "'',") !== false) $dllwbits=""; if ($dllw != "") { $dllw.="|"; } if ($getweather != "") { $dllw.="Weather=W"; //if (isset($_GET['nojwin']) != -1 || isset($_GET['nojwinyes']) != -1 || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone')) { //$zdlltbitsm="location.href='" . $getweather . "';"; //} else { $zdlltbitsm="window.open('" . $getweather . "','_blank');"; //} if ($dllwbits != "") { $dllwbits.=" else if (ir == " . $tzais . ") { "; } else { $dllwbits=" if (ir == " . $tzais . ") { "; } $dllwbits.=$zdlltbitsm; echo "\n" . ' tzbrrbits.push("' . $zdlltbitsm . '"); tzbrr.push("Weather=W"); ' . "\n"; } else { echo "\n" . ' tzbrrbits.push(""); tzbrr.push(""); ' . "\n"; } $dlltbits.=" } "; if (strpos($dllwbits, "if (ir") !== false) $dllwbits.=" } "; // } } else { echo "\nGWeaTHER=" . $lastpar; $arrdll=explode("|", $dllt); $dllt.="|"; if ($dlltbits != "") { $dlltbits.=" else if (ir == " . $tzais . ") { ir=ir; } "; } else { $dlltbits=" if (ir == " . $tzais . ") { ir=ir } "; } } } return ""; } function whereinwparts($wpa, $sf) { global $wparts; $rq=-1; for ($irq=0; $irq= 0 && strcmp(substr($stz[$jkh],0,1),'Z') <= 0) { $tzsofar.="/" . $stz[$jkh]; $jkh++; } //if (isset($_GET['x'])) file_put_contents("xx.html", "

1:" . $tzsofar . "


" . $inwithtz . "


" . $GETtitle . "

"); $dtz=new DateTimeZone($tzsofar); //if (isset($_GET['x'])) file_put_contents("xx.html", "

2:" . $tzsofar . "


" . $inwithtz . "


" . $GETtitle . "

"); $cloc=$dtz->getLocation(); //if (isset($_GET['x'])) file_put_contents("xx.html", "

3:" . $tzsofar . "


" . $inwithtz . "


" . $GETtitle . "

"); $okcc=$cloc['country_code']; //if (isset($_GET['x'])) file_put_contents("x.html", "

" . $fcs . "


" . $inwithtz . "


" . $GETtitle . "

"); } catch (Exception $eqwd) { } } } $ootz = new DateTimeZone("UTC"); $jj=0; $dorigin_dt = new DateTime("now", $ootz); for ($best1=0; $best1getLocation(); if (strcmp($okcc,$cloc['country_code']) == 0) $yokcc=true; } catch (Exception $epou) { //if (isset($_GET['x']) && strpos($epou->getMessage(), "Unknown or bad timezone") === false) file_put_contents("xxxxxx.html", $epou->getMessage()); } } if ($yokcc || strpos(str_replace("+("," (",str_replace(","," ",$GETtitle)), (" " . $nearname[$best1] . "/")) !== false) { if ($inwithtz == "") { $inwithtz=",["; $sdp="~]"; $pdp=""; $lastb=""; } else if (strpos($inwithtz,"~") === false) { $inwithtz=",["; $sdp="~]"; $pdp=""; $lastb=""; } else { $lastb="["; } try { //if (isset($_GET['x'])) echo "

here

"; //if (isset($_GET['x'])) exit; if (!$yokcc) $dtz = new DateTimeZone($nearname[$best1]); $dremote_dt = new DateTime("now", $dtz); $ooffset = ($dtz->getOffset($dremote_dt) - $ootz->getOffset($dorigin_dt)) / 3600; // ,[-33.869999,151.210007,~Sydney, Australia|11https://www.wunderground.com/q/zmw:00000.16.94768|13:10|Australia/Sydney~],[33.869999,-28.78999300000001,~Other side of the world to ... Sydney, Australia| | | ~] if ($yokcc) { $inhereto.=$pdp . $nearlatitude[$best1] . "," . $nearlongitude[$best1] . ",~" . explode("/", $nearname[$best1])[-1 + sizeof(explode("/", $nearname[$best1]))] . $fcs . "|" . $ooffset . "|" . $dremote_dt->format('Y-m-d_H:i:s') . "|" . $nearname[$best1] . $sdp; } else { $xbitsare=explode((" " . $nearname[$best1] . "/"), str_replace("+("," (",str_replace(","," ",$GETtitle))); $inhereto.=$pdp . $nearlatitude[$best1] . "," . $nearlongitude[$best1] . ",~" . explode("/", $nearname[$best1])[-1 + sizeof(explode("/", $nearname[$best1]))] . $fcs . "|" . $ooffset . "|" . explode(" ", $xbitsare[1])[0] . "|" . $nearname[$best1] . $sdp; } if ($sdp == "~]") { $pdp=",["; } else { $pdp="["; } } catch (Exception $excc) { } } } } //if (isset($_GET['x'])) file_put_contents("xxx.html", "

" . $inhereto . "


" . $inwithtz . "


" . $GETtitle . "

"); $inwithtz=str_replace($inherefrom, $inhereto . $lastb, $inwithtz); if ($inhereto != ",['") { echo "\n paramdata=paramdata.replace(',[','" . $inhereto . $lastb . "'); \n"; if (strlen($fcs) > 1 && $tzsofar != "") { $flagfor=@file_get_contents("HTTP://emojiterra.com/flag-for-" . str_replace(" ","-",strtolower(substr($fcs,1)))); if (strpos($flagfor, ">HTML decHTML dec", $fbitsare[1])[1])[0]); $GETtitle=str_replace($tzsofar, " " . $ehd . " " . $tzsofar, $GETtitle); } } } //if (isset($_GET['x'])) file_put_contents("xxxx.html", "

" . $inhereto . "


" . $inwithtz . "


" . $GETtitle . "

"); if (strpos($inwithtz, "]") === false) { $inwithtz=urldecode($inwithtz); } $outwithouttz=$inwithtz; $wparts=explode("]", $inwithtz); if (strpos($inwithtz, "|") !== false) { if ($dllt == "") { $withinbar=explode("|", $inwithtz); $gweather=""; for ($iiz=0; $iiz

" . $inhereto . "


" . $outwithouttz . "


" . $GETtitle . "

"); return $outwithouttz; } ?> Map - RJM Programming - //www.rjmprogramming.com.au (Copyright © 2013 rjmprogramming.com.au all rights reserved.) \n"; echo " \n"; if (!isset($_GET['value']) && !isset($_POST['value'])) { echo " \n"; } else { echo " \n"; } echo "

" . $GETtitle . " Map

\n"; echo '
' . " \n"; echo 'Another Map?' . '  Email snapshot of Google Chart ...' . " \n"; echo '<' . 'script' . ' type="text/javascript">' . "\n " . " function later() { \n"; if (!isset($_GET['value']) && !isset($_POST['value'])) { echo ' datalineprefix = " "; ' . "\n"; echo ' datalinesuffix = ""; ' . "\n"; echo ' var prethisline = "", extra = ""; ' . "\n"; echo ' var thisline = 1; ' . "\n"; echo ' var ii = 0; ' . "\n"; if ($dbval == "") { // && $options_suffix != "") { echo ' var c_m = " ", thisdef = "0"; ' . "\n"; } else { echo ' var c_m = "", thisdef = "0"; ' . "\n"; } echo ' var totalleft = 100.0; ' . "\n"; echo ' var title = ourprompt("Enter Map Title (suffix by &lines=y for overlay clickable link lines and/or suffix by &onclick=y for all types of onclick functionality such as &brgplace=[1] for Bearing Distance table and perhaps &brgmode=trip for that table in trip order). ' . $promptsuffix . '", "' . $GETtitle . '"); ' . "\n"; echo ' if (title != null) { ' . "\n"; echo ' if (title.indexOf(",") == 0) { if (title.indexOf("]}}") != -1) { document.getElementById("custom_map").value=title.replace("};","").split("]}}")[0] + "]}} "; title=title.replace("};","").split("]}}")[1]; } else if (title.indexOf("}") != -1) { document.getElementById("custom_map").value=(title + " ").replace("};","").replace("}" + (title + " ").replace("};","").split("}")[eval(-1 + (title + " ").replace("};","").split("}").length)],"}"); title=title.replace("};","").replace(document.getElementById("custom_map").value,""); } else { document.getElementById("custom_map").value=title; } if (c_m.length == 0) { document.getElementById("myoptsbutton").click(); } c_m=document.getElementById("custom_map").value; } ' . "\n"; echo ' if (title.indexOf("&onclick=") != -1) { prethisline=" (note, here, suffix of |TimeZoneName|GMTOffset|TimeNow is recognized in the onclick select event prompt window later ... for example Sydney|Australia/Sydney|+11|12:32 uses this functionality) "; } ' . "\n"; echo ' var label = "' . $GETlabel . '"; ' . "\n"; echo ' if (label == null) label = ""; ' . "\n"; echo ' var xlabel = "' . "'" . '" + label.replace("' . "'" . '","") + "' . "'" . '"; ' . "\n"; //echo ' var value = ourprompt("Enter Map " + xlabel + " Criteria (separated by ,) ... decimal latitude and longitude ", "' . $GETvalue . '"); ' . "\n"; echo ' var value = "' . $GETvalue . '"; ' . "\n"; echo ' if (value.indexOf(",") != (0 - 1)) { ' . "\n"; echo ' for (ii=0; ii < value.length; ii++) { if (value.substring(ii,(ii+1)) == ",") { if (value.substring((ii+1),(ii+2)) == "' . "'" . '") { thisdef = thisdef + ",' . "'0'" . '"; } else { thisdef = thisdef + ",0"; } } } ' . "\n"; echo ' } ' . "\n"; echo ' var dlsa, dlp2="", datac = ""; ' . "\n"; echo ' dataprefix2 = ""; ' . "\n"; echo ' var sq = "' . "'" . '"; ' . "\n"; echo ' datalineprefix = "' . "''" . '";' . "\n"; echo ' if (label.length != 0) { datalineprefix2 = ourprompt("Enter ' . " " . $GETtitle . ' Name' . " " . ' " + prethisline + thisline, ""); if (datalineprefix2 != null) { calcofftimenow(document.getElementById("seltz"),datalineprefix2); dlp2=datalineprefix2; } } ' . "\n"; echo ' while (datalineprefix.length != 0 && (value.indexOf("ercent") == (0 - 1) || value.indexOf(" ercent ") != (0 - 1) || (value.indexOf("ercent") != (0 - 1) && totalleft > 0))) { ' . "\n"; echo ' datalineprefix = "' . "''" . '";' . "\n"; echo ' if (datalinesuffix.length != 0 && label.length != 0) { datalineprefix = ourprompt("Enter ' . " " . $GETtitle . ' Name' . " " . ' " + prethisline + thisline + " (for no more hit Cancel button)", ""); if (datalineprefix != null) { calcofftimenow(document.getElementById("seltz"),datalineprefix); datalineprefix2=""; dlp2=datalineprefix; } } ' . "\n"; echo ' if (datalineprefix == null) { ' . "\n"; echo ' datalineprefix = ""; ' . "\n"; echo ' totalleft = 0; ' . "\n"; echo ' } else if (datalineprefix.length != 0) { ' . "\n"; echo ' extra = ""; ' . "\n"; echo ' if (value.indexOf("ercent") != (0 - 1) && value.indexOf(" ercent ") == (0 - 1)) extra = " (for " + totalleft + " enter nothing or hit Cancel button)"; ' . "\n"; echo " if (tzsuffix == '') { datalinesuffix = ourprompt('Enter decimal Latitude,Longitude ' + thisline + extra + ' (for no more hit Cancel button and append with ' + '\\n\\n' + ',\"A tooltip and clicking link for Google Map of ' + dlp2 + '\" ' + '\\n\\n' + ' or maybe perhaps ' + '\\n\\n' + ',\"A tooltip and clicking link for Google Map based on latitude and longitude of ' + dlp2 + '\"' + '\\n\\n' + ' optionally (as (just) two examples of what is possible with HTML included (activates with onclick bit not onmouseover))', thisdef); " . "\n"; echo " } else if (tzsuffix != '') { datalinesuffix = ourprompt('Just click OK to accept the ' + tzsuffix.split('|')[1] + ' Time Zone place geographicals we found, else enter decimal Latitude,Longitude ' + thisline + extra + ' (for no more hit Cancel button and append with ' + '\\n\\n' + ',\"A tooltip and clicking link for Google Map of ' + dlp2 + '\" ' + '\\n\\n' + ' or maybe perhaps ' + '\\n\\n' + ',\"A tooltip and clicking link for Google Map based on latitude and longitude of ' + dlp2 + '\"' + '\\n\\n' + ' optionally (as (just) two examples of what is possible with HTML included (activates with onclick bit not onmouseover))', tzsuffix); tzsuffix=''; } " . "\n"; echo ' if (datalinesuffix != null) { datalinesuffix=giveandtake(datalinesuffix).replace(/#/g, "%23"); if (datalinesuffix.indexOf("{latitude}") != -1) { dlsa=datalinesuffix.split(","); if (dlsa[0].indexOf(".") == -1) { dlsa[0]=dlsa[0]+".0"; } if (dlsa[0].indexOf("-") == -1) { datalinesuffix=datalinesuffix.replace("{latitude}",encodeURIComponent("" + dlsa[0])); } else { datalinesuffix=datalinesuffix.replace("{latitude}",encodeURIComponent(dlsa[0])); } } if (datalinesuffix.indexOf("{longitude}") != -1) { dlsa=datalinesuffix.split(","); if (dlsa.length > 1) { if (dlsa[0].indexOf(".") == -1) { dlsa[0]=dlsa[0]+".0"; } if (dlsa[1].indexOf(".") == -1) { dlsa[1]=dlsa[1]+".0"; } if (dlsa[1].indexOf("-") == -1) { datalinesuffix=datalinesuffix.replace("{longitude}",encodeURIComponent("+" + dlsa[1])); } else { datalinesuffix=datalinesuffix.replace("{longitude}","+" + encodeURIComponent(dlsa[1])); } } } datalinesuffix=("@!@" + datalinesuffix).replace(/loc:+/g, "loc:").replace(/,0,/g, ",0.00000001,").replace(/@!@0,/g, "0.00000001,").replace(/@!@/g, ""); } ' . "\n"; echo ' if (datalinesuffix == null && value.indexOf("ercent") != (0 - 1) && value.indexOf(" ercent ") == (0 - 1)) datalinesuffix = totalleft; ' . "\n"; echo ' if (datalinesuffix == null) break; ' . "\n"; echo ' if (datalinesuffix == null) datalinesuffix = "0,0"; ' . "\n"; echo ' if (datalinesuffix.length == 0) { ' . "\n"; echo ' datalinesuffix = eval(totalleft); ' . "\n"; echo ' totalleft = 0; ' . "\n"; echo ' } else if (eval(totalleft) == eval(datalinesuffix) && value.indexOf("ercent") != (0 - 1) && value.indexOf(" ercent ") == (0 - 1)) { ' . "\n"; echo ' totalleft = 0; ' . "\n"; echo ' } else if (eval(datalinesuffix) > eval(totalleft) && value.indexOf("ercent") != (0 - 1) && value.indexOf(" ercent ") == (0 - 1)) { ' . "\n"; echo ' datalinesuffix = eval(totalleft); ' . "\n"; echo ' totalleft = 0; ' . "\n"; echo ' } else if (eval(datalinesuffix) > eval(totalleft) && value.indexOf("ercent") == (0 - 1) && value.indexOf(" ercent ") == (0 - 1)) { ' . "\n"; echo ' value = value + " ercent "; ' . "\n"; echo ' } else { ' . "\n"; echo ' totalleft = eval(totalleft) - eval(datalinesuffix); ' . "\n"; echo ' } ' . "\n"; echo ' if (datalineprefix2 != "") datalineprefix = datalineprefix2; ' . "\n"; echo ' if (datalinesuffix.indexOf("' . "'" . '") == -1) datac = datac + ", [" + datalinesuffix + ",~" + datalineprefix + "~] "; ' . "\n"; echo ' if (datalinesuffix.indexOf("' . "'" . '") != -1) datac = datac + ", [" + datalinesuffix + ",' . "'" . '" + datalineprefix + "~] "; ' . "\n"; echo ' dataprefix2 = ""; ' . "\n"; echo ' thisline++; ' . "\n"; echo ' } ' . "\n"; echo ' } ' . "\n"; if ($dbval == "" && $options_suffix != "") { echo " document.getElementById('custom_map').value=\"" . $options_suffix . "\"; " . "\n"; echo " document.getElementById('myoptform').innerHTML+=''; " . "\n"; echo " if (title.indexOf('&onclick=') != -1) { document.getElementById('myoptform').innerHTML+='' }; " . "\n"; echo " if (title.indexOf('&lines=') != -1) { document.getElementById('myoptform').innerHTML+='' }; " . "\n"; echo " if (title.indexOf('&options=') != -1) { document.getElementById('myoptform').innerHTML+='' }; " . "\n"; echo " document.getElementById('myoptform').innerHTML+=''; " . "\n"; echo " document.getElementById('myoptform').innerHTML+=''; " . "\n"; echo " document.getElementById('myoptform').innerHTML+=''; " . "\n"; echo " document.getElementById('myoptsbutton').click(); " . "\n"; } else { echo ' if (("./map.php?title=" + title + "&custom_map=" + encodeURIComponent(jnocomm(c_m)) + "&label=" + label + "&value=" + value.replace(" ercent ", "") + "&data=" + datac).length > 900 || c_m.trim() != "") { ' . "\n"; echo " document.getElementById('custom_map').value=jnocomm(c_m); " . "\n"; echo " if (title.indexOf('&onclick=') != -1) { document.getElementById('myoptform').innerHTML+='' }; " . "\n"; echo " if (title.indexOf('&lines=') != -1) { document.getElementById('myoptform').innerHTML+='' }; " . "\n"; echo " if (title.indexOf('&options=') != -1) { document.getElementById('myoptform').innerHTML+='' }; " . "\n"; echo " document.getElementById('myoptform').innerHTML+=''; " . "\n"; echo " document.getElementById('myoptform').innerHTML+=''; " . "\n"; echo " document.getElementById('myoptform').innerHTML+=''; " . "\n"; echo " document.getElementById('myoptform').innerHTML+=''; " . "\n"; echo " document.getElementById('myoptsbutton').click(); " . "\n"; echo ' } else if (c_m.trim() != "") { ' . "\n"; echo ' if (allowed) window.location = "./map.php?title=" + title + "&label=" + label + "&value=" + value.replace(" ercent ", "") + nojwinextra + "&custom_map=" + encodeURIComponent(jnocomm(c_m)) + "&data=" + datac; ' . "\n"; echo ' } else { ' . "\n"; echo ' if (allowed) window.location = "./map.php?title=" + title + "&label=" + label + "&value=" + value.replace(" ercent ", "") + nojwinextra + "&data=" + datac; ' . "\n"; echo ' } ' . "\n"; } echo "} \n"; } echo "} \n" . '' . "\n"; ?> Menu