Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 33482 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://lilyslim.com/robots.txt
302 Found
https://lilyslim.com/
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="en">
<head>
<title>LilySlim - tracks your weight over time</title>
<meta name="description" content="Use LilySlim to track your minimum and maximum weight over time.">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta name="viewport" content="width=device-width" />
<style>
body{border:0px;padding:0px 1.2em 4em 1.2em;margin:0px;color:#555;font:1em/1.5em Roboto,'DejaVu Sans','Droid Sans',Arial,sans-serif !important;min-width:320px;background:#fff}
a{color:#1c7a1c;text-decoration:none}
a:hover{color:#4969a6;text-decoration:underline}
*:focus{outline:none}
.opts{margin:auto;text-align:center;line-height:48px;width:100%;max-width:816px;border-bottom:1px solid #999}
.opts .opt{display:inline-block;padding:0px 2em;max-width:200px}
.opts .opt:hover{background:#eed;cursor:pointer}
.android{margin:auto;text-align:center;vertical-align:middle;width:100%;max-width:816px}
.android img{width:64px;height:64px;vertical-align:middle}
#menuWrap{position:absolute;top:49px;left:1.2em;right:1.2em;background:#fff;box-shadow:0px 4px 8px -4px #000}
#history, #aboutWrap, #ffPB{margin:auto;width:100%;max-width:816px}
#history p{padding:0px 1em 0px 1em}
#history li{padding-right:1em}
#aboutWrap,#ffPB{padding:1em;box-sizing:border-box}
.hBlk,.sBlk{display:inline-block;width:50%;padding:0px 1em;box-sizing:border-box}
.sBlk i{display:inline-block;width:72px;font-size:0.8em !important}
.hHead{font-size:0.8em;padding:1em 0px 0px 0px;border-bottom:1px solid #ccc}
.hOpt{float:right;color:#aaa}
.hMin, .hMax{display:inline-block;width:50%;font-size:1.2em;line-height:48px !important;white-space:nowrap;overflow:hidden;vertical-align:middle;box-sizing:border-box}
.hBlk:hover{color:#fff;background:#1c7a1c;cursor:pointer}
.hBlk:hover .hOpt, .hBlk:hover .grn, .hBlk:hover .blu{color:#fff}
.hide{display:none}
#addWrap, #edWrap, #impWrap{position:fixed;top:0px;left:0px;width:100%;height:100%;background:rgba(0,0,0,0.8)}
.ovBody{margin:auto;margin-top:49px;padding-bottom:1.5em;width:90%;max-width:480px;background:#fff;box-shadow:0px 0px 16px 0px #000}
.ovHead{margin:0px 1em 0px 1em;padding:0px 1em 0px 1em;line-height:48px;border-bottom:1px solid #999}
.ovTxtWrap{margin:0px 1em 0px 1em;padding:1em 1em 0px 1em;width:100%;box-sizing:border-box}
.ovValWrap{padding:1em 1em 0px 1em;width:100%;box-sizing:border-box}
#addVal, #edMin, #edMax{padding:0.5em 1em 0.5em 1em;width:100%;line-height:48px;font:1.5em/1.5em Roboto,'DejaVu Sans','Droid Sans',Arial,sans-serif !important;color:#555;background:#fff;border:1px solid #999;box-sizing:border-box}
#edMin, #edMax{width:49%}
#impBox{margin:1em 1em 0em 1em;padding:1em;text-align:center;border:1px dashed #999}
#impLabel{display:inline-block;line-height:64px;padding:0px 2em;border:1px solid #999}
#impLabel:hover, .hilight{color:#fff;border:1px solid #999;background:#555;cursor:pointer}
#aboutFooter{font-size:1em}
#aboutFooter span{color:#1c7a1c;padding:0px 0.5em}
#aboutFooter span:hover{color:#4969a6;text-decoration:underline;cursor:pointer}
.mButWrap{margin:auto;width:100%;max-width:480px;text-align:center;padding:1.5em 1em 1.5em 1em;box-sizing:border-box}
.butLeft,.butRight,.butLeftSm,.butRightSm,.butCenter,.butFull{padding:0.5em 0em 0.5em 0em;width:49%;line-height:48px;font:1.2em/1.5em Roboto,'DejaVu Sans','Droid Sans',Arial,sans-serif;color:#555;background:#fff;border:1px solid #999;border-radius:8px;box-sizing:border-box}
.butFull{width:100%}
.butRight,.butCenter,.butRightSm,#edMax{margin-left:2%}
.butLeftSm,.butCenter,.butRightSm{width:32%}
.butMain{font-weight:bold}
.butLeft:hover, .butRight:hover, .butLeftSm:hover, .butCenter:hover, .butRightSm:hover, .butFull:hover{color:#fff;border:1px solid #1c7a1c;background:#1c7a1c}
#svgWrap,#svgSmpl{width:100%;max-width:816px;margin:auto;vertical-align:top}
#svgTime{padding-left:1em;font-size:0.8em;line-height:48px}
.svgT{display:inline-block;min-width:48px;text-align:center;padding:0px 0.5em;box-sizing:border-box}
.svgT:hover{color:#fff;background:#555;cursor:pointer}
.svgTSct{background:#eed}
.sBlk{white-space:nowrap;overflow:hidden}
#sMax,#sMaxC,#sAvg,#sMin,#sMinC,#sMx,#sAv,#sMn,#sMxC,#sMnC{font-size:1.1em}
#sMaxC,#sMinC,#sMxC,#sMnC{display:none}
.blu{color:#4969a6}
.grn{color:#1c7a1c}
.dnt{text-align:center;padding:0.5em}
@media all and (max-width:512px){
body{padding:0px 0px 4em 0px}
#menuWrap{left:0px;right:0px;}
#sMax,#sMin,#sMx,#sMn{display:none}
#sMaxC,#sMinC,#sMxC,#sMnC{display:initial}
}
@media all and (max-width:420px){
.hOpt{display:none}
}
@media all and (max-width:370px){
.opts .opt{padding:0px 1em}
}
@media all and (max-width:360px){
.n360{display:none}
}
</style>
</head>
<body>
<div class="opts"><div class="opt" id="optHome"><b>LilySlim</b></div><div class="opt" id="optAdd">My Weight</div><div class="opt" id="optMenu"><i>More</i></div></div>
<div id="menuWrap" class="opts hide"><div class="opt" id="menuExport">Backup</div><div class="opt" id="menuImport">Restore</div><div class="opt" id="menuClear">Clear all</div><div class="opt" id="menuClose">Close</div></div>
<div id="svgWrap" class="hide"><div id="svgTime" class="hide"></div><svg version="1.1" width="100%" height="100%" viewBox="0 0 816 320" xmlns="http://www.w3.org/2000/svg"><style>.axis{font:1.2em Roboto,'DejaVu Sans','Droid Sans',Arial,sans-serif !important;}</style><defs></defs><rect width="816" height="320" fill="transparent"></rect><path d="M82,32 L774,32 M82,96 L774,96 M82,160 L774,160 M82,224 L774,224 M82,288 L774,288" fill="none" stroke="#e0e5e0" stroke-width="1px"></path><text id="aMax" class="axis" text-anchor="end" x="78px" y="32px" fill="#4969a6">Max</text><text id="aMid" class="axis" text-anchor="end" x="78px" y="160px" fill="#555">Half</text><text id="aMin" class="axis" text-anchor="end" x="78px" y="288px" fill="#1c7a1c">Min</text><path id="pMax" fill="none" stroke="#4969a6" stroke-width="2px" stroke-linejoin="round"></path><path id="pMin" fill="none" stroke="#1c7a1c" stroke-width="2px" stroke-linejoin="round"></path><text id="noData" class="axis hide" text-anchor="middle" x="408px" y="160px" fill="#555">At least two days of data is required for the graph.</text><rect id="mt" width="684px" height="256px" x="85px" y="32px" fill="#555" style="opacity:0"></rect></svg><div id="svgStats"><div class="sBlk"><div class="hHead"><span id="sRec"></span> records.</div><i class="blu">Maximum:</i> <span id="sMax" class="blu"></span><span id="sMaxC" class="blu"></span><br /><i>Average:</i> <span id="sAvg"></span><br /><i class="grn">Minimum:</i> <span id="sMin" class="grn"></span><span id="sMinC" class="grn"></span></div><div class="sBlk"><div class="hHead"><span id="sTs"></span></div><i class="blu">Maximum:</i> <span id="sMx" class="blu"></span><span id="sMxC" class="blu"></span><br /><i>Average:</i> <span id="sAv"></span><br /><i class="grn">Minimum:</i> <span id="sMn" class="grn"></span><span id="sMnC" class="grn"></span></div></div></div>
<div id="history"><noscript> <i>JavaScript is required. Enabled JavaScript and <a href="?">try again</a>.</i></noscript></div>
<div id="addWrap" class="hide"><div class="ovBody"><div class="ovHead">Add a value for today</div><div class="ovValWrap"><input type="text" id="addVal" inputmode="decimal" placeholder="Numbers only" /></div><div class="ovValWrap"><button class="butLeft" id="butAddClose">Cancel</button><button class="butRight butMain" id="butAdd">Save</button></div></div></div>
<div id="edWrap" class="hide"><div class="ovBody"><div class="ovHead"><span id="edTStamp"></span></div><div class="ovValWrap"><input type="text" id="edMin" inputmode="decimal" placeholder="Minimum value" /><input type="text" inputmode="decimal" id="edMax" placeholder="Maximum value" /></div><div class="ovValWrap"><button class="butLeftSm" id="butEdClose">Cancel</button><button class="butCenter" id="butEdRm">Remove</button><button class="butRightSm butMain" id="butEd">Update</button></div></div></div>
<div id="impWrap" class="hide"><div class="ovBody"><div class="ovHead">Restore</div><div class="ovTxtWrap">Imported data will replace <b>all</b> of the current data.</div><div id="impBox">Drag backup file here.<p><div id="impLabel">Or browse for it.</div></p></div><div class="ovTxtWrap hide" id="impCheck"><i>Checking backup file...</i></div><div class="ovValWrap"><button class="butFull" id="butImpClose">Cancel</button></div><form name="uploadForm" class="hide" enctype="multipart/form-data"><input type="file" id="impInput" name="impInput" accept="json" /></form></div></div>
<div id="about" class="hide">
<p>
<b>About:</b> Regularly enter your weight with the <i>My Weight</i> button to track your weight over time. Every day you can enter as many values as you like and the daily minimum and maximum value will be displayed as a chart like the sample below.
</p>
<div id="svgSmpl"><img src="sample-chart.svg" title="A sample chart" /></div>
<p>
<b>Privacy policy and data security:</b> Data is recorded on <i>your</i> device only. The information does not leave your device. This means:
</p><ul>
<li>No login is required.</li>
<li>Your data is as secure as your own device.</li>
<li>Each device is treated as a unique data store, your data is not automatcially backed up or copied to your other devices.</li>
<li>The <i>More > Backup</i> feature can be used to backup your data to a file (recommended).</li>
<li>The <i>More > Restore</i> feature can be used to transfer your data to a new device, or to restore it. You will need to have a <i>Backup</i> data file to use the <i>Restore</i> feature.</li>
<li>You can use the <i>More > Clear all</i> option to remove all your data at any time.</li>
</ul>
<p>
<b>Sharing data:</b> The only way to share or transfer your data with another device (for example, you got a new phone) is with the <i>Backup</i> and <i>Restore</i> features.
</p><p>
<b>Help: Data is not saving?</b> If you use <i>Incognito</i>, <i>InPrivate</i> or <i>Private Browsing</i> your data is removed when you close the browser.<br />
<b>Fix:</b> Do not use these browser modes when using LilySlim, or get the Android app for your phone.
</p><p>
<b>Donate and support:</b> LilySlim relies on donation to keep the site running and free of advertising. A PayPal account is not required for a donation, they simply handle the transaction.
</p>
<div class="dnt"><form action="https://www.paypal.com/donate" method="post" target="_top"><input type="hidden" name="hosted_button_id" value="6ZQBZBF8JCSLU" /><input type="image" src="https://www.paypalobjects.com/en_AU/i/btn/btn_donate_LG.gif" border="0" name="submit" title="Donate to LilySlim through PayPal" alt="Donate to LilySlim through PayPal" /><img alt="" border="0" src="https://www.paypal.com/en_AU/i/scr/pixel.gif" width="1" height="1" /></form></div>
</div>
<div class="android"><a href="https://play.google.com/store/apps/details?id=com.lilyslim" title="Get LilySlim on your Android device">LilySlim for Android</a> <a href="https://play.google.com/store/apps/details?id=com.lilyslim"><img src="/android-128.png" title="Get LilySlim on your Android device" alt="Android icon" /></a></div>
<div id="aboutCloseWrap" class="mButWrap hide"><button class="butFull" id="aboutClose">Back</button></div>
<div id="aboutFooter" class="mButWrap hide"><span>About</span> <span>Privacy Policy</span> <span>Donate</span></div>
<div id="ffPB" class="hide">
<b>LilySlim</b> requires the web browser feature <i>indexedDB</i> to function correctly. That feature appears to be missing or is not working as expected.
<p>
Best guess why:
</p>
<ul>
<li>You are running in <i>Private Browsing</i> mode or a similar browser option. This is <a href="https://bugzil.la/781982" target="_blank">a known limitation with Firefox</a>.</li>
<li>You have disabled support for <i>indexedDB</i> through a 3rd party extension or software application.</li>
<li>Or, you have manually changed the browser configuration or setting for <i>indexedDB</i>.</li>
</ul>
<p>
Either way, <b>LilySlim</b> requires this feature to function successfully. Please enable this option and try again.
</p>
</div>
<script>function t(t){t&&(t.stopPropagation(),t.preventDefault())}function e(){location=location.pathname}var n={dbVersion:1,dbName:"two",dbStore:"store",request:null,two:null,alertMsg:function(t){alert(t)},openCheck:function(){n.request.onerror=function(t){n.request.error.name&&n.request.error.message?n.request.error.message.indexOf("A mutation operation was attempted on a database that did not allow mutations")>-1?document.getElementById("ffPB").classList.remove("hide"):n.alertMsg("An issue was detected. The reported problem was:\n\n"+n.request.error.name+": "+n.request.error.message):n.alertMsg("An unknown issues was detected with an indexedDB request.")},n.request.onsuccess=function(t){n.two=n.request.result,n.getHistory()},n.request.onupgradeneeded=function(t){t.currentTarget.result.createObjectStore(n.dbStore,{keyPath:"id",autoIncrement:!0}).createIndex("tStamp","tStamp",{unique:!0})}},add:function(t){var e,i,d,l={};new Date;t=r.val(t),l.tStamp=a.get(),l.min=t,l.max=t,(d=n.getStore("readwrite"))&&((i=d.index("tStamp").get(l.tStamp)).onsuccess=function(a){(e=a.target.result)&&(l.min=t<e.min?t:e.min,l.max=t>e.max?t:e.max,l.id=e.id),d.put(l).onerror=function(t){n.alertMsg("There was an error saving the data. The message: "+this.error)},n.getHistory()},i.onerror=function(t){n.alertMsg("There was an error getting the indexedDB store. The message: "+this.error)})},update:function(t){n.getStore("readwrite").put(t).onsuccess=function(t){n.getHistory()}},export:function(){var t,e=n.getStore("readonly");(t=e.getAll()).onsuccess=function(e){var n=document.createElement("a");n.setAttribute("download","LilySlim-"+a.get()+".json"),n.textContent="Backup to be saved",n.setAttribute("href","data:application/octet-stream,"+JSON.stringify(t.result)),n.click()}},import:function(t){n.getStore("readwrite").put(t).onsuccess=function(t){o.processResult()}},unsupported:function(){n.alertMsg("You have an older, unsupported browser (please update if you do) or Android WebView needs to be updated from the Google Play Store, or an iOS version less than 10.3."),l.noData()},getHistory:function(){var t,e=n.getStore("readonly");void 0!==e.getAll?(t=e.getAll()).onsuccess=function(e){t.result.length?(l.render(t.result),s.setData(t.result)):l.noData()}:n.unsupported()},getItem:function(t){var e,a=n.getStore("readonly");(e=a.get(t)).onsuccess=function(t){i.edOpen(e.result)}},rmItem:function(t){n.getStore("readwrite").delete(t).onsuccess=function(t){n.getHistory()}},getStore:function(t){if(n.two)return n.two.transaction(n.dbStore,t).objectStore(n.dbStore);n.alertMsg("Error: Unable to located the indexedDB instance.")},clearStore:function(){var t;(t=n.getStore("readwrite").clear()).onsuccess=function(t){c.erase("l")},t.onerror=function(t){n.alertMsg("Error: indexedDB store clear request failed. The message: "+t.target.errorCode+", "+this.error)}},deleteAll:function(){var t=window.indexedDB.deleteDatabase(n.dbName);t.onerror=function(t){n.alertMsg("There was an error trying to removed the stored data. Try again and if the problem continues, please get in touch.")},t.onsuccess=function(t){c.erase("l"),e()}},init:function(){n.request=window.indexedDB.open(n.dbName,n.dbVersion),n.openCheck()}},a={get:function(){var t,e,n=new Date;return t=(t=n.getDate())<10?"0"+t:t.toString(),e=(e=n.getMonth()+1)<10?"0"+e:e.toString(),n.getFullYear()+"-"+e+"-"+t},format:function(t){var e,n,a=new Date(t).toDateString();return"Invalid Date"==a?t:(a=a.split(" "),n=(e=parseInt(a[2]))>3&&e<21||e>23&&e<31?"th":["st","nd","rd"][e%10-1],a[0]+", "+e+n+" "+a[1]+" "+a[3])}},i={eWrap:null,aWrap:null,iWrap:null,mWrap:null,addBody:null,edBody:null,edHead:null,edId:0,edTStamp:null,edMin:null,edMax:null,navHome:null,navAdd:null,navMenu:null,addVal:null,butAddClose:null,butEdClose:null,butImpClose:null,butEdRm:null,butAdd:null,butEd:null,mClose:null,mExport:null,mImport:null,mClear:null,addToggle:function(t){i.aWrap.classList.contains("hide")?(i.aWrap.classList.remove("hide"),i.addVal.focus()):i.aWrap.classList.add("hide"),i.mForceClose(t)},edToggle:function(t){i.eWrap.classList.contains("hide")?(i.eWrap.classList.remove("hide"),i.edMin.focus()):i.eWrap.classList.add("hide"),i.mForceClose(t)},impToggle:function(e){t(e),i.iWrap.classList.contains("hide")?(o.bx.classList.remove("hide"),o.chk.classList.add("hide"),i.iWrap.classList.remove("hide"),document.body.addEventListener("keyup",i.impKey,!1)):(i.iWrap.classList.add("hide"),document.body.removeEventListener("keyup",i.impKey,!1)),i.mForceClose(e)},mToggle:function(t){i.mWrap.classList.contains("hide")?i.mWrap.classList.remove("hide"):i.mWrap.classList.add("hide")},mForceClose:function(t){i.mWrap.classList.contains("hide")||i.mWrap.classList.add("hide")},edRequest:function(e){t(e),i.edId=parseInt(this.getAttribute("data")),n.getItem(i.edId)},edOpen:function(t){t&&t.tStamp&&(i.edTStamp.textContent=a.format(t.tStamp),i.edTStamp.setAttribute("data",t.tStamp),i.edMin.value=r.frmt(t.min),i.edMax.value=r.frmt(t.max),i.edToggle())},edUpdate:function(e){t(e);var a=i.edMin.value.trim(),d=i.edMax.value.trim(),l={tStamp:i.edTStamp.getAttribute("data"),min:null,max:null,id:i.edId};if(a&&d)a=r.val(a),(d=r.val(d))<a?(l.min=d,l.max=a):(l.min=a,l.max=d);else{if(!a&&!d)return void i.edRemove(e);a?d=a:a=d,l.min=r.val(a),l.max=r.val(d)}i.edToggle(e),n.update(l)},edRemove:function(t){(i.edTStamp.getAttribute("data")==a.get()||confirm('Are you sure you want to remove the values for "'+a.format(i.edTStamp.getAttribute("data"))+'"?\nThis can not be undone.'))&&n.rmItem(i.edId),i.edToggle()},addKey:function(t){"Enter"==t.code||"NumpadEnter"==t.code?i.addSave(t):"Escape"==t.code?i.addToggle(t):"addVal"==this.id&&this.value&&(this.value=r.lmt(this.value))},edKey:function(t){"Enter"==t.code||"NumpadEnter"==t.code?i.edUpdate(t):"Escape"==t.code?i.edToggle(t):"edMin"!=this.id&&"edMax"!=this.id||!this.value||(this.value=r.lmt(this.value))},impKey:function(t){"Escape"==t.code&&i.impToggle(t)},addSave:function(e){t(e);var a=i.addVal.value.trim();a&&n.add(a),i.addToggle(e)},export:function(e){if(t(e),d.clsWrap.classList.contains("hide")){if(!l.hasHistory)return void alert("No data to backup.")}else n.init();n.export(),i.mToggle(e)},clearAll:function(a){t(a),confirm("Are you sure you want remove all data?\n\nThe only way to recover your data will be from a backup data file.")&&(n.deleteAll(),setTimeout(e,500))},init:function(){i.aWrap=document.getElementById("addWrap"),i.eWrap=document.getElementById("edWrap"),i.iWrap=document.getElementById("impWrap"),i.mWrap=document.getElementById("menuWrap"),i.addBody=i.aWrap.querySelector(".ovBody"),i.edBody=i.eWrap.querySelector(".ovBody"),i.edTStamp=document.getElementById("edTStamp"),i.edMin=document.getElementById("edMin"),i.edMax=document.getElementById("edMax"),i.navHome=document.getElementById("optHome"),i.navAdd=document.getElementById("optAdd"),i.navMenu=document.getElementById("optMenu"),i.addVal=document.getElementById("addVal"),i.butAddClose=document.getElementById("butAddClose"),i.butEdClose=document.getElementById("butEdClose"),i.butImpClose=document.getElementById("butImpClose"),i.butEdRm=document.getElementById("butEdRm"),i.butAdd=document.getElementById("butAdd"),i.butEd=document.getElementById("butEd"),i.mClose=document.getElementById("menuClose"),i.mExport=document.getElementById("menuExport"),i.mImport=document.getElementById("menuImport"),i.mClear=document.getElementById("menuClear"),i.aWrap.addEventListener("click",i.addToggle,!1),i.eWrap.addEventListener("click",i.edToggle,!1),i.iWrap.addEventListener("click",i.impToggle,!1),i.addBody.addEventListener("click",(function(e){t(e)}),!1),i.edBody.addEventListener("click",(function(e){t(e)}),!1),i.navHome.addEventListener("click",e,!1),i.navAdd.addEventListener("click",i.addToggle,!1),i.navMenu.addEventListener("click",i.mToggle,!1),i.addVal.addEventListener("keyup",i.addKey,!1),i.edMin.addEventListener("keyup",i.edKey,!1),i.edMax.addEventListener("keyup",i.edKey,!1),i.butAddClose.addEventListener("click",i.addToggle,!1),i.butEdClose.addEventListener("click",i.edToggle,!1),i.butImpClose.addEventListener("click",i.impToggle,!1),i.butEdRm.addEventListener("click",i.edRemove,!1),i.butAdd.addEventListener("click",i.addSave,!1),i.butEd.addEventListener("click",i.edUpdate,!1),i.mClose.addEventListener("click",i.mToggle,!1),i.mExport.addEventListener("click",i.export,!1),i.mImport.addEventListener("click",i.impToggle,!1),i.mClear.addEventListener("click",i.clearAll,!1)}},d={clsWrap:null,ftr:null,ftrHide:function(){d.ftr.classList.add("hide")},ftrShow:function(){d.ftr.classList.remove("hide")},clsHide:function(){d.clsWrap.classList.add("hide")},clsShow:function(){d.clsWrap.classList.remove("hide")},show:function(e){t(e),l.noData(),d.clsShow(),window.scrollTo(0,0)},init:function(){d.clsWrap=document.getElementById("aboutCloseWrap"),d.ftr=document.getElementById("aboutFooter"),d.ftr.addEventListener("click",d.show,!1),document.getElementById("aboutClose").addEventListener("click",e,!1)}},l={hasHistory:!1,wrap:null,limit:14,clear:function(){l.wrap.textContent=""},noData:function(){var t=document.getElementById("about");l.clear(),s.wrap.classList.add("hide"),l.wrap.innerHTML=t.innerHTML,l.hasHistory=!1,d.ftrHide()},item:function(t){var e,n,d,o,s,c;e=document.createElement("div"),n=document.createElement("div"),d=document.createElement("i"),o=document.createElement("div"),s=document.createElement("div"),c=document.createElement("div"),e.classList.add("hBlk"),n.classList.add("hHead"),o.classList.add("hOpt"),s.classList.add("hMin","grn"),c.classList.add("hMax","blu"),e.setAttribute("data",t.id),d.textContent=a.format(t.tStamp),o.textContent="Edit",s.textContent=r.frmt(t.min),c.textContent=r.frmt(t.max),e.addEventListener("click",i.edRequest,!1),n.appendChild(d),n.appendChild(o),e.appendChild(n),e.appendChild(s),e.appendChild(c),l.wrap.appendChild(e)},adj:function(e){t(e),"more"==this.getAttribute("data")?l.limit=l.limit+14:l.limit>14&&(l.limit=l.limit-14),n.getHistory()},opts:function(t){var e=document.createElement("div"),n=document.createElement("button");if(e.classList.add("mButWrap"),n.textContent="Show more",n.setAttribute("data","more"),n.addEventListener("click",l.adj,!1),l.limit>14){var a=document.createElement("button");t?a.classList.add("butFull"):a.classList.add("butLeft"),a.textContent="Show less",a.setAttribute("data","less"),a.addEventListener("click",l.adj,!1),n.classList.add("butRight"),e.appendChild(a)}else n.classList.add("butFull");t||e.appendChild(n),l.wrap.appendChild(e)},render:function(t){var e,n=t.length;l.clear(),e=n>l.limit?n-l.limit:0;do{l.item(t[--n])}while(n>e);l.hasHistory=!0,t.length>14&&l.opts(0==n),d.ftrShow(),d.clsHide()},init:function(){l.wrap=document.getElementById("history")}},o={data:null,idx:0,bx:null,chk:null,inp:null,invalid:function(t){alert(t||"The selected file is not supported. Please only select a previous backup file."),i.impToggle()},check:function(t){var e,a,i,d,l=function(t){var e=null;if(t)try{e=JSON.parse(t)}catch(t){e=null}return e}(t);if(l&&l[0]){for(i=l.length,d=0;d<i;d++){if(!(l[d].tStamp&&l[d].min&&l[d].max&&l[d].id))return void o.invalid("The selected file is missing a required value. Please only select a previous backup file.");e=r.val(l[d].min),(a=r.val(l[d].max))<e&&(l[d].min=a,l[d].max=e)}l.sort((function(t,e){return t.tStamp.localeCompare(e.tStamp)})),o.idx=0,o.data=l,n.clearStore(),o.process()}else o.invalid()},process:function(){o.data[o.idx]?n.import({tStamp:o.data[o.idx].tStamp,min:o.data[o.idx].min,max:o.data[o.idx].max}):(i.impToggle(),s.lmt=0,n.getHistory())},processResult:function(){o.idx++,o.process()},handle:function(e){t(e);var n=o.inp.files[0],a=new FileReader;"application/json"==n.type?(a.onloadstart=function(t){o.bx.classList.add("hide"),o.chk.classList.remove("hide")},a.onload=function(t){o.check(t.target.result)},a.onloadend=function(t){o.inp.value=""},a.readAsText(n)):o.invalid()},browse:function(e){t(e),i.iWrap.removeEventListener("click",i.impToggle,!1),o.inp.click(),i.iWrap.addEventListener("click",i.impToggle,!1)},dragEnter:function(e){t(e),o.bx.classList.add("hilight"),o.inp.classList.add("hilight")},dragOver:function(e){t(e)},dragLeave:function(t){o.bx.classList.remove("hilight"),o.inp.classList.remove("hilight")},drop:function(e){t(e),e.dataTransfer&&e.dataTransfer.files&&(o.inp.files=e.dataTransfer.files,o.handle(e),o.bx.classList.remove("hilight"))},init:function(){o.bx=document.getElementById("impBox"),o.chk=document.getElementById("impCheck"),o.inp=document.getElementById("impInput"),o.bx.addEventListener("click",o.browse,!1),o.bx.addEventListener("dragenter",o.dragEnter,!1),o.bx.addEventListener("dragover",o.dragOver,!1),o.bx.addEventListener("dragleave",o.dragLeave,!1),o.bx.addEventListener("drop",o.drop,!1),o.inp.addEventListener("change",o.handle,!1)}},r={lDiv:"",lDec:"",cDec:!1,rgxDiv:null,cmpct:function(t){return new Intl.NumberFormat(void 0,{notation:"compact",maximumFractionDigits:2}).format(t)},frmt:function(t){return t&&"-"!=t?new Intl.NumberFormat(void 0,{maximumIntergerDigits:9,maximumFractionDigits:9}).format(t):t},lmt:function(t){return(t=t?t.trim():"")?2==(t=(t=r.chk(t)).split(r.lDec)).length?(t[0]?r.frmt(t[0]):"")+"."+t[1]:r.frmt(t[0]):""},chk:function(t){var e,n,a,i=0,d=t.length;for(a="-"==t[0]?"-":"",n=0;n<d;n++)e=t[n],/^\d+$/.test(e)?a+=e:e==r.lDec&&0==i&&(a+=e,i++);return a},val:function(t){return"number"==typeof t?t:((t=t.trim())&&(t.indexOf(r.lDiv)&&(t=t.replace(r.rgxDiv,"")),r.cDec&&(t=t.replace(r.lDec,"."))),Number(t)||0)},init:function(){var t=r.frmt(1234567.89);"2"!=t[1]?r.lDiv=t[1]:"3"!=t[2]?r.lDiv=t[2]:"4"!=t[3]&&(r.lDiv=t[3]),r.lDec=t[t.length-3],r.cDec="."!=r.lDec,r.rgxDiv=new RegExp(r.lDiv,"g")}},s={wrap:null,bdy:null,lgn:0,lmtOpt:null,lmt:0,min:null,max:null,aMin:null,aMid:null,aMax:null,nData:null,vUnit:0,hUnit:0,hUnitHalf:0,sStats:null,sRec:null,sMax:null,sMin:null,sAvg:null,sMaxC:null,sMinC:null,sTs:null,sAv:null,sMx:null,sMn:null,sMxC:null,sMnC:null,smlData:function(){s.wrap.classList.remove("hide"),s.nData.classList.remove("hide"),s.sStats.classList.add("hide"),s.aMax.textContent="",s.aMid.textContent="",s.aMin.textContent="",s.max.removeAttribute("d"),s.min.removeAttribute("d")},setLimit:function(t){if(!this.classList.contains("svgTSct")){var e,n,a=s.lmtOpt.querySelectorAll("div.svgT");for(n=a.length,e=0;e<n;e++)a[e].classList.remove("svgTSct");this.classList.add("svgTSct"),this.getAttribute("data")?(s.lmt=r.val(this.getAttribute("data")),c.set("l",s.lmt,30)):(s.lmt=s.lgn,c.erase("l")),s.setSVG()}},setOpt:function(){if(s.lgn<17)return s.lmtOpt.classList.add("hide"),s.lmt=s.lgn,void c.set("l",s.lmt,30);var t,e,n=0,a=[14,28,91,182,365];for(s.lmtOpt.textContent="",t=document.createElement("i"),s.lgn>364&&t.classList.add("n360"),t.textContent="Show: ",s.lmtOpt.appendChild(t),e=0;e<6;e++)s.lgn>a[e]+2&&((t=document.createElement("div")).setAttribute("data",a[e]),s.lmt==a[e]?(t.classList.add("svgT","svgTSct"),n=1):t.classList.add("svgT"),t.textContent=a[e],t.addEventListener("click",s.setLimit,!1),s.lmtOpt.appendChild(t));t=document.createElement("div"),n?t.classList.add("svgT"):t.classList.add("svgT","svgTSct"),t.textContent="All",t.addEventListener("click",s.setLimit,!1),s.lmtOpt.appendChild(t),s.lmtOpt.classList.remove("hide")},setData:function(t){s.data=t,s.lgn=t.length,s.setOpt(),s.setSVG()},setStats:function(t){s.sRec.textContent=r.frmt(t.rec),s.sMaxC.textContent=r.cmpct(t.max),s.sMinC.textContent=r.cmpct(t.min),s.sMax.textContent=r.frmt(t.max),s.sMin.textContent=r.frmt(t.min),s.sAvg.textContent=r.cmpct(t.avg/(2*t.rec)),s.sStats.classList.remove("hide")},setG:function(t){var e,n,a,i;return e=document.createElementNS("http://www.w3.org/2000/svg","g"),n=document.createElementNS("http://www.w3.org/2000/svg","line"),a=document.createElementNS("http://www.w3.org/2000/svg","circle"),i=document.createElementNS("http://www.w3.org/2000/svg","circle"),e.setAttribute("id","g"+t.idx),e.setAttribute("data-t",t.tStamp),e.setAttribute("data-mx",t.mx),e.setAttribute("data-mn",t.mn),e.setAttribute("style","opacity:0"),n.setAttribute("x1",t.xMx+"px"),n.setAttribute("y1",t.y1+"px"),n.setAttribute("x2",t.xMx+"px"),n.setAttribute("y2",t.y2+"px"),n.setAttribute("stroke","#999"),n.setAttribute("stroke-dasharray","3"),a.setAttribute("cx",t.xMx+"px"),a.setAttribute("cy",t.yMx+"px"),a.setAttribute("r","3px"),a.setAttribute("fill","#4969a6"),i.setAttribute("cx",t.xMn+"px"),i.setAttribute("cy",t.yMn+"px"),i.setAttribute("r","3px"),i.setAttribute("fill","#1c7a1c"),e.appendChild(n),e.appendChild(a),e.appendChild(i),e},setSVG:function(){if(s.lgn<2)s.smlData();else{var t,e,n,a,i,d,l,o,c,m,u,p=0,g=r.val(s.data[0].max),v=r.val(s.data[0].min),f=[];for(t=s.lmt>0&&s.lgn>s.lmt?s.lgn-s.lmt:0,g=r.val(s.data[t].max),v=r.val(s.data[t].min),c=t;c<s.lgn;c++)p+=s.data[c].min+s.data[c].max,v=s.data[c].min<v?s.data[c].min:v,g=s.data[c].max>g?s.data[c].max:g;o=Number.parseFloat((g+v)/2).toFixed(2),s.vUnit=256/(g-v),s.hUnit=0==t?682/(s.lgn-1):682/(s.lmt-1),s.hUnitHalf=s.hUnit/2,c=s.lgn-1,n=769,d="M"+(e=769)+","+(i=(g-s.data[c].max)*s.vUnit+32),l="M"+n+","+(a=(g-s.data[c].min)*s.vUnit+32),m=s.setG({idx:c,tStamp:s.data[c].tStamp,mx:s.data[c].max,mn:s.data[c].min,xMx:e,yMx:i,xMn:n,yMn:a,y1:32,y2:288}),f.push(m);do{c--,i=(g-s.data[c].max)*s.vUnit+32,a=(g-s.data[c].min)*s.vUnit+32,d+=" L"+(e-=s.hUnit)+","+i,l+=" L"+(n-=s.hUnit)+","+a,m=s.setG({idx:c,tStamp:s.data[c].tStamp,mx:s.data[c].max,mn:s.data[c].min,xMx:e,yMx:i,xMn:n,yMn:a,y1:32,y2:288}),f.push(m)}while(c>t);s.max.setAttribute("d",d),s.min.setAttribute("d",l),s.aMin.textContent=r.cmpct(v),s.aMid.textContent=r.cmpct(o),s.aMax.textContent=r.cmpct(g);var h=s.bdy.querySelectorAll("g");if(h)for(c=0;c<h.length;c++)s.bdy.removeChild(h[c]);if(f.length)for(c=0;c<f.length;c++)s.bdy.appendChild(f[c]);u=s.mt,s.bdy.removeChild(s.mt),s.bdy.appendChild(u),s.wrap.classList.contains("hide")&&s.wrap.classList.remove("hide"),s.nData.classList.add("hide"),s.forceShow(document.getElementById("g"+(s.lgn-1))),s.setStats({rec:s.lmt>0?s.lmt:s.lgn,max:g,min:v,avg:p})}},forceShow:function(t){var e,n;t.style.opacity="1",e=r.val(t.getAttribute("data-mx")),n=r.val(t.getAttribute("data-mn")),s.sTs.textContent=a.format(t.getAttribute("data-t")),s.sMx.textContent=r.frmt(e),s.sMn.textContent=r.frmt(n),s.sMxC.textContent=r.cmpct(e),s.sMnC.textContent=r.cmpct(n),s.sAv.textContent=e==n?"--":r.cmpct((e+n)/2)},show:function(t,e){var n,i,d,l,o,c,m,u,p,g=!1,v=document.body.getBoundingClientRect(),f=s.bdy.querySelectorAll("g");if(u=t+v.x,p=e+v.y,c=f.length,!(p>(d=s.mt.getBoundingClientRect()).bottom||p<d.top))for(u<d.left?u=d.left:u>d.right&&(u=d.right),o=s.lmt<64?s.hUnitHalf-1:s.hUnitHalf/2,l=0;l<c;l++)m=f[l].getBoundingClientRect(),!g&&m.left-o<=u&&m.right+o>=u&&m.top<=p&&m.bottom>=p?(g=!0,f[l].style.opacity="1",n=r.val(f[l].getAttribute("data-mx")),i=r.val(f[l].getAttribute("data-mn")),s.sTs.textContent=a.format(f[l].getAttribute("data-t")),s.sMx.textContent=r.frmt(n),s.sMn.textContent=r.frmt(i),s.sMxC.textContent=r.cmpct(n),s.sMnC.textContent=r.cmpct(i),s.sAv.textContent=n==i?"--":r.cmpct((n+i)/2)):f[l].style.opacity="0"},mOver:function(t){s.show(t.pageX,t.pageY)},tStart:function(t){s.show(t.touches[0].pageX,t.touches[0].pageY)},tMove:function(t){s.show(t.changedTouches[0].pageX,t.changedTouches[0].pageY)},init:function(){s.wrap=document.getElementById("svgWrap"),s.bdy=s.wrap.querySelector("svg"),s.lmtOpt=document.getElementById("svgTime"),s.min=s.bdy.getElementById("pMin"),s.max=s.bdy.getElementById("pMax"),s.aMin=s.bdy.getElementById("aMin"),s.aMid=s.bdy.getElementById("aMid"),s.aMax=s.bdy.getElementById("aMax"),s.nData=s.bdy.getElementById("noData"),s.sStats=document.getElementById("svgStats"),s.sRec=document.getElementById("sRec"),s.sMax=document.getElementById("sMax"),s.sMin=document.getElementById("sMin"),s.sAvg=document.getElementById("sAvg"),s.sMaxC=document.getElementById("sMaxC"),s.sMinC=document.getElementById("sMinC"),s.sTs=document.getElementById("sTs"),s.sAv=document.getElementById("sAv"),s.sMx=document.getElementById("sMx"),s.sMn=document.getElementById("sMn"),s.sMxC=document.getElementById("sMxC"),s.sMnC=document.getElementById("sMnC"),s.mt=document.getElementById("mt"),s.mt.addEventListener("mousemove",s.mOver,!1),s.mt.addEventListener("touchstart",s.tStart,!1),s.mt.addEventListener("touchmove",s.tMove,!1),s.lmt=c.get("l")?r.val(c.get("l")):0}},c={set:function(t,e,n){var a="";if(n){var i=new Date;i.setTime(i.getTime()+24*n*60*60*1e3),a="; expires="+i.toUTCString()}document.cookie=t+"="+(e||"")+a+"; path=/; SameSite=Lax"},get:function(t){var e,n,a=t+"=",i=document.cookie.split(";");for(e=0;e<i.length;e++){for(n=i[e];" "==n.charAt(0);)n=n.substring(1,n.length);if(0==n.indexOf(a))return n.substring(a.length,n.length)}return null},erase:function(t){document.cookie=t+"=; Expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/; SameSite=Lax"}};window.onload=function(){r.init(),i.init(),l.init(),o.init(),s.init(),d.init(),"?privacy"==location.search?d.show():n.init()}</script>
</body>
</html>