diff --git a/CNAME b/CNAME deleted file mode 100644 index 14611ac..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -vytal.io \ No newline at end of file diff --git a/asset-manifest.json b/asset-manifest.json index a70f1f2..5c22355 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,14 +1,14 @@ { "files": { - "main.css": "/static/css/main.92622b60.chunk.css", - "main.js": "/static/js/main.03a7b03b.chunk.js", - "main.js.map": "/static/js/main.03a7b03b.chunk.js.map", + "main.css": "/static/css/main.6ce48002.chunk.css", + "main.js": "/static/js/main.e7ca5764.chunk.js", + "main.js.map": "/static/js/main.e7ca5764.chunk.js.map", "runtime-main.js": "/static/js/runtime-main.3d8cfe00.js", "runtime-main.js.map": "/static/js/runtime-main.3d8cfe00.js.map", "static/js/2.d7a24d9f.chunk.js": "/static/js/2.d7a24d9f.chunk.js", "static/js/2.d7a24d9f.chunk.js.map": "/static/js/2.d7a24d9f.chunk.js.map", "index.html": "/index.html", - "static/css/main.92622b60.chunk.css.map": "/static/css/main.92622b60.chunk.css.map", + "static/css/main.6ce48002.chunk.css.map": "/static/css/main.6ce48002.chunk.css.map", "static/js/2.d7a24d9f.chunk.js.LICENSE.txt": "/static/js/2.d7a24d9f.chunk.js.LICENSE.txt", "static/media/checkCircle.7ccef9af.svg": "/static/media/checkCircle.7ccef9af.svg", "static/media/logo.6b260e90.svg": "/static/media/logo.6b260e90.svg", @@ -18,7 +18,7 @@ "entrypoints": [ "static/js/runtime-main.3d8cfe00.js", "static/js/2.d7a24d9f.chunk.js", - "static/css/main.92622b60.chunk.css", - "static/js/main.03a7b03b.chunk.js" + "static/css/main.6ce48002.chunk.css", + "static/js/main.e7ca5764.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 2296c69..d049ddd 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Vytal Privacy Scan
\ No newline at end of file +Vytal Privacy Scan
\ No newline at end of file diff --git a/static/css/main.6ce48002.chunk.css b/static/css/main.6ce48002.chunk.css new file mode 100644 index 0000000..d4e0a8c --- /dev/null +++ b/static/css/main.6ce48002.chunk.css @@ -0,0 +1,2 @@ +.gitHubButton{position:fixed;top:12px;right:12px}@media screen and (max-width:900px){.gitHubButton{position:absolute}}@media screen and (max-width:500px){.gitHubButton{top:8px;right:8px}}.centerBlockOuter{grid-gap:24px;gap:24px}.centerBlockOuter,.logoWrap{display:flex;justify-content:center}.logoWrap{align-items:center}.logo{margin:20px 0 16px;width:250px}@media screen and (max-width:500px){.logo{width:160px;margin:12px 0 8px}}table{width:100%;table-layout:fixed;border-collapse:collapse}.tableWrap{border:1px solid var(--border);border-radius:6px}tbody:not(:last-child){border-bottom:1px solid var(--border)}td{padding:12px;word-break:break-all}td:first-child{width:150px;font-weight:600;word-break:normal}td:nth-child(3){width:40px;font-weight:600}.circleButton{display:flex;width:20px}.issue{cursor:pointer}.issue:hover{background-color:var(--issueBackground);color:var(--issueText)}.modalHeader{display:flex;justify-content:space-between;margin:0 0 6px}.modalTitle{font-weight:600}.closeButton{fill:var(--border);display:flex;width:12px;cursor:pointer;margin:-12px 0 0}.closeButton:hover{fill:var(--grey)}ul{padding-left:20px;margin:0}@media screen and (max-width:500px){td{padding:8px}td:first-child{width:70px}td:nth-child(3){width:20px;font-weight:600;word-break:normal}}.fingerprintTable td:first-child{width:80px;font-weight:600}.boxWrap{border:1px solid var(--border);border-radius:6px;padding:12px}.hash{text-align:center;font-weight:600}form{margin:12px 0 0}.saveButton{border:1px solid var(--grey);border-radius:6px;padding:6px;background-color:transparent;cursor:pointer;color:var(--text);margin:0 0 0 6px;-webkit-appearance:none}.saveButton:hover{background-color:var(--border)}input[type=text]{border:1px solid var(--grey);border-radius:6px;padding:6px;width:200px;outline:none;-webkit-appearance:none}@media screen and (max-width:500px){.boxWrap{padding:8px}input[type=text]{width:calc(100% - 70px)}}.centerBlockInner{width:500px}.centerBlockMobile{display:none}.contentBlock{color:var(--text);background-color:#fff;border-radius:6px;box-sizing:border-box;padding:24px;box-shadow:0 4px 12px rgba(0,0,0,.1);margin:0 0 24px;min-width:500px}@media screen and (max-width:1200px){.centerBlockInner{display:none}.centerBlockMobile{display:block;max-width:650px;padding:0 12px}.contentBlock{padding:18px;margin:0 0 12px;min-width:400px}.loadBlock{margin:0 12px}}@media screen and (max-width:500px){.contentBlock{width:100%;min-width:0}}:root{--main:#943ec5;--grey:#9fa6b2;--text:#4b5563;--border:#ddd;--issueBackground:#f8d7da;--issueText:#721c24;--link:#943ec5}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px}.App{min-height:100vh;display:flex;flex-direction:column}.background{position:fixed;width:100%;height:100%;background:#9fa6b2;background:var(--grey);background:linear-gradient(165deg,#572375,#943ec5 55%,#d3b0e7);z-index:-1}h1{margin:0 0 12px;font-size:19px}h1,h2{font-weight:600}h2{margin:0 0 4px;font-size:17px}p{margin:12px 0 0}b{font-weight:600}img{width:100%;border-radius:6px;border:1px solid #ddd;border:1px solid var(--border);box-sizing:border-box;display:block;margin:0 0 12px}.link{color:#943ec5;color:var(--link);text-decoration:none}.link:hover{text-decoration:underline}@media screen and (max-width:500px){body{font-size:14px}h1{font-size:16px}h2{margin:0 0 3px;font-size:15px}} +/*# sourceMappingURL=main.6ce48002.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.6ce48002.chunk.css.map b/static/css/main.6ce48002.chunk.css.map new file mode 100644 index 0000000..c317c31 --- /dev/null +++ b/static/css/main.6ce48002.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://src/components/GitHub.css","webpack://src/components/MainColumn.css","webpack://src/components/Logo.css","webpack://src/components/Table.css","webpack://src/components/TableRow.css","webpack://src/components/FingerprintBlock.css","webpack://src/components/Blocks.css","webpack://src/components/App.css"],"names":[],"mappings":"AAAA,cACE,cAAe,CACf,QAAS,CACT,UACF,CAEA,oCACE,cACE,iBACF,CACF,CAEA,oCACE,cACE,OAAQ,CACR,SACF,CACF,CCjBA,kBAGE,aAAS,CAAT,QACF,CCJA,4BDCE,YAAa,CACb,sBCEF,CAJA,UAEE,kBAEF,CAEA,MACE,kBAAqB,CACrB,WACF,CAEA,oCACE,MACE,WAAY,CACZ,iBACF,CACF,CChBA,MACE,UAAW,CACX,kBAAmB,CACnB,wBACF,CAEA,WACE,8BAA+B,CAC/B,iBACF,CAEA,uBACE,qCACF,CCbA,GACE,YAAa,CACb,oBACF,CAEA,eACE,WAAY,CACZ,eAAgB,CAChB,iBACF,CAEA,gBACE,UAAW,CACX,eACF,CAEA,cACE,YAAa,CACb,UACF,CAEA,OACE,cACF,CAEA,aACE,uCAAwC,CACxC,sBACF,CAEA,aACE,YAAa,CACb,6BAA8B,CAC9B,cACF,CAEA,YACE,eACF,CAEA,aACE,kBAAmB,CACnB,YAAa,CACb,UAAW,CACX,cAAe,CACf,gBACF,CAEA,mBACE,gBACF,CAEA,GACE,iBAAkB,CAClB,QACF,CAEA,oCACE,GACE,WACF,CAEA,eACE,UACF,CAEA,gBACE,UAAW,CACX,eAAgB,CAChB,iBACF,CACF,CCvEA,iCACE,UAAW,CACX,eACF,CAEA,SACE,8BAA+B,CAC/B,iBAAkB,CAClB,YACF,CAEA,MACE,iBAAkB,CAClB,eACF,CAEA,KACE,eACF,CAEA,YACE,4BAA6B,CAC7B,iBAAkB,CAClB,WAAY,CACZ,4BAA6B,CAC7B,cAAe,CACf,iBAAkB,CAClB,gBAAiB,CACjB,uBACF,CAEA,kBACE,8BACF,CAEA,iBACE,4BAA6B,CAC7B,iBAAkB,CAClB,WAAY,CACZ,WAAY,CACZ,YAAa,CACb,uBACF,CAEA,oCACE,SACE,WACF,CAEA,iBACE,uBACF,CACF,CCpDA,kBACE,WACF,CAEA,mBACE,YACF,CAEA,cACE,iBAAkB,CAClB,qBAAsB,CACtB,iBAAkB,CAClB,qBAAsB,CACtB,YAAa,CACb,oCAA2C,CAC3C,eAAkB,CAClB,eACF,CAEA,qCACE,kBACE,YACF,CAEA,mBACE,aAAc,CACd,eAAgB,CAChB,cACF,CAEA,cACE,YAAa,CACb,eAAkB,CAClB,eACF,CAEA,WACE,aACF,CACF,CAEA,oCACE,cACE,UAAW,CACX,WACF,CACF,CC9CA,MACE,cAAe,CACf,cAAe,CACf,cAAe,CACf,aAAc,CACd,yBAA0B,CAC1B,mBAAoB,CACpB,cACF,CAEA,KACE,QAAS,CACT,mJAEY,CACZ,kCAAmC,CACnC,iCAAkC,CAClC,cACF,CAEA,KACE,gBAAiB,CACjB,YAAa,CACb,qBACF,CAEA,YACE,cAAe,CACf,UAAW,CACX,WAAY,CACZ,kBAAuB,CAAvB,sBAAuB,CACvB,8DAKC,CACD,UACF,CAEA,GACE,eAAkB,CAElB,cACF,CAEA,MAJE,eAQF,CAJA,GACE,cAAiB,CAEjB,cACF,CAEA,EACE,eACF,CAEA,EACE,eACF,CAEA,IACE,UAAW,CACX,iBAAkB,CAClB,qBAA+B,CAA/B,8BAA+B,CAC/B,qBAAsB,CACtB,aAAc,CACd,eACF,CAEA,MACE,aAAkB,CAAlB,iBAAkB,CAClB,oBACF,CAEA,YACE,yBACF,CAEA,oCACE,KACE,cACF,CAEA,GACE,cACF,CAEA,GACE,cAAiB,CACjB,cACF,CACF","file":"main.6ce48002.chunk.css","sourcesContent":[".gitHubButton {\r\n position: fixed;\r\n top: 12px;\r\n right: 12px;\r\n}\r\n\r\n@media screen and (max-width: 900px) {\r\n .gitHubButton {\r\n position: absolute;\r\n }\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n .gitHubButton {\r\n top: 8px;\r\n right: 8px;\r\n }\r\n}\r\n",".centerBlockOuter {\r\n display: flex;\r\n justify-content: center;\r\n gap: 24px;\r\n}\r\n",".logoWrap {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.logo {\r\n margin: 20px 0 16px 0;\r\n width: 250px;\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n .logo {\r\n width: 160px;\r\n margin: 12px 0 8px 0;\r\n }\r\n}\r\n","table {\r\n width: 100%;\r\n table-layout: fixed;\r\n border-collapse: collapse;\r\n}\r\n\r\n.tableWrap {\r\n border: 1px solid var(--border);\r\n border-radius: 6px;\r\n}\r\n\r\ntbody:not(:last-child) {\r\n border-bottom: 1px solid var(--border);\r\n}\r\n","td {\r\n padding: 12px;\r\n word-break: break-all;\r\n}\r\n\r\ntd:first-child {\r\n width: 150px;\r\n font-weight: 600;\r\n word-break: normal;\r\n}\r\n\r\ntd:nth-child(3) {\r\n width: 40px;\r\n font-weight: 600;\r\n}\r\n\r\n.circleButton {\r\n display: flex;\r\n width: 20px;\r\n}\r\n\r\n.issue {\r\n cursor: pointer;\r\n}\r\n\r\n.issue:hover {\r\n background-color: var(--issueBackground);\r\n color: var(--issueText);\r\n}\r\n\r\n.modalHeader {\r\n display: flex;\r\n justify-content: space-between;\r\n margin: 0 0 6px 0;\r\n}\r\n\r\n.modalTitle {\r\n font-weight: 600;\r\n}\r\n\r\n.closeButton {\r\n fill: var(--border);\r\n display: flex;\r\n width: 12px;\r\n cursor: pointer;\r\n margin: -12px 0 0 0;\r\n}\r\n\r\n.closeButton:hover {\r\n fill: var(--grey);\r\n}\r\n\r\nul {\r\n padding-left: 20px;\r\n margin: 0px;\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n td {\r\n padding: 8px;\r\n }\r\n\r\n td:first-child {\r\n width: 70px;\r\n }\r\n\r\n td:nth-child(3) {\r\n width: 20px;\r\n font-weight: 600;\r\n word-break: normal;\r\n }\r\n}\r\n",".fingerprintTable td:first-child {\r\n width: 80px;\r\n font-weight: 600;\r\n}\r\n\r\n.boxWrap {\r\n border: 1px solid var(--border);\r\n border-radius: 6px;\r\n padding: 12px;\r\n}\r\n\r\n.hash {\r\n text-align: center;\r\n font-weight: 600;\r\n}\r\n\r\nform {\r\n margin: 12px 0 0 0;\r\n}\r\n\r\n.saveButton {\r\n border: 1px solid var(--grey);\r\n border-radius: 6px;\r\n padding: 6px;\r\n background-color: transparent;\r\n cursor: pointer;\r\n color: var(--text);\r\n margin: 0 0 0 6px;\r\n -webkit-appearance: none;\r\n}\r\n\r\n.saveButton:hover {\r\n background-color: var(--border);\r\n}\r\n\r\ninput[type='text'] {\r\n border: 1px solid var(--grey);\r\n border-radius: 6px;\r\n padding: 6px;\r\n width: 200px;\r\n outline: none;\r\n -webkit-appearance: none;\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n .boxWrap {\r\n padding: 8px;\r\n }\r\n\r\n input[type='text'] {\r\n width: calc(100% - 70px);\r\n }\r\n}\r\n",".centerBlockInner {\r\n width: 500px;\r\n}\r\n\r\n.centerBlockMobile {\r\n display: none;\r\n}\r\n\r\n.contentBlock {\r\n color: var(--text);\r\n background-color: #fff;\r\n border-radius: 6px;\r\n box-sizing: border-box;\r\n padding: 24px;\r\n box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;\r\n margin: 0 0 24px 0;\r\n min-width: 500px;\r\n}\r\n\r\n@media screen and (max-width: 1200px) {\r\n .centerBlockInner {\r\n display: none;\r\n }\r\n\r\n .centerBlockMobile {\r\n display: block;\r\n max-width: 650px;\r\n padding: 0 12px;\r\n }\r\n\r\n .contentBlock {\r\n padding: 18px;\r\n margin: 0 0 12px 0;\r\n min-width: 400px;\r\n }\r\n\r\n .loadBlock {\r\n margin: 0 12px;\r\n }\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n .contentBlock {\r\n width: 100%;\r\n min-width: 0;\r\n }\r\n}\r\n",":root {\r\n --main: #943ec5;\r\n --grey: #9fa6b2;\r\n --text: #4b5563;\r\n --border: #ddd;\r\n --issueBackground: #f8d7da;\r\n --issueText: #721c24;\r\n --link: #943ec5;\r\n}\r\n\r\nbody {\r\n margin: 0;\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\r\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\r\n sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n font-size: 15px;\r\n}\r\n\r\n.App {\r\n min-height: 100vh;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.background {\r\n position: fixed;\r\n width: 100%;\r\n height: 100%;\r\n background: var(--grey);\r\n background: linear-gradient(\r\n 165deg,\r\n rgba(87, 35, 117, 1) 0%,\r\n rgba(148, 62, 197, 1) 55%,\r\n rgba(211, 176, 231, 1) 100%\r\n );\r\n z-index: -1;\r\n}\r\n\r\nh1 {\r\n margin: 0 0 12px 0;\r\n font-weight: 600;\r\n font-size: 19px;\r\n}\r\n\r\nh2 {\r\n margin: 0 0 4px 0;\r\n font-weight: 600;\r\n font-size: 17px;\r\n}\r\n\r\np {\r\n margin: 12px 0 0 0;\r\n}\r\n\r\nb {\r\n font-weight: 600;\r\n}\r\n\r\nimg {\r\n width: 100%;\r\n border-radius: 6px;\r\n border: 1px solid var(--border);\r\n box-sizing: border-box;\r\n display: block;\r\n margin: 0 0 12px 0;\r\n}\r\n\r\n.link {\r\n color: var(--link);\r\n text-decoration: none;\r\n}\r\n\r\n.link:hover {\r\n text-decoration: underline;\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n body {\r\n font-size: 14px;\r\n }\r\n\r\n h1 {\r\n font-size: 16px;\r\n }\r\n\r\n h2 {\r\n margin: 0 0 3px 0;\r\n font-size: 15px;\r\n }\r\n}\r\n"]} \ No newline at end of file diff --git a/static/css/main.92622b60.chunk.css b/static/css/main.92622b60.chunk.css deleted file mode 100644 index 6980a6d..0000000 --- a/static/css/main.92622b60.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -.gitHubButton{position:fixed;top:12px;right:12px}@media screen and (max-width:900px){.gitHubButton{position:absolute}}@media screen and (max-width:500px){.gitHubButton{top:8px;right:8px}}.centerBlockOuter{grid-gap:24px;gap:24px}.centerBlockOuter,.logoWrap{display:flex;justify-content:center}.logoWrap{align-items:center}.logo{margin:20px 0 16px;width:250px}@media screen and (max-width:500px){.logo{width:160px;margin:12px 0 8px}}table{width:100%;table-layout:fixed;border-collapse:collapse}.tableWrap{border:1px solid var(--border);border-radius:6px}tbody:not(:last-child){border-bottom:1px solid var(--border)}td{padding:12px;word-break:break-all}td:first-child{width:150px;font-weight:600;word-break:normal}td:nth-child(3){width:40px;font-weight:600}.circleButton{display:flex;width:20px}.issue{cursor:pointer}.issue:hover{background-color:var(--issueBackground);color:var(--issueText)}.modalHeader{display:flex;justify-content:space-between;margin:0 0 6px}.modalTitle{font-weight:600}.closeButton{fill:var(--border);display:flex;width:12px;cursor:pointer;margin:-12px 0 0}.closeButton:hover{fill:var(--grey)}ul{padding-left:20px;margin:0}@media screen and (max-width:500px){td{padding:8px}td:first-child{width:70px}td:nth-child(3){width:20px;font-weight:600;word-break:normal}}.fingerprintTable td:first-child{width:80px;font-weight:600}.boxWrap{border:1px solid var(--border);border-radius:6px;padding:12px}.hash{text-align:center;font-weight:600}form{margin:12px 0 0}.saveButton{border:1px solid var(--grey);border-radius:6px;padding:6px;background-color:transparent;cursor:pointer;color:var(--text);margin:0 0 0 6px}.saveButton:hover{background-color:var(--border)}input[type=text]{border:1px solid var(--grey);border-radius:6px;padding:6px;width:200px;outline:none;-webkit-appearance:none}@media screen and (max-width:500px){.boxWrap{padding:8px}input[type=text]{width:calc(100% - 70px)}}.centerBlockInner{width:500px}.centerBlockMobile{display:none}.contentBlock{color:var(--text);background-color:#fff;border-radius:6px;box-sizing:border-box;padding:24px;box-shadow:0 4px 12px rgba(0,0,0,.1);margin:0 0 24px;min-width:500px}@media screen and (max-width:1200px){.centerBlockInner{display:none}.centerBlockMobile{display:block;max-width:650px;padding:0 12px}.contentBlock{padding:18px;margin:0 0 12px;min-width:400px}.loadBlock{margin:0 12px}}@media screen and (max-width:500px){.contentBlock{width:100%;min-width:0}}:root{--main:#943ec5;--grey:#9fa6b2;--text:#4b5563;--border:#ddd;--issueBackground:#f8d7da;--issueText:#721c24;--link:#943ec5}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px}.App{min-height:100vh;display:flex;flex-direction:column}.background{position:fixed;width:100%;height:100%;background:#9fa6b2;background:var(--grey);background:linear-gradient(165deg,#572375,#943ec5 55%,#d3b0e7);z-index:-1}h1{margin:0 0 12px;font-size:19px}h1,h2{font-weight:600}h2{margin:0 0 4px;font-size:17px}p{margin:12px 0 0}b{font-weight:600}img{width:100%;border-radius:6px;border:1px solid #ddd;border:1px solid var(--border);box-sizing:border-box;display:block;margin:0 0 12px}.link{color:#943ec5;color:var(--link);text-decoration:none}.link:hover{text-decoration:underline}@media screen and (max-width:500px){body{font-size:14px}h1{font-size:16px}h2{margin:0 0 3px;font-size:15px}} -/*# sourceMappingURL=main.92622b60.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.92622b60.chunk.css.map b/static/css/main.92622b60.chunk.css.map deleted file mode 100644 index 4d4bf5d..0000000 --- a/static/css/main.92622b60.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://src/components/GitHub.css","webpack://src/components/MainColumn.css","webpack://src/components/Logo.css","webpack://src/components/Table.css","webpack://src/components/TableRow.css","webpack://src/components/FingerprintBlock.css","webpack://src/components/Blocks.css","webpack://src/components/App.css"],"names":[],"mappings":"AAAA,cACE,cAAe,CACf,QAAS,CACT,UACF,CAEA,oCACE,cACE,iBACF,CACF,CAEA,oCACE,cACE,OAAQ,CACR,SACF,CACF,CCjBA,kBAGE,aAAS,CAAT,QACF,CCJA,4BDCE,YAAa,CACb,sBCEF,CAJA,UAEE,kBAEF,CAEA,MACE,kBAAqB,CACrB,WACF,CAEA,oCACE,MACE,WAAY,CACZ,iBACF,CACF,CChBA,MACE,UAAW,CACX,kBAAmB,CACnB,wBACF,CAEA,WACE,8BAA+B,CAC/B,iBACF,CAEA,uBACE,qCACF,CCbA,GACE,YAAa,CACb,oBACF,CAEA,eACE,WAAY,CACZ,eAAgB,CAChB,iBACF,CAEA,gBACE,UAAW,CACX,eACF,CAEA,cACE,YAAa,CACb,UACF,CAEA,OACE,cACF,CAEA,aACE,uCAAwC,CACxC,sBACF,CAEA,aACE,YAAa,CACb,6BAA8B,CAC9B,cACF,CAEA,YACE,eACF,CAEA,aACE,kBAAmB,CACnB,YAAa,CACb,UAAW,CACX,cAAe,CACf,gBACF,CAEA,mBACE,gBACF,CAEA,GACE,iBAAkB,CAClB,QACF,CAEA,oCACE,GACE,WACF,CAEA,eACE,UACF,CAEA,gBACE,UAAW,CACX,eAAgB,CAChB,iBACF,CACF,CCvEA,iCACE,UAAW,CACX,eACF,CAEA,SACE,8BAA+B,CAC/B,iBAAkB,CAClB,YACF,CAEA,MACE,iBAAkB,CAClB,eACF,CAEA,KACE,eACF,CAEA,YACE,4BAA6B,CAC7B,iBAAkB,CAClB,WAAY,CACZ,4BAA6B,CAC7B,cAAe,CACf,iBAAkB,CAClB,gBACF,CAEA,kBACE,8BACF,CAEA,iBACE,4BAA6B,CAC7B,iBAAkB,CAClB,WAAY,CACZ,WAAY,CACZ,YAAa,CACb,uBACF,CAEA,oCACE,SACE,WACF,CAEA,iBACE,uBACF,CACF,CCnDA,kBACE,WACF,CAEA,mBACE,YACF,CAEA,cACE,iBAAkB,CAClB,qBAAsB,CACtB,iBAAkB,CAClB,qBAAsB,CACtB,YAAa,CACb,oCAA2C,CAC3C,eAAkB,CAClB,eACF,CAEA,qCACE,kBACE,YACF,CAEA,mBACE,aAAc,CACd,eAAgB,CAChB,cACF,CAEA,cACE,YAAa,CACb,eAAkB,CAClB,eACF,CAEA,WACE,aACF,CACF,CAEA,oCACE,cACE,UAAW,CACX,WACF,CACF,CC9CA,MACE,cAAe,CACf,cAAe,CACf,cAAe,CACf,aAAc,CACd,yBAA0B,CAC1B,mBAAoB,CACpB,cACF,CAEA,KACE,QAAS,CACT,mJAEY,CACZ,kCAAmC,CACnC,iCAAkC,CAClC,cACF,CAEA,KACE,gBAAiB,CACjB,YAAa,CACb,qBACF,CAEA,YACE,cAAe,CACf,UAAW,CACX,WAAY,CACZ,kBAAuB,CAAvB,sBAAuB,CACvB,8DAKC,CACD,UACF,CAEA,GACE,eAAkB,CAElB,cACF,CAEA,MAJE,eAQF,CAJA,GACE,cAAiB,CAEjB,cACF,CAEA,EACE,eACF,CAEA,EACE,eACF,CAEA,IACE,UAAW,CACX,iBAAkB,CAClB,qBAA+B,CAA/B,8BAA+B,CAC/B,qBAAsB,CACtB,aAAc,CACd,eACF,CAEA,MACE,aAAkB,CAAlB,iBAAkB,CAClB,oBACF,CAEA,YACE,yBACF,CAEA,oCACE,KACE,cACF,CAEA,GACE,cACF,CAEA,GACE,cAAiB,CACjB,cACF,CACF","file":"main.92622b60.chunk.css","sourcesContent":[".gitHubButton {\r\n position: fixed;\r\n top: 12px;\r\n right: 12px;\r\n}\r\n\r\n@media screen and (max-width: 900px) {\r\n .gitHubButton {\r\n position: absolute;\r\n }\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n .gitHubButton {\r\n top: 8px;\r\n right: 8px;\r\n }\r\n}\r\n",".centerBlockOuter {\r\n display: flex;\r\n justify-content: center;\r\n gap: 24px;\r\n}\r\n",".logoWrap {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.logo {\r\n margin: 20px 0 16px 0;\r\n width: 250px;\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n .logo {\r\n width: 160px;\r\n margin: 12px 0 8px 0;\r\n }\r\n}\r\n","table {\r\n width: 100%;\r\n table-layout: fixed;\r\n border-collapse: collapse;\r\n}\r\n\r\n.tableWrap {\r\n border: 1px solid var(--border);\r\n border-radius: 6px;\r\n}\r\n\r\ntbody:not(:last-child) {\r\n border-bottom: 1px solid var(--border);\r\n}\r\n","td {\r\n padding: 12px;\r\n word-break: break-all;\r\n}\r\n\r\ntd:first-child {\r\n width: 150px;\r\n font-weight: 600;\r\n word-break: normal;\r\n}\r\n\r\ntd:nth-child(3) {\r\n width: 40px;\r\n font-weight: 600;\r\n}\r\n\r\n.circleButton {\r\n display: flex;\r\n width: 20px;\r\n}\r\n\r\n.issue {\r\n cursor: pointer;\r\n}\r\n\r\n.issue:hover {\r\n background-color: var(--issueBackground);\r\n color: var(--issueText);\r\n}\r\n\r\n.modalHeader {\r\n display: flex;\r\n justify-content: space-between;\r\n margin: 0 0 6px 0;\r\n}\r\n\r\n.modalTitle {\r\n font-weight: 600;\r\n}\r\n\r\n.closeButton {\r\n fill: var(--border);\r\n display: flex;\r\n width: 12px;\r\n cursor: pointer;\r\n margin: -12px 0 0 0;\r\n}\r\n\r\n.closeButton:hover {\r\n fill: var(--grey);\r\n}\r\n\r\nul {\r\n padding-left: 20px;\r\n margin: 0px;\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n td {\r\n padding: 8px;\r\n }\r\n\r\n td:first-child {\r\n width: 70px;\r\n }\r\n\r\n td:nth-child(3) {\r\n width: 20px;\r\n font-weight: 600;\r\n word-break: normal;\r\n }\r\n}\r\n",".fingerprintTable td:first-child {\r\n width: 80px;\r\n font-weight: 600;\r\n}\r\n\r\n.boxWrap {\r\n border: 1px solid var(--border);\r\n border-radius: 6px;\r\n padding: 12px;\r\n}\r\n\r\n.hash {\r\n text-align: center;\r\n font-weight: 600;\r\n}\r\n\r\nform {\r\n margin: 12px 0 0 0;\r\n}\r\n\r\n.saveButton {\r\n border: 1px solid var(--grey);\r\n border-radius: 6px;\r\n padding: 6px;\r\n background-color: transparent;\r\n cursor: pointer;\r\n color: var(--text);\r\n margin: 0 0 0 6px;\r\n}\r\n\r\n.saveButton:hover {\r\n background-color: var(--border);\r\n}\r\n\r\ninput[type='text'] {\r\n border: 1px solid var(--grey);\r\n border-radius: 6px;\r\n padding: 6px;\r\n width: 200px;\r\n outline: none;\r\n -webkit-appearance: none;\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n .boxWrap {\r\n padding: 8px;\r\n }\r\n\r\n input[type='text'] {\r\n width: calc(100% - 70px);\r\n }\r\n}\r\n",".centerBlockInner {\r\n width: 500px;\r\n}\r\n\r\n.centerBlockMobile {\r\n display: none;\r\n}\r\n\r\n.contentBlock {\r\n color: var(--text);\r\n background-color: #fff;\r\n border-radius: 6px;\r\n box-sizing: border-box;\r\n padding: 24px;\r\n box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;\r\n margin: 0 0 24px 0;\r\n min-width: 500px;\r\n}\r\n\r\n@media screen and (max-width: 1200px) {\r\n .centerBlockInner {\r\n display: none;\r\n }\r\n\r\n .centerBlockMobile {\r\n display: block;\r\n max-width: 650px;\r\n padding: 0 12px;\r\n }\r\n\r\n .contentBlock {\r\n padding: 18px;\r\n margin: 0 0 12px 0;\r\n min-width: 400px;\r\n }\r\n\r\n .loadBlock {\r\n margin: 0 12px;\r\n }\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n .contentBlock {\r\n width: 100%;\r\n min-width: 0;\r\n }\r\n}\r\n",":root {\r\n --main: #943ec5;\r\n --grey: #9fa6b2;\r\n --text: #4b5563;\r\n --border: #ddd;\r\n --issueBackground: #f8d7da;\r\n --issueText: #721c24;\r\n --link: #943ec5;\r\n}\r\n\r\nbody {\r\n margin: 0;\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\r\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\r\n sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n font-size: 15px;\r\n}\r\n\r\n.App {\r\n min-height: 100vh;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.background {\r\n position: fixed;\r\n width: 100%;\r\n height: 100%;\r\n background: var(--grey);\r\n background: linear-gradient(\r\n 165deg,\r\n rgba(87, 35, 117, 1) 0%,\r\n rgba(148, 62, 197, 1) 55%,\r\n rgba(211, 176, 231, 1) 100%\r\n );\r\n z-index: -1;\r\n}\r\n\r\nh1 {\r\n margin: 0 0 12px 0;\r\n font-weight: 600;\r\n font-size: 19px;\r\n}\r\n\r\nh2 {\r\n margin: 0 0 4px 0;\r\n font-weight: 600;\r\n font-size: 17px;\r\n}\r\n\r\np {\r\n margin: 12px 0 0 0;\r\n}\r\n\r\nb {\r\n font-weight: 600;\r\n}\r\n\r\nimg {\r\n width: 100%;\r\n border-radius: 6px;\r\n border: 1px solid var(--border);\r\n box-sizing: border-box;\r\n display: block;\r\n margin: 0 0 12px 0;\r\n}\r\n\r\n.link {\r\n color: var(--link);\r\n text-decoration: none;\r\n}\r\n\r\n.link:hover {\r\n text-decoration: underline;\r\n}\r\n\r\n@media screen and (max-width: 500px) {\r\n body {\r\n font-size: 14px;\r\n }\r\n\r\n h1 {\r\n font-size: 16px;\r\n }\r\n\r\n h2 {\r\n margin: 0 0 3px 0;\r\n font-size: 15px;\r\n }\r\n}\r\n"]} \ No newline at end of file diff --git a/static/js/main.03a7b03b.chunk.js.map b/static/js/main.03a7b03b.chunk.js.map deleted file mode 100644 index ceb3b05..0000000 --- a/static/js/main.03a7b03b.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["components/Github.js","images/logo.svg","components/Logo.js","components/Block.js","images/xCircle.svg","images/checkCircle.svg","images/x.svg","components/TableRow.js","components/Table.js","utils/common.js","utils/userAgent.js","components/UserAgentBlock.js","utils/intl.js","components/IntlBlock.js","utils/navigator.js","components/NavigatorBlock.js","utils/fingerprint.js","components/FingerprintBlock.js","components/BlocksOne.js","utils/other.js","components/OtherBlock.js","utils/screen.js","components/ScreenBlock.js","utils/connection.js","components/LocationBlock.js","components/ConnectionBlock.js","components/BlocksTwo.js","components/Blocks.js","components/MainColumn.js","components/App.js","serviceWorker.js","index.js"],"names":["Github","className","href","data-color-scheme","aria-label","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref2","fill","stroke","transform","d","SvgLogo","_ref","svgRef","title","titleId","props","xmlns","preserveAspectRatio","viewBox","ref","id","ForwardRef","Logo","alt","ContentBlock","children","SvgXCircle","SvgCheckCircle","SvgX","modalStyles","content","top","left","right","bottom","marginRight","padding","border","borderRadius","Modal","setAppElement","TableRow","item","issues","filter","Boolean","useState","modalIsOpen","setIsOpen","closeModal","onClick","value","isOpen","onRequestClose","style","contentLabel","map","ele","index","Table","data","code","checkWebWorker","worker","getUserAgentData","userAgent","workerAgent","getUserAgent","userAgentParsed","Bowser","parse","navigator","workerAgentParsed","browser","name","version","os","versionName","engine","platform","type","UserAgentBlock","Block","rel","getIntl","workerData","locale","Intl","DateTimeFormat","resolvedOptions","timeZone","IntlBlock","getHardwareConcurrency","checkNavigatorProperties","checkNavigatorValue","checkNavigatorPrototype","getMaxTouchPoints","getPlatform","getAppVersion","getLanguage","getLanguages","getCookieEnabled","getDoNotTrack","getWebDriver","getPlugins","sortPlugins","getVendor","list","undefined","getOwnPropertyDescriptor","Navigator","err","getNavigator","deviceMemory","hardwareConcurrency","appVersion","language","languages","NavigatorBlock","getFingerprint","signature","hash","FingerprintBlock","setSignature","load","setload","md5","JSON","stringify","toString","useEffect","axios","get","then","response","getSignature","onSubmit","e","post","postSignature","placeholder","maxLength","BlocksOne","detectTor","date","Date","plugins","getTimezoneOffset","window","outerWidth","screen","availWidth","outerHeight","availHeight","checkDatePrototype","setDate","includes","getOther","battery","adBlock","batteryLevel","batteryStatus","Math","round","level","charging","brave","timezoneOffset","OtherBlock","setAdBlock","setBattery","fetch","method","mode","cache","catch","getBattery","res","getAvailWidth","checkScreenProperties","checkScreenValue","checkScreenPrototype","checkWidth","getOuterWidth","getHeight","getAvailHeight","checkHeight","getOuterHeight","getPixelDepth","getColorDepth","Screen","width","height","getScreen","ScreenBlock","checkProxy","proxy","getLocation","locationTimeZone","workerTimeZone","timeZoneIssue","timezone","isProxy","country","regionName","city","zip","lat","lon","getConnection","query","isp","org","as","LocationBlock","connectionData","src","BlocksTwo","ConnectionBlock","Blocks","setWorkerData","setConnectionData","w","Worker","getWebWorker","onmessage","event","setData","json","MainColumn","App","location","hostname","match","ReactDOM","render","StrictMode","document","getElementById","serviceWorker","ready","registration","unregister","error","console","message"],"mappings":"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","file":"static/js/main.03a7b03b.chunk.js","sourcesContent":["import './GitHub.css';\r\nimport GitHubButton from 'react-github-btn';\r\n\r\nconst Github = () => (\r\n
\r\n \r\n Star\r\n \r\n
\r\n);\r\n\r\nexport default Github;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#fff\",\n stroke: \"none\",\n transform: \"matrix(.1 0 0 -.1 0 1056)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4890 10554c-19-2-102-11-185-20-814-84-1627-377-2332-841-666-437-1242-1047-1652-1748-345-590-582-1279-670-1950-34-261-44-422-44-710 0-388 28-679 99-1035C523 2160 2153 526 4240 106c360-73 640-99 1040-99 488 0 847 44 1305 160 665 168 1310 477 1860 891 1004 754 1703 1833 1983 3062 146 636 168 1351 61 2010-273 1699-1362 3160-2913 3911-540 261-1091 420-1716 495-100 12-240 17-535 19-220 2-416 1-435-1zm870-978c947-115 1772-494 2460-1130 303-281 615-672 815-1025 491-866 669-1875 504-2861-113-681-390-1322-814-1885-233-310-552-627-869-862-1529-1139-3637-1136-5161 7-391 294-746 669-1012 1070-367 553-599 1170-683 1814-113 869 22 1705 399 2472 103 210 151 294 287 499 316 476 726 886 1199 1199 340 225 629 368 999 495 349 120 681 187 1106 225 112 10 641-3 770-18z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5045 8784c-729-59-1353-298-1925-740-149-114-480-445-594-594-405-524-638-1090-722-1755-22-172-25-595-6-760 86-742 352-1362 822-1916 176-207 457-462 565-513 153-73 342-56 483 44 140 98 210 245 199 420-9 156-62 251-211 377-479 408-770 907-876 1504-31 174-39 528-16 719 93 759 503 1435 1121 1847 275 183 609 315 946 372 442 76 912 34 1329-116 593-214 1089-664 1375-1248 194-396 270-726 270-1165-1-320-34-522-135-815-143-414-360-722-786-1116-311-287-141-788 284-834 71-8 180 13 256 51 97 47 353 285 519 482 474 563 751 1223 818 1954 17 188 6 625-19 798-99 656-347 1220-760 1730-118 144-361 385-514 507-520 416-1102 662-1770 748-118 16-543 28-653 19z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5175 6514c-92-14-198-39-260-61-458-165-766-607-768-1103-1-309 89-544 306-792 141-160 207-284 259-481 21-80 22-101 27-972l6-890 24-60c79-199 237-332 440-372 282-56 561 117 657 407 17 51 19 120 24 935 6 867 6 881 28 958 51 183 137 343 254 474 207 230 308 486 308 782 0 328-118 612-349 842-171 170-340 263-576 314-69 16-321 28-380 19z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39255 8795c-156-35-252-89-375-214-79-79-103-111-137-181-23-47-50-112-60-145-17-57-18-203-21-2915-2-2552-1-2863 13-2933 31-154 97-272 219-392 93-91 176-144 291-183l80-27 1972-3c2216-3 2045-8 2213 74 82 41 109 61 196 148s107 114 147 196c56 113 77 207 77 338-1 222-69 380-232 538-87 85-141 122-228 159-131 55-109 54-1270 57-591 2-1274 4-1517 6l-443 2-2 2433-3 2432-23 73c-86 279-301 480-574 536-92 19-240 20-323 1z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12765 8744c-101-17-243-74-332-136-160-109-287-325-313-531-10-84-2-193 21-280 9-37 516-1310 1838-4620 424-1062 439-1096 540-1209 63-71 201-159 301-192 130-43 243-53 364-32 163 27 276 83 399 196 130 120 126 111 585 1263 231 578 735 1842 1120 2807 530 1328 705 1776 718 1840 59 295-87 628-344 784-226 137-480 151-719 41-147-68-257-165-333-294-21-36-377-914-790-1950l-753-1884-756 1890c-416 1039-772 1916-791 1949-48 81-170 202-255 252-114 67-240 104-365 107-58 2-118 1-135-1z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26688 8740c-304-52-566-312-619-614-18-104-7-273 24-369 75-231 263-414 512-498l70-24 792-3 793-3 2-2442 3-2442 23-70c87-258 284-451 528-516 108-29 287-29 396-1 270 72 486 299 544 571 11 55 14 457 14 2484v2417h753c474 0 776 4 816 11 164 26 285 91 416 223 151 152 214 307 215 523 0 116-11 179-47 277-66 176-234 350-413 426-140 59 58 54-2465 56-1270 1-2331-2-2357-6z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34355 8735c-232-43-433-192-538-402-33-64-2231-5575-2255-5652-13-42-17-90-17-196 1-131 3-146 32-227 78-220 214-370 416-455 112-47 194-64 307-65 143 0 264 32 382 103 119 70 223 181 285 304 12 22 357 879 768 1905s750 1868 754 1872c3 4 339-826 745-1845 406-1018 755-1885 775-1925 133-274 456-451 752-413 109 14 155 29 279 88 79 38 107 59 180 132 71 71 94 103 133 181 89 180 112 363 68 530-22 86-2217 5595-2263 5682-150 281-487 442-803 383z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19760 8661c-129-35-236-96-337-194-264-253-298-670-80-966 23-31 467-625 987-1321l945-1265 5-1255 5-1255 24-70c65-194 179-338 343-437 106-63 202-90 343-95 153-6 238 11 364 73 169 83 316 254 379 441l27 78 5 1250 5 1250 1021 1280c561 704 1039 1305 1062 1335 94 127 137 261 135 430-2 240-95 431-283 581-141 113-312 167-495 156-199-13-348-76-478-205-29-28-421-512-872-1075l-819-1025-763 1018c-419 561-781 1040-805 1066-133 145-329 224-548 223-68 0-128-6-170-18z\"\n}));\n\nfunction SvgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n preserveAspectRatio: \"xMidYMid meet\",\n viewBox: \"0 0 4389 1056\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.6b260e90.svg\";\nexport { ForwardRef as ReactComponent };","import './Logo.css';\r\nimport { ReactComponent as LogoImg } from '../images/logo.svg';\r\n\r\nconst Logo = () => (\r\n
\r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport default Logo;\r\n","const ContentBlock = ({ children }) => (\r\n
{children}
\r\n);\r\n\r\nexport default ContentBlock;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#f4c1c6\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"\n}));\n\nfunction SvgXCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgXCircle);\nexport default __webpack_public_path__ + \"static/media/xCircle.660de620.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#c3e6cb\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"\n}));\n\nfunction SvgCheckCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckCircle);\nexport default __webpack_public_path__ + \"static/media/checkCircle.7ccef9af.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z\"\n});\n\nfunction SvgX(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 320 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgX);\nexport default __webpack_public_path__ + \"static/media/x.32a6a29f.svg\";\nexport { ForwardRef as ReactComponent };","import './TableRow.css';\r\nimport Modal from 'react-modal';\r\nimport { useState } from 'react';\r\nimport { ReactComponent as XCircle } from '../images/xCircle.svg';\r\nimport { ReactComponent as CheckCircle } from '../images/checkCircle.svg';\r\nimport { ReactComponent as X } from '../images/x.svg';\r\n\r\nconst modalStyles = {\r\n content: {\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n padding: '18px',\r\n border: '1px solid var(--border)',\r\n borderRadius: '6px',\r\n },\r\n};\r\n\r\nModal.setAppElement('#root');\r\n\r\nconst TableRow = ({ item }) => {\r\n const issues = item.issues.filter(Boolean).length !== 0;\r\n const [modalIsOpen, setIsOpen] = useState(false);\r\n\r\n const openModal = () => {\r\n if (issues) setIsOpen(true);\r\n };\r\n\r\n const closeModal = () => {\r\n setIsOpen(false);\r\n };\r\n return (\r\n <>\r\n \r\n {item.key}\r\n {item.value || 'N/A'}\r\n \r\n {issues ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n
{item.key} issues
\r\n \r\n
\r\n
    \r\n {item.issues.filter(Boolean).map((ele, index) => (\r\n
  • {ele}
  • \r\n ))}\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TableRow;\r\n","import './Table.css';\r\nimport TableRow from './TableRow';\r\n\r\nconst Table = ({ data }) => (\r\n
\r\n \r\n {data.map((item) => (\r\n \r\n \r\n \r\n ))}\r\n
\r\n
\r\n);\r\n\r\nexport default Table;\r\n","export { fetchAPI, checkWebWorker, getWebWorker };\r\n\r\n// Gets location values\r\nconst fetchAPI = (setData) => {\r\n fetch('https://api.vytal.io/ip/')\r\n .then((response) => response.json())\r\n .then((json) => {\r\n setData(json);\r\n });\r\n};\r\n\r\nconst checkWebWorker = (key, worker) => {\r\n if (`${key}` !== `${worker}`) {\r\n return `Did not match web worker (${worker})`;\r\n }\r\n return null;\r\n};\r\n\r\nconst getWebWorker = () => {\r\n let w;\r\n if (typeof w === 'undefined') {\r\n w = new Worker('worker.js');\r\n }\r\n return w;\r\n};\r\n","import Bowser from 'bowser';\r\nimport { checkWebWorker } from './common';\r\n\r\nconst getUserAgentData = (key, userAgent, workerAgent) => ({\r\n key,\r\n value: userAgent || 'N/A',\r\n issues: [checkWebWorker(userAgent, workerAgent)],\r\n});\r\n\r\n// Returns object with location data\r\nconst getUserAgent = (workerAgent) => {\r\n const userAgentParsed = Bowser.parse(navigator.userAgent);\r\n const workerAgentParsed = Bowser.parse(workerAgent);\r\n return [\r\n getUserAgentData(\r\n 'Browser',\r\n userAgentParsed.browser.name,\r\n workerAgentParsed.browser.name\r\n ),\r\n getUserAgentData(\r\n 'Browser version',\r\n userAgentParsed.browser.version,\r\n workerAgentParsed.browser.version\r\n ),\r\n getUserAgentData('OS', userAgentParsed.os.name, workerAgentParsed.os.name),\r\n getUserAgentData(\r\n 'OS version',\r\n userAgentParsed.os.versionName,\r\n workerAgentParsed.os.versionName\r\n ),\r\n getUserAgentData(\r\n 'Engine',\r\n userAgentParsed.engine.name,\r\n workerAgentParsed.engine.name\r\n ),\r\n getUserAgentData(\r\n 'Engine version',\r\n userAgentParsed.engine.version,\r\n workerAgentParsed.engine.version\r\n ),\r\n getUserAgentData(\r\n 'Platform type',\r\n userAgentParsed.platform.type,\r\n workerAgentParsed.platform.type\r\n ),\r\n ];\r\n};\r\n\r\nexport default getUserAgent;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport getUserAgent from '../utils/userAgent';\r\n\r\nconst UserAgentBlock = ({ workerAgent }) => (\r\n \r\n

User Agent

\r\n \r\n

\r\n Explanation: Your user agent can be parsed to determine information\r\n about your browser or operating system.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default UserAgentBlock;\r\n","import { checkWebWorker } from './common';\r\n\r\nconst getLocale = (locale) => ({\r\n key: 'Locale',\r\n code: 'Intl.DateTimeFormat().resolvedOptions().locale',\r\n value: Intl.DateTimeFormat().resolvedOptions().locale,\r\n issues: [\r\n checkWebWorker(Intl.DateTimeFormat().resolvedOptions().locale, locale),\r\n ],\r\n});\r\n\r\nconst getTimezone = (timeZone) => ({\r\n key: 'Timezone',\r\n code: 'Intl.DateTimeFormat().resolvedOptions().timeZone',\r\n value: Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n issues: [\r\n checkWebWorker(Intl.DateTimeFormat().resolvedOptions().timeZone, timeZone),\r\n ],\r\n});\r\n\r\nconst getIntl = (workerData) => [\r\n getLocale(workerData.locale),\r\n getTimezone(workerData.timeZone),\r\n];\r\n\r\nexport default getIntl;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport getIntl from '../utils/intl';\r\n\r\nconst IntlBlock = ({ workerData }) => (\r\n \r\n

Intl

\r\n
\r\n

\r\n Explanation: The Intl object exposes info about your computer.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default IntlBlock;\r\n","import { checkWebWorker } from './common';\r\n\r\nconst getDeviceMemory = (key, worker) => ({\r\n key: 'Device memory',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getHardwareConcurrency = (key, worker) => ({\r\n key: 'Hardware concurrency',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getMaxTouchPoints = (key) => ({\r\n key: 'Max touch points',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getPlatform = (key, worker) => ({\r\n key: 'Platform',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getUserAgent = (key, worker) => ({\r\n key: 'User agent',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getAppVersion = (key, worker) => ({\r\n key: 'App version',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getLanguage = (key, worker) => ({\r\n key: 'Language',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getLanguages = (key, worker) => ({\r\n key: 'Languages',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getCookieEnabled = (key) => ({\r\n key: 'Cookie enabled',\r\n code: `navigator.${key}`,\r\n value: navigator[key] ? 'True' : 'False',\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getDoNotTrack = (key) => ({\r\n key: 'Do not track',\r\n code: `navigator.${key}`,\r\n value: navigator[key] ? 'True' : 'False',\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getWebDriver = (key) => ({\r\n key: 'Web driver',\r\n code: `navigator.${key}`,\r\n value: navigator[key] ? 'True' : 'False',\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getPlugins = (key) => ({\r\n key: 'Plugins',\r\n code: `navigator.${key}`,\r\n value: sortPlugins(navigator[key]),\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getVendor = (key) => ({\r\n key: 'Vendor',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\n// sorts plugins object into comma separated list\r\nconst sortPlugins = (data) => {\r\n const { length } = data;\r\n\r\n let list = '';\r\n for (let i = 0; i < length; i++) {\r\n if (i !== 0) list += ', ';\r\n list += data[i].name;\r\n }\r\n return list;\r\n};\r\n\r\nconst checkNavigatorProperties = (key) => {\r\n if (Object.getOwnPropertyDescriptor(navigator, key) !== undefined) {\r\n return 'Failed undefined properties';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkNavigatorValue = (key) => {\r\n try {\r\n // eslint-disable-next-line no-unused-vars\r\n const { value } = Object.getOwnPropertyDescriptor(Navigator.prototype, key);\r\n } catch (err) {\r\n return 'Failed Navigator.prototype';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkNavigatorPrototype = (key) => {\r\n try {\r\n // eslint-disable-next-line no-unused-vars\r\n const check = Navigator.prototype[key];\r\n return 'Failed Navigator.prototype';\r\n } catch (err) {\r\n // eslint-disable-next-line no-unused-vars\r\n const check = '';\r\n }\r\n return null;\r\n};\r\n\r\nconst getNavigator = (workerData) => [\r\n getDeviceMemory('deviceMemory', workerData.deviceMemory),\r\n getHardwareConcurrency('hardwareConcurrency', workerData.hardwareConcurrency),\r\n getMaxTouchPoints('maxTouchPoints'),\r\n getPlatform('platform', workerData.platform),\r\n getUserAgent('userAgent', workerData.userAgent),\r\n getAppVersion('appVersion', workerData.appVersion),\r\n getLanguage('language', workerData.language),\r\n getLanguages('languages', workerData.languages),\r\n getCookieEnabled('cookieEnabled'),\r\n getDoNotTrack('doNotTrack'),\r\n getWebDriver('webdriver'),\r\n getPlugins('plugins'),\r\n getVendor('vendor'),\r\n];\r\n\r\nexport default getNavigator;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport getNavigator from '../utils/navigator';\r\n\r\nconst NavigatorBlock = ({ workerData }) => (\r\n \r\n

Navigator

\r\n
\r\n

\r\n Explanation: The Navigator interface exposes info about your\r\n computer.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default NavigatorBlock;\r\n","import axios from 'axios';\r\nimport md5 from 'crypto-js/md5';\r\n\r\nexport { getSignature, postSignature, getHash, getFingerprint };\r\n\r\nconst getSignature = (hash, setSignature, setload) => {\r\n axios\r\n .get(`https://api.vytal.io/fingerprint/?hash=${hash}`)\r\n .then((response) => {\r\n if (response.data.length !== 0) {\r\n setSignature(response.data[response.data.length - 1].name);\r\n }\r\n setload(true);\r\n });\r\n};\r\n\r\nconst postSignature = (hash, signature) => {\r\n axios.post('https://api.vytal.io/fingerprint/', {\r\n name: signature,\r\n hash,\r\n });\r\n};\r\n\r\nconst getHash = (data) => md5(JSON.stringify(data)).toString();\r\n\r\nconst getFingerprint = (signature, hash) => [\r\n {\r\n key: 'Signature',\r\n value: signature,\r\n issues: [],\r\n },\r\n {\r\n key: 'Hash',\r\n value: hash,\r\n issues: [],\r\n },\r\n];\r\n","import './FingerprintBlock.css';\r\nimport { useState, useEffect } from 'react';\r\nimport Block from './Block';\r\nimport Table from './Table';\r\nimport {\r\n getSignature,\r\n postSignature,\r\n getHash,\r\n getFingerprint,\r\n} from '../utils/fingerprint';\r\n\r\nconst FingerprintBlock = ({ workerData }) => {\r\n const [signature, setSignature] = useState();\r\n const [load, setload] = useState(false);\r\n const hash = getHash(workerData);\r\n\r\n useEffect(() => {\r\n getSignature(hash, setSignature, setload);\r\n }, []);\r\n\r\n return (\r\n \r\n

Fingerprint

\r\n {load && (\r\n <>\r\n {signature !== undefined ? (\r\n
\r\n
\r\n \r\n ) : (\r\n
\r\n
{hash}
\r\n
\r\n )}\r\n \r\n )}\r\n

\r\n Explanation: This hash is calculated from your device data. Even\r\n if you clear cookies, change your IP or use private mode the hash will\r\n stay the same. Enter a signature and turn on a VPN to test it out.\r\n

\r\n postSignature(hash, e.target[0].value)}>\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FingerprintBlock;\r\n","import UserAgentBlock from './UserAgentBlock';\r\nimport IntlBlock from './IntlBlock';\r\nimport NavigatorBlock from './NavigatorBlock';\r\nimport FingerprintBlock from './FingerprintBlock';\r\n\r\nconst BlocksOne = ({ workerData }) => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default BlocksOne;\r\n","import { checkWebWorker } from './common';\r\n\r\nconst detectTor = () => {\r\n const date = new Date();\r\n if (\r\n navigator.plugins.length === 0 &&\r\n date.getTimezoneOffset() === 0 &&\r\n window.outerWidth === window.screen.availWidth &&\r\n window.outerHeight === window.screen.availHeight\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst checkDatePrototype = () => {\r\n if (!Date.prototype.setDate.toString().includes('[native code]')) {\r\n return 'Failed Date.prototype.setDate.toString()';\r\n }\r\n return null;\r\n};\r\n\r\n// Returns object with location data\r\nconst getOther = (battery, adBlock, workerData) => {\r\n let batteryLevel, batteryStatus;\r\n if (battery !== 'N/A') {\r\n batteryLevel = `${Math.round(battery.level * 100)}%`;\r\n batteryStatus = battery.charging ? 'Charging' : 'Not charging';\r\n }\r\n return [\r\n {\r\n key: 'Brave browser',\r\n code: 'navigator.brave',\r\n value: navigator.brave ? 'True' : 'False',\r\n issues: [],\r\n },\r\n {\r\n key: 'Tor browser',\r\n value: detectTor() ? 'True' : 'False',\r\n issues: [],\r\n },\r\n {\r\n key: 'Adblock',\r\n value: adBlock ? 'True' : 'False',\r\n issues: [],\r\n },\r\n {\r\n key: 'Date',\r\n code: 'new Date().toString()',\r\n value: new Date().toString(),\r\n issues: [checkDatePrototype()],\r\n },\r\n {\r\n key: 'Timezone offset',\r\n code: 'new Date().getTimezoneOffset()',\r\n value: new Date().getTimezoneOffset(),\r\n issues: [\r\n checkDatePrototype(),\r\n checkWebWorker(\r\n new Date().getTimezoneOffset(),\r\n workerData.timezoneOffset\r\n ),\r\n ],\r\n },\r\n {\r\n key: 'Battery level',\r\n value: batteryLevel,\r\n issues: [],\r\n },\r\n {\r\n key: 'Battery status',\r\n value: batteryStatus,\r\n issues: [],\r\n },\r\n ];\r\n};\r\nexport default getOther;\r\n","import { useState, useEffect } from 'react';\r\n\r\nimport Block from './Block';\r\nimport Table from './Table';\r\nimport getOther from '../utils/other';\r\n\r\nconst OtherBlock = ({ workerData }) => {\r\n const [adBlock, setAdBlock] = useState();\r\n const [battery, setBattery] = useState();\r\n\r\n useEffect(() => {\r\n fetch('https://www3.doubleclick.net', {\r\n method: 'HEAD',\r\n mode: 'no-cors',\r\n cache: 'no-store',\r\n })\r\n .then(() => {\r\n setAdBlock(false);\r\n })\r\n .catch(() => {\r\n setAdBlock(true);\r\n });\r\n if ('getBattery' in navigator) {\r\n navigator.getBattery().then((res) => {\r\n setBattery(res);\r\n });\r\n } else {\r\n setBattery('N/A');\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n

Other

\r\n {battery && adBlock !== undefined && (\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default OtherBlock;\r\n","const getWidth = (key) => ({\r\n key: 'Width',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('width'),\r\n checkScreenValue('width'),\r\n checkScreenPrototype('width'),\r\n checkWidth(),\r\n ],\r\n});\r\n\r\nconst getAvailWidth = (key) => ({\r\n key: 'Avail width',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('availWidth'),\r\n checkScreenValue('availWidth'),\r\n checkScreenPrototype('availWidth'),\r\n checkWidth(),\r\n ],\r\n});\r\n\r\nconst getOuterWidth = (key) => ({\r\n key: 'Outer width',\r\n code: `window.${key}`,\r\n value: window[key],\r\n issues: [],\r\n});\r\n\r\nconst getHeight = (key) => ({\r\n key: 'Height',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('height'),\r\n checkScreenValue('height'),\r\n checkScreenPrototype('height'),\r\n ],\r\n});\r\n\r\nconst getAvailHeight = (key) => ({\r\n key: 'Avail height',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('availHeight'),\r\n checkScreenValue('availHeight'),\r\n checkScreenPrototype('availHeight'),\r\n checkHeight(),\r\n ],\r\n});\r\n\r\nconst getOuterHeight = (key) => ({\r\n key: 'Outer height',\r\n code: `window.${key}`,\r\n value: window[key],\r\n issues: [],\r\n});\r\n\r\nconst getPixelDepth = (key) => ({\r\n key: 'Pixel depth',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('pixelDepth'),\r\n checkScreenValue('pixelDepth'),\r\n checkScreenPrototype('pixelDepth'),\r\n ],\r\n});\r\n\r\nconst getColorDepth = (key) => ({\r\n key: 'Color depth',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('colorDepth'),\r\n checkScreenValue('colorDepth'),\r\n checkScreenPrototype('colorDepth'),\r\n ],\r\n});\r\n\r\nconst checkScreenValue = (key) => {\r\n if (\r\n Object.getOwnPropertyDescriptor(Screen.prototype, key).value !== undefined\r\n ) {\r\n return 'Failed descriptor.value undefined';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkScreenPrototype = (key) => {\r\n try {\r\n // eslint-disable-next-line no-unused-vars\r\n const check = Screen.prototype[key];\r\n return 'Failed Navigator.prototype';\r\n } catch (err) {\r\n // eslint-disable-next-line no-unused-vars\r\n const check = '';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkWidth = () => {\r\n if (window.screen.availWidth > window.screen.width) {\r\n return 'Avail width is wider then width';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkHeight = () => {\r\n if (window.screen.availHeight > window.screen.height) {\r\n return 'Avail height is wider then height';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkScreenProperties = (key) => {\r\n if (Object.getOwnPropertyDescriptor(window.screen, key) !== undefined) {\r\n return 'Failed undefined properties';\r\n }\r\n return null;\r\n};\r\n\r\nconst getScreen = () => [\r\n getWidth('width'),\r\n getAvailWidth('availWidth'),\r\n getOuterWidth('outerWidth'),\r\n getHeight('height'),\r\n getAvailHeight('availHeight'),\r\n getOuterHeight('outerHeight'),\r\n getPixelDepth('pixelDepth'),\r\n getColorDepth('colorDepth'),\r\n];\r\n\r\nexport default getScreen;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport getScreen from '../utils/screen';\r\n\r\nconst ScreenBlock = () => (\r\n \r\n

Screen

\r\n
\r\n

\r\n Explanation: The Screen interface exposes info about your computer.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default ScreenBlock;\r\n","export { getMap, getConnection, getLocation };\r\n\r\nconst getMap = (data) =>\r\n `https://maps.googleapis.com/maps/api/staticmap?center=${data.lat},${data.lon}&markers=color:red%7Clabel:%7C${data.lat},${data.lon}&size=500x200&zoom=10&key=AIzaSyB-YN-X8PGBSPd7NOaQu4csVhgJUnF3ZGk`;\r\n\r\nconst compareTimeZone = (locationTimeZone, workerTimeZone) => {\r\n if (locationTimeZone !== workerTimeZone) {\r\n return \"Location data doesn't match system data\";\r\n }\r\n return null;\r\n};\r\n\r\nconst checkProxy = (proxy) => {\r\n if (proxy) {\r\n return 'VPN/proxy has been detected';\r\n }\r\n return null;\r\n};\r\n\r\n// Returns object with location data\r\nconst getLocation = (data, workerData) => {\r\n const timeZoneIssue = compareTimeZone(data.timezone, workerData.timeZone);\r\n const isProxy = checkProxy(data.proxy);\r\n return [\r\n {\r\n key: 'Country',\r\n value: data.country,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Region',\r\n value: data.regionName,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'City',\r\n value: data.city,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Time zone',\r\n value: data.timezone,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Zip code',\r\n value: data.zip,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Latitude',\r\n value: data.lat,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Longitude',\r\n value: data.lon,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n ];\r\n};\r\n\r\n// Returns object with location data\r\nconst getConnection = (data) => {\r\n const isProxy = checkProxy(data.proxy);\r\n return [\r\n {\r\n key: 'IP address',\r\n value: data.query,\r\n issues: [isProxy],\r\n },\r\n {\r\n key: 'ISP',\r\n value: data.isp,\r\n issues: [isProxy],\r\n },\r\n {\r\n key: 'Organization',\r\n value: data.org,\r\n issues: [isProxy],\r\n },\r\n {\r\n key: 'ASN',\r\n value: data.as,\r\n issues: [isProxy],\r\n },\r\n ];\r\n};\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport { getMap, getLocation } from '../utils/connection';\r\n\r\nconst LocationBlock = ({ connectionData, workerData }) => (\r\n \r\n

Location

\r\n \"Map\r\n
\r\n

\r\n Explanation: Your IP address can be used to determine your\r\n location.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default LocationBlock;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport { getConnection } from '../utils/connection';\r\n\r\nconst LocationBlock = ({ connectionData }) => (\r\n \r\n

Connection

\r\n
\r\n

\r\n Explanation: Your IP address reveals information about your\r\n connection.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default LocationBlock;\r\n","import OtherBlock from './OtherBlock';\r\nimport ScreenBlock from './ScreenBlock';\r\nimport LocationBlock from './LocationBlock';\r\nimport ConnectionBlock from './ConnectionBlock';\r\n\r\nconst BlocksTwo = ({ workerData, connectionData }) => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default BlocksTwo;\r\n","import { useState, useEffect } from 'react';\r\nimport BlocksOne from './BlocksOne';\r\nimport BlocksTwo from './BlocksTwo';\r\n// import FontsBlock from './FontsBlock';\r\nimport { fetchAPI, getWebWorker } from '../utils/common';\r\nimport './Blocks.css';\r\n\r\nconst Blocks = () => {\r\n const [workerData, setWorkerData] = useState();\r\n const [connectionData, setConnectionData] = useState('');\r\n\r\n useEffect(() => {\r\n getWebWorker().onmessage = (event) => {\r\n setWorkerData(event.data);\r\n fetchAPI(setConnectionData);\r\n };\r\n }, []);\r\n return (\r\n <>\r\n {connectionData ? (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n ) : (\r\n
\r\n
Loading...
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Blocks;\r\n","import './MainColumn.css';\r\nimport Logo from './Logo';\r\nimport Blocks from './Blocks';\r\n\r\nconst MainColumn = () => (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n);\r\nexport default MainColumn;\r\n","import Github from './Github';\r\nimport MainColumn from './MainColumn';\r\nimport './App.css';\r\n\r\nconst App = () => (\r\n
\r\n \r\n
\r\n \r\n
\r\n);\r\n\r\nexport default App;\r\n","/* eslint-disable */\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './components/App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.03a7b03b.chunk.js b/static/js/main.e7ca5764.chunk.js similarity index 64% rename from static/js/main.03a7b03b.chunk.js rename to static/js/main.e7ca5764.chunk.js index ab3ac94..5d217f0 100644 --- a/static/js/main.03a7b03b.chunk.js +++ b/static/js/main.e7ca5764.chunk.js @@ -1,2 +1,2 @@ -(this.webpackJsonpvytal=this.webpackJsonpvytal||[]).push([[0],{131:function(e,t,n){},134:function(e,t,n){},135:function(e,t,n){},136:function(e,t,n){},137:function(e,t,n){},149:function(e,t,n){},172:function(e,t){},174:function(e,t){},184:function(e,t){},186:function(e,t){},213:function(e,t){},214:function(e,t){},219:function(e,t){},221:function(e,t){},228:function(e,t){},247:function(e,t){},263:function(e,t,n){},264:function(e,t,n){},265:function(e,t,n){"use strict";n.r(t);var r=n(1),a=n.n(r),o=n(57),c=n.n(o),i=(n(131),n(126)),s=n(0),l=function(){return Object(s.jsx)("div",{className:"gitHubButton",children:Object(s.jsx)(i.a,{href:"https://github.com/z0ccc/Vytal","data-color-scheme":"no-preference: light; light: light; dark: light;","aria-label":"Star z0ccc/Vytal on GitHub",children:"Star"})})};n(134),n(135);function u(){return(u=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var h=r.createElement("g",{fill:"#fff",stroke:"none",transform:"matrix(.1 0 0 -.1 0 1056)"},r.createElement("path",{d:"M4890 10554c-19-2-102-11-185-20-814-84-1627-377-2332-841-666-437-1242-1047-1652-1748-345-590-582-1279-670-1950-34-261-44-422-44-710 0-388 28-679 99-1035C523 2160 2153 526 4240 106c360-73 640-99 1040-99 488 0 847 44 1305 160 665 168 1310 477 1860 891 1004 754 1703 1833 1983 3062 146 636 168 1351 61 2010-273 1699-1362 3160-2913 3911-540 261-1091 420-1716 495-100 12-240 17-535 19-220 2-416 1-435-1zm870-978c947-115 1772-494 2460-1130 303-281 615-672 815-1025 491-866 669-1875 504-2861-113-681-390-1322-814-1885-233-310-552-627-869-862-1529-1139-3637-1136-5161 7-391 294-746 669-1012 1070-367 553-599 1170-683 1814-113 869 22 1705 399 2472 103 210 151 294 287 499 316 476 726 886 1199 1199 340 225 629 368 999 495 349 120 681 187 1106 225 112 10 641-3 770-18z"}),r.createElement("path",{d:"M5045 8784c-729-59-1353-298-1925-740-149-114-480-445-594-594-405-524-638-1090-722-1755-22-172-25-595-6-760 86-742 352-1362 822-1916 176-207 457-462 565-513 153-73 342-56 483 44 140 98 210 245 199 420-9 156-62 251-211 377-479 408-770 907-876 1504-31 174-39 528-16 719 93 759 503 1435 1121 1847 275 183 609 315 946 372 442 76 912 34 1329-116 593-214 1089-664 1375-1248 194-396 270-726 270-1165-1-320-34-522-135-815-143-414-360-722-786-1116-311-287-141-788 284-834 71-8 180 13 256 51 97 47 353 285 519 482 474 563 751 1223 818 1954 17 188 6 625-19 798-99 656-347 1220-760 1730-118 144-361 385-514 507-520 416-1102 662-1770 748-118 16-543 28-653 19z"}),r.createElement("path",{d:"M5175 6514c-92-14-198-39-260-61-458-165-766-607-768-1103-1-309 89-544 306-792 141-160 207-284 259-481 21-80 22-101 27-972l6-890 24-60c79-199 237-332 440-372 282-56 561 117 657 407 17 51 19 120 24 935 6 867 6 881 28 958 51 183 137 343 254 474 207 230 308 486 308 782 0 328-118 612-349 842-171 170-340 263-576 314-69 16-321 28-380 19z"}),r.createElement("path",{d:"M39255 8795c-156-35-252-89-375-214-79-79-103-111-137-181-23-47-50-112-60-145-17-57-18-203-21-2915-2-2552-1-2863 13-2933 31-154 97-272 219-392 93-91 176-144 291-183l80-27 1972-3c2216-3 2045-8 2213 74 82 41 109 61 196 148s107 114 147 196c56 113 77 207 77 338-1 222-69 380-232 538-87 85-141 122-228 159-131 55-109 54-1270 57-591 2-1274 4-1517 6l-443 2-2 2433-3 2432-23 73c-86 279-301 480-574 536-92 19-240 20-323 1z"}),r.createElement("path",{d:"M12765 8744c-101-17-243-74-332-136-160-109-287-325-313-531-10-84-2-193 21-280 9-37 516-1310 1838-4620 424-1062 439-1096 540-1209 63-71 201-159 301-192 130-43 243-53 364-32 163 27 276 83 399 196 130 120 126 111 585 1263 231 578 735 1842 1120 2807 530 1328 705 1776 718 1840 59 295-87 628-344 784-226 137-480 151-719 41-147-68-257-165-333-294-21-36-377-914-790-1950l-753-1884-756 1890c-416 1039-772 1916-791 1949-48 81-170 202-255 252-114 67-240 104-365 107-58 2-118 1-135-1z"}),r.createElement("path",{d:"M26688 8740c-304-52-566-312-619-614-18-104-7-273 24-369 75-231 263-414 512-498l70-24 792-3 793-3 2-2442 3-2442 23-70c87-258 284-451 528-516 108-29 287-29 396-1 270 72 486 299 544 571 11 55 14 457 14 2484v2417h753c474 0 776 4 816 11 164 26 285 91 416 223 151 152 214 307 215 523 0 116-11 179-47 277-66 176-234 350-413 426-140 59 58 54-2465 56-1270 1-2331-2-2357-6z"}),r.createElement("path",{d:"M34355 8735c-232-43-433-192-538-402-33-64-2231-5575-2255-5652-13-42-17-90-17-196 1-131 3-146 32-227 78-220 214-370 416-455 112-47 194-64 307-65 143 0 264 32 382 103 119 70 223 181 285 304 12 22 357 879 768 1905s750 1868 754 1872c3 4 339-826 745-1845 406-1018 755-1885 775-1925 133-274 456-451 752-413 109 14 155 29 279 88 79 38 107 59 180 132 71 71 94 103 133 181 89 180 112 363 68 530-22 86-2217 5595-2263 5682-150 281-487 442-803 383z"}),r.createElement("path",{d:"M19760 8661c-129-35-236-96-337-194-264-253-298-670-80-966 23-31 467-625 987-1321l945-1265 5-1255 5-1255 24-70c65-194 179-338 343-437 106-63 202-90 343-95 153-6 238 11 364 73 169 83 316 254 379 441l27 78 5 1250 5 1250 1021 1280c561 704 1039 1305 1062 1335 94 127 137 261 135 430-2 240-95 431-283 581-141 113-312 167-495 156-199-13-348-76-478-205-29-28-421-512-872-1075l-819-1025-763 1018c-419 561-781 1040-805 1066-133 145-329 224-548 223-68 0-128-6-170-18z"}));function j(e,t){var n=e.title,a=e.titleId,o=d(e,["title","titleId"]);return r.createElement("svg",u({xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 4389 1056",ref:t,"aria-labelledby":a},o),n?r.createElement("title",{id:a},n):null,h)}var v=r.forwardRef(j),b=(n.p,function(){return Object(s.jsx)("div",{className:"logoWrap",children:Object(s.jsx)("a",{href:"/",className:"logo",alt:"Vytal logo",children:Object(s.jsx)(v,{})})})}),f=n(11),g=function(e){var t=e.children;return Object(s.jsx)("div",{className:"contentBlock",children:t})},p=(n(136),n(137),n(58)),O=n.n(p);function m(){return(m=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var y=r.createElement("g",{fill:"#f4c1c6"},r.createElement("path",{d:"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"}));function x(e,t){var n=e.title,a=e.titleId,o=w(e,["title","titleId"]);return r.createElement("svg",m({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",ref:t,"aria-labelledby":a},o),n?r.createElement("title",{id:a},n):null,y)}var k=r.forwardRef(x);n.p;function D(){return(D=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var E=r.createElement("g",{fill:"#c3e6cb"},r.createElement("path",{d:"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"}));function S(e,t){var n=e.title,a=e.titleId,o=N(e,["title","titleId"]);return r.createElement("svg",D({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",ref:t,"aria-labelledby":a},o),n?r.createElement("title",{id:a},n):null,E)}var z=r.forwardRef(S);n.p;function I(){return(I=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var T=r.createElement("path",{d:"M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"});function B(e,t){var n=e.title,a=e.titleId,o=P(e,["title","titleId"]);return r.createElement("svg",I({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 320 512",ref:t,"aria-labelledby":a},o),n?r.createElement("title",{id:a},n):null,T)}var F=r.forwardRef(B),A=(n.p,{content:{top:"50%",left:"50%",right:"auto",bottom:"auto",marginRight:"-50%",transform:"translate(-50%, -50%)",padding:"18px",border:"1px solid var(--border)",borderRadius:"6px"}});O.a.setAppElement("#root");var M=function(e){var t=e.item,n=0!==t.issues.filter(Boolean).length,a=Object(r.useState)(!1),o=Object(f.a)(a,2),c=o[0],i=o[1],l=function(){i(!1)};return Object(s.jsxs)(s.Fragment,{children:[Object(s.jsxs)("tr",{className:n?"issue":"",onClick:function(){n&&i(!0)},children:[Object(s.jsx)("td",{children:t.key}),Object(s.jsx)("td",{children:t.value||"N/A"}),Object(s.jsx)("td",{children:n?Object(s.jsx)(k,{className:"circleButton"}):Object(s.jsx)(z,{className:"circleButton"})})]}),Object(s.jsxs)(O.a,{isOpen:c,onRequestClose:l,style:A,contentLabel:"Issues Modal",children:[Object(s.jsxs)("div",{className:"modalHeader",children:[Object(s.jsxs)("div",{className:"modalTitle",children:[t.key," issues"]}),Object(s.jsx)(F,{className:"closeButton",onClick:l})]}),Object(s.jsx)("ul",{children:t.issues.filter(Boolean).map((function(e,t){return Object(s.jsx)("li",{children:e},t)}))})]})]})},R=function(e){var t=e.data;return Object(s.jsx)("div",{className:"tableWrap",children:Object(s.jsx)("table",{children:t.map((function(e){return Object(s.jsx)("tbody",{title:e.code,children:Object(s.jsx)(M,{item:e})},e.key)}))})})},L=n(59),W=n.n(L),H=function(e,t){return"".concat(e)!=="".concat(t)?"Did not match web worker (".concat(t,")"):null},C=function(e,t,n){return{key:e,value:t||"N/A",issues:[H(t,n)]}},V=function(e){var t=W.a.parse(navigator.userAgent),n=W.a.parse(e);return[C("Browser",t.browser.name,n.browser.name),C("Browser version",t.browser.version,n.browser.version),C("OS",t.os.name,n.os.name),C("OS version",t.os.versionName,n.os.versionName),C("Engine",t.engine.name,n.engine.name),C("Engine version",t.engine.version,n.engine.version),C("Platform type",t.platform.type,n.platform.type)]},_=function(e){var t=e.workerAgent;return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"User Agent"}),Object(s.jsx)(R,{data:V(t)}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," Your user agent can be parsed to determine information about your browser or operating system."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about user agent",href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent",children:"Read more"})]})]})},U=function(e){return[(n=e.locale,{key:"Locale",code:"Intl.DateTimeFormat().resolvedOptions().locale",value:Intl.DateTimeFormat().resolvedOptions().locale,issues:[H(Intl.DateTimeFormat().resolvedOptions().locale,n)]}),(t=e.timeZone,{key:"Timezone",code:"Intl.DateTimeFormat().resolvedOptions().timeZone",value:Intl.DateTimeFormat().resolvedOptions().timeZone,issues:[H(Intl.DateTimeFormat().resolvedOptions().timeZone,t)]})];var t,n},Z=function(e){var t=e.workerData;return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"Intl"}),Object(s.jsx)(R,{data:U(t)}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," The Intl object exposes info about your computer."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about intl",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl",children:"Read more"})]})]})},J=function(e,t){return{key:"Hardware concurrency",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},Y=function(e){return{key:"Max touch points",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e)]}},G=function(e,t){return{key:"Platform",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},q=function(e,t){return{key:"User agent",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},Q=function(e,t){return{key:"App version",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},X=function(e,t){return{key:"Language",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},$=function(e,t){return{key:"Languages",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},K=function(e){return{key:"Cookie enabled",code:"navigator.".concat(e),value:navigator[e]?"True":"False",issues:[oe(e),ce(e),ie(e)]}},ee=function(e){return{key:"Do not track",code:"navigator.".concat(e),value:navigator[e]?"True":"False",issues:[oe(e),ce(e),ie(e)]}},te=function(e){return{key:"Web driver",code:"navigator.".concat(e),value:navigator[e]?"True":"False",issues:[oe(e),ce(e),ie(e)]}},ne=function(e){return{key:"Plugins",code:"navigator.".concat(e),value:ae(navigator[e]),issues:[oe(e),ce(e),ie(e)]}},re=function(e){return{key:"Vendor",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e)]}},ae=function(e){for(var t=e.length,n="",r=0;rwindow.screen.width?"Avail width is wider then width":null},Pe=function(){return window.screen.availHeight>window.screen.height?"Avail height is wider then height":null},Te=function(e){return void 0!==Object.getOwnPropertyDescriptor(window.screen,e)?"Failed undefined properties":null},Be=function(){return[(e="width",{key:"Width",code:"window.screen.".concat(e),value:window.screen[e],issues:[Te("width"),Se("width"),ze("width"),Ie()]}),we("availWidth"),ye("outerWidth"),xe("height"),ke("availHeight"),De("outerHeight"),Ne("pixelDepth"),Ee("colorDepth")];var e},Fe=function(){return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"Screen"}),Object(s.jsx)(R,{data:Be()}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," The Screen interface exposes info about your computer."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about screen",href:"https://developer.mozilla.org/en-US/docs/Web/API/Screen",children:"Read more"})]})]})},Ae=function(e){return e?"VPN/proxy has been detected":null},Me=function(e,t){var n,r,a=(n=e.timezone,r=t.timeZone,n!==r?"Location data doesn't match system data":null),o=Ae(e.proxy);return[{key:"Country",value:e.country,issues:[a,o]},{key:"Region",value:e.regionName,issues:[a,o]},{key:"City",value:e.city,issues:[a,o]},{key:"Time zone",value:e.timezone,issues:[a,o]},{key:"Zip code",value:e.zip,issues:[a,o]},{key:"Latitude",value:e.lat,issues:[a,o]},{key:"Longitude",value:e.lon,issues:[a,o]}]},Re=function(e){var t=Ae(e.proxy);return[{key:"IP address",value:e.query,issues:[t]},{key:"ISP",value:e.isp,issues:[t]},{key:"Organization",value:e.org,issues:[t]},{key:"ASN",value:e.as,issues:[t]}]},Le=function(e){var t,n=e.connectionData,r=e.workerData;return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"Location"}),Object(s.jsx)("img",{src:(t=n,"https://maps.googleapis.com/maps/api/staticmap?center=".concat(t.lat,",").concat(t.lon,"&markers=color:red%7Clabel:%7C").concat(t.lat,",").concat(t.lon,"&size=500x200&zoom=10&key=AIzaSyB-YN-X8PGBSPd7NOaQu4csVhgJUnF3ZGk")),alt:"Map of current location"}),Object(s.jsx)(R,{data:Me(n,r)}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," Your IP address can be used to determine your location."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about ip location",href:"https://en.wikipedia.org/wiki/IP_address",children:"Read more"})]})]})},We=function(e){var t=e.connectionData;return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"Connection"}),Object(s.jsx)(R,{data:Re(t)}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," Your IP address reveals information about your connection."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about ip connection",href:"https://en.wikipedia.org/wiki/IP_address",children:"Read more"})]})]})},He=function(e){var t=e.workerData,n=e.connectionData;return Object(s.jsxs)(s.Fragment,{children:[Object(s.jsx)(Le,{workerData:t,connectionData:n}),Object(s.jsx)(We,{workerData:t,connectionData:n}),Object(s.jsx)(Fe,{}),Object(s.jsx)(me,{workerData:t})]})},Ce=(n(263),function(){var e=Object(r.useState)(),t=Object(f.a)(e,2),n=t[0],a=t[1],o=Object(r.useState)(""),c=Object(f.a)(o,2),i=c[0],l=c[1];return Object(r.useEffect)((function(){(function(){var e;return"undefined"===typeof e&&(e=new Worker("worker.js")),e}()).onmessage=function(e){var t;a(e.data),t=l,fetch("https://api.vytal.io/ip/").then((function(e){return e.json()})).then((function(e){t(e)}))}}),[]),Object(s.jsx)(s.Fragment,{children:i?Object(s.jsxs)(s.Fragment,{children:[Object(s.jsx)("div",{className:"centerBlockInner",children:Object(s.jsx)(fe,{workerData:n})}),Object(s.jsx)("div",{className:"centerBlockInner",children:Object(s.jsx)(He,{workerData:n,connectionData:i})}),Object(s.jsxs)("div",{className:"centerBlockMobile",children:[Object(s.jsx)(fe,{workerData:n}),Object(s.jsx)(He,{workerData:n,connectionData:i})]})]}):Object(s.jsx)("div",{className:"contentBlock loadBlock",children:Object(s.jsx)("center",{children:"Loading..."})})})}),Ve=function(){return Object(s.jsxs)(s.Fragment,{children:[Object(s.jsx)(b,{}),Object(s.jsx)("div",{className:"centerBlockOuter",children:Object(s.jsx)(Ce,{})})]})},_e=(n(264),function(){return Object(s.jsxs)("div",{className:"App",children:[Object(s.jsx)(l,{}),Object(s.jsx)("div",{className:"background"}),Object(s.jsx)(Ve,{})]})});Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));c.a.render(Object(s.jsx)(a.a.StrictMode,{children:Object(s.jsx)(_e,{})}),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){console.error(e.message)}))}},[[265,1,2]]]); -//# sourceMappingURL=main.03a7b03b.chunk.js.map \ No newline at end of file +(this.webpackJsonpvytal=this.webpackJsonpvytal||[]).push([[0],{131:function(e,t,n){},134:function(e,t,n){},135:function(e,t,n){},136:function(e,t,n){},137:function(e,t,n){},149:function(e,t,n){},172:function(e,t){},174:function(e,t){},184:function(e,t){},186:function(e,t){},213:function(e,t){},214:function(e,t){},219:function(e,t){},221:function(e,t){},228:function(e,t){},247:function(e,t){},263:function(e,t,n){},264:function(e,t,n){},265:function(e,t,n){"use strict";n.r(t);var r=n(1),a=n.n(r),o=n(57),c=n.n(o),i=(n(131),n(126)),s=n(0),l=function(){return Object(s.jsx)("div",{className:"gitHubButton",children:Object(s.jsx)(i.a,{href:"https://github.com/z0ccc/Vytal","data-color-scheme":"no-preference: light; light: light; dark: light;","aria-label":"Star z0ccc/Vytal on GitHub",children:"Star"})})};n(134),n(135);function u(){return(u=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var h=r.createElement("g",{fill:"#fff",stroke:"none",transform:"matrix(.1 0 0 -.1 0 1056)"},r.createElement("path",{d:"M4890 10554c-19-2-102-11-185-20-814-84-1627-377-2332-841-666-437-1242-1047-1652-1748-345-590-582-1279-670-1950-34-261-44-422-44-710 0-388 28-679 99-1035C523 2160 2153 526 4240 106c360-73 640-99 1040-99 488 0 847 44 1305 160 665 168 1310 477 1860 891 1004 754 1703 1833 1983 3062 146 636 168 1351 61 2010-273 1699-1362 3160-2913 3911-540 261-1091 420-1716 495-100 12-240 17-535 19-220 2-416 1-435-1zm870-978c947-115 1772-494 2460-1130 303-281 615-672 815-1025 491-866 669-1875 504-2861-113-681-390-1322-814-1885-233-310-552-627-869-862-1529-1139-3637-1136-5161 7-391 294-746 669-1012 1070-367 553-599 1170-683 1814-113 869 22 1705 399 2472 103 210 151 294 287 499 316 476 726 886 1199 1199 340 225 629 368 999 495 349 120 681 187 1106 225 112 10 641-3 770-18z"}),r.createElement("path",{d:"M5045 8784c-729-59-1353-298-1925-740-149-114-480-445-594-594-405-524-638-1090-722-1755-22-172-25-595-6-760 86-742 352-1362 822-1916 176-207 457-462 565-513 153-73 342-56 483 44 140 98 210 245 199 420-9 156-62 251-211 377-479 408-770 907-876 1504-31 174-39 528-16 719 93 759 503 1435 1121 1847 275 183 609 315 946 372 442 76 912 34 1329-116 593-214 1089-664 1375-1248 194-396 270-726 270-1165-1-320-34-522-135-815-143-414-360-722-786-1116-311-287-141-788 284-834 71-8 180 13 256 51 97 47 353 285 519 482 474 563 751 1223 818 1954 17 188 6 625-19 798-99 656-347 1220-760 1730-118 144-361 385-514 507-520 416-1102 662-1770 748-118 16-543 28-653 19z"}),r.createElement("path",{d:"M5175 6514c-92-14-198-39-260-61-458-165-766-607-768-1103-1-309 89-544 306-792 141-160 207-284 259-481 21-80 22-101 27-972l6-890 24-60c79-199 237-332 440-372 282-56 561 117 657 407 17 51 19 120 24 935 6 867 6 881 28 958 51 183 137 343 254 474 207 230 308 486 308 782 0 328-118 612-349 842-171 170-340 263-576 314-69 16-321 28-380 19z"}),r.createElement("path",{d:"M39255 8795c-156-35-252-89-375-214-79-79-103-111-137-181-23-47-50-112-60-145-17-57-18-203-21-2915-2-2552-1-2863 13-2933 31-154 97-272 219-392 93-91 176-144 291-183l80-27 1972-3c2216-3 2045-8 2213 74 82 41 109 61 196 148s107 114 147 196c56 113 77 207 77 338-1 222-69 380-232 538-87 85-141 122-228 159-131 55-109 54-1270 57-591 2-1274 4-1517 6l-443 2-2 2433-3 2432-23 73c-86 279-301 480-574 536-92 19-240 20-323 1z"}),r.createElement("path",{d:"M12765 8744c-101-17-243-74-332-136-160-109-287-325-313-531-10-84-2-193 21-280 9-37 516-1310 1838-4620 424-1062 439-1096 540-1209 63-71 201-159 301-192 130-43 243-53 364-32 163 27 276 83 399 196 130 120 126 111 585 1263 231 578 735 1842 1120 2807 530 1328 705 1776 718 1840 59 295-87 628-344 784-226 137-480 151-719 41-147-68-257-165-333-294-21-36-377-914-790-1950l-753-1884-756 1890c-416 1039-772 1916-791 1949-48 81-170 202-255 252-114 67-240 104-365 107-58 2-118 1-135-1z"}),r.createElement("path",{d:"M26688 8740c-304-52-566-312-619-614-18-104-7-273 24-369 75-231 263-414 512-498l70-24 792-3 793-3 2-2442 3-2442 23-70c87-258 284-451 528-516 108-29 287-29 396-1 270 72 486 299 544 571 11 55 14 457 14 2484v2417h753c474 0 776 4 816 11 164 26 285 91 416 223 151 152 214 307 215 523 0 116-11 179-47 277-66 176-234 350-413 426-140 59 58 54-2465 56-1270 1-2331-2-2357-6z"}),r.createElement("path",{d:"M34355 8735c-232-43-433-192-538-402-33-64-2231-5575-2255-5652-13-42-17-90-17-196 1-131 3-146 32-227 78-220 214-370 416-455 112-47 194-64 307-65 143 0 264 32 382 103 119 70 223 181 285 304 12 22 357 879 768 1905s750 1868 754 1872c3 4 339-826 745-1845 406-1018 755-1885 775-1925 133-274 456-451 752-413 109 14 155 29 279 88 79 38 107 59 180 132 71 71 94 103 133 181 89 180 112 363 68 530-22 86-2217 5595-2263 5682-150 281-487 442-803 383z"}),r.createElement("path",{d:"M19760 8661c-129-35-236-96-337-194-264-253-298-670-80-966 23-31 467-625 987-1321l945-1265 5-1255 5-1255 24-70c65-194 179-338 343-437 106-63 202-90 343-95 153-6 238 11 364 73 169 83 316 254 379 441l27 78 5 1250 5 1250 1021 1280c561 704 1039 1305 1062 1335 94 127 137 261 135 430-2 240-95 431-283 581-141 113-312 167-495 156-199-13-348-76-478-205-29-28-421-512-872-1075l-819-1025-763 1018c-419 561-781 1040-805 1066-133 145-329 224-548 223-68 0-128-6-170-18z"}));function v(e,t){var n=e.title,a=e.titleId,o=d(e,["title","titleId"]);return r.createElement("svg",u({xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid meet",viewBox:"0 0 4389 1056",ref:t,"aria-labelledby":a},o),n?r.createElement("title",{id:a},n):null,h)}var j=r.forwardRef(v),b=(n.p,function(){return Object(s.jsx)("div",{className:"logoWrap",children:Object(s.jsx)("a",{href:"/",className:"logo",alt:"Vytal logo",children:Object(s.jsx)(j,{})})})}),f=n(11),g=function(e){var t=e.children;return Object(s.jsx)("div",{className:"contentBlock",children:t})},p=(n(136),n(137),n(58)),O=n.n(p);function m(){return(m=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var y=r.createElement("g",{fill:"#f4c1c6"},r.createElement("path",{d:"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"}));function x(e,t){var n=e.title,a=e.titleId,o=w(e,["title","titleId"]);return r.createElement("svg",m({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",ref:t,"aria-labelledby":a},o),n?r.createElement("title",{id:a},n):null,y)}var k=r.forwardRef(x);n.p;function D(){return(D=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var E=r.createElement("g",{fill:"#c3e6cb"},r.createElement("path",{d:"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"}));function S(e,t){var n=e.title,a=e.titleId,o=N(e,["title","titleId"]);return r.createElement("svg",D({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",ref:t,"aria-labelledby":a},o),n?r.createElement("title",{id:a},n):null,E)}var I=r.forwardRef(S);n.p;function P(){return(P=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var T=r.createElement("path",{d:"M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z"});function B(e,t){var n=e.title,a=e.titleId,o=z(e,["title","titleId"]);return r.createElement("svg",P({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 320 512",ref:t,"aria-labelledby":a},o),n?r.createElement("title",{id:a},n):null,T)}var F=r.forwardRef(B),A=(n.p,{content:{top:"50%",left:"50%",right:"auto",bottom:"auto",marginRight:"-50%",transform:"translate(-50%, -50%)",padding:"18px",border:"1px solid var(--border)",borderRadius:"6px"}});O.a.setAppElement("#root");var M=function(e){var t=e.item,n=0!==t.issues.filter(Boolean).length,a=Object(r.useState)(!1),o=Object(f.a)(a,2),c=o[0],i=o[1],l=function(){i(!1)};return Object(s.jsxs)(s.Fragment,{children:[Object(s.jsxs)("tr",{className:n?"issue":"",onClick:function(){n&&i(!0)},children:[Object(s.jsx)("td",{children:t.key}),Object(s.jsx)("td",{children:t.value||"N/A"}),Object(s.jsx)("td",{children:n?Object(s.jsx)(k,{className:"circleButton"}):Object(s.jsx)(I,{className:"circleButton"})})]}),Object(s.jsxs)(O.a,{isOpen:c,onRequestClose:l,style:A,contentLabel:"Issues Modal",children:[Object(s.jsxs)("div",{className:"modalHeader",children:[Object(s.jsxs)("div",{className:"modalTitle",children:[t.key," issues"]}),Object(s.jsx)(F,{className:"closeButton",onClick:l})]}),Object(s.jsx)("ul",{children:t.issues.filter(Boolean).map((function(e,t){return Object(s.jsx)("li",{children:e},t)}))})]})]})},R=function(e){var t=e.data;return Object(s.jsx)("div",{className:"tableWrap",children:Object(s.jsx)("table",{children:t.map((function(e){return Object(s.jsx)("tbody",{title:e.code,children:Object(s.jsx)(M,{item:e})},e.key)}))})})},L=n(59),W=n.n(L),H=function(e,t){return"".concat(e)!=="".concat(t)?"Did not match web worker (".concat(t,")"):null},C=function(e,t,n){return{key:e,value:t||"N/A",issues:[H(t,n)]}},V=function(e){var t=W.a.parse(navigator.userAgent),n=W.a.parse(e);return[C("Browser",t.browser.name,n.browser.name),C("Browser version",t.browser.version,n.browser.version),C("OS",t.os.name,n.os.name),C("OS version",t.os.versionName,n.os.versionName),C("Engine",t.engine.name,n.engine.name),C("Engine version",t.engine.version,n.engine.version),C("Platform type",t.platform.type,n.platform.type)]},_=function(e){var t=e.workerAgent;return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"User Agent"}),Object(s.jsx)(R,{data:V(t)}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," Your user agent can be parsed to determine information about your browser or operating system."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about user agent",href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent",children:"Read more"})]})]})},U=function(e){return[(n=e.locale,{key:"Locale",code:"Intl.DateTimeFormat().resolvedOptions().locale",value:Intl.DateTimeFormat().resolvedOptions().locale,issues:[H(Intl.DateTimeFormat().resolvedOptions().locale,n)]}),(t=e.timeZone,{key:"Timezone",code:"Intl.DateTimeFormat().resolvedOptions().timeZone",value:Intl.DateTimeFormat().resolvedOptions().timeZone,issues:[H(Intl.DateTimeFormat().resolvedOptions().timeZone,t)]})];var t,n},Z=function(e){var t=e.workerData;return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"Intl"}),Object(s.jsx)(R,{data:U(t)}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," The Intl object exposes info about your computer."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about intl",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl",children:"Read more"})]})]})},J=function(e,t){return{key:"Hardware concurrency",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},Y=function(e){return{key:"Max touch points",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e)]}},G=function(e,t){return{key:"Platform",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},q=function(e,t){return{key:"User agent",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},Q=function(e,t){return{key:"App version",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},X=function(e,t){return{key:"Language",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},$=function(e,t){return{key:"Languages",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e),H(navigator[e],t)]}},K=function(e){return{key:"Cookie enabled",code:"navigator.".concat(e),value:navigator[e]?"True":"False",issues:[oe(e),ce(e),ie(e)]}},ee=function(e){return{key:"Do not track",code:"navigator.".concat(e),value:navigator[e]?"True":"False",issues:[oe(e),ce(e),ie(e)]}},te=function(e){return{key:"Web driver",code:"navigator.".concat(e),value:navigator[e]?"True":"False",issues:[oe(e),ce(e),ie(e)]}},ne=function(e){return{key:"Plugins",code:"navigator.".concat(e),value:ae(navigator[e]),issues:[oe(e),ce(e),ie(e)]}},re=function(e){return{key:"Vendor",code:"navigator.".concat(e),value:navigator[e],issues:[oe(e),ce(e),ie(e)]}},ae=function(e){for(var t=e.length,n="",r=0;rwindow.screen.width?"Avail width is wider then width":null},ze=function(){return window.screen.availHeight>window.screen.height?"Avail height is wider then height":null},Te=function(e){return void 0!==Object.getOwnPropertyDescriptor(window.screen,e)?"Failed undefined properties":null},Be=function(){return[(e="width",{key:"Width",code:"window.screen.".concat(e),value:window.screen[e],issues:[Te("width"),Se("width"),Ie("width"),Pe()]}),we("availWidth"),ye("outerWidth"),xe("height"),ke("availHeight"),De("outerHeight"),Ne("pixelDepth"),Ee("colorDepth")];var e},Fe=function(){return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"Screen"}),Object(s.jsx)(R,{data:Be()}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," The Screen interface exposes info about your computer."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about screen",href:"https://developer.mozilla.org/en-US/docs/Web/API/Screen",children:"Read more"})]})]})},Ae=function(e){return e?"VPN/proxy has been detected":null},Me=function(e,t){var n,r,a=(n=e.timezone,r=t.timeZone,n!==r?"Location data doesn't match system data":null),o=Ae(e.proxy);return[{key:"Country",value:e.country,issues:[a,o]},{key:"Region",value:e.regionName,issues:[a,o]},{key:"City",value:e.city,issues:[a,o]},{key:"Time zone",value:e.timezone,issues:[a,o]},{key:"Zip code",value:e.zip,issues:[a,o]},{key:"Latitude",value:e.lat,issues:[a,o]},{key:"Longitude",value:e.lon,issues:[a,o]}]},Re=function(e){var t=Ae(e.proxy);return[{key:"IP address",value:e.query,issues:[t]},{key:"ISP",value:e.isp,issues:[t]},{key:"Org",value:e.org,issues:[t]},{key:"ASN",value:e.as,issues:[t]}]},Le=function(e){var t,n=e.connectionData,r=e.workerData;return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"Location"}),Object(s.jsx)("img",{src:(t=n,"https://maps.googleapis.com/maps/api/staticmap?center=".concat(t.lat,",").concat(t.lon,"&markers=color:red%7Clabel:%7C").concat(t.lat,",").concat(t.lon,"&size=500x200&zoom=10&key=AIzaSyB-YN-X8PGBSPd7NOaQu4csVhgJUnF3ZGk")),alt:"Map of current location"}),Object(s.jsx)(R,{data:Me(n,r)}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," Your IP address can be used to determine your location."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about ip location",href:"https://en.wikipedia.org/wiki/IP_address",children:"Read more"})]})]})},We=function(e){var t=e.connectionData;return Object(s.jsxs)(g,{children:[Object(s.jsx)("h1",{children:"Connection"}),Object(s.jsx)(R,{data:Re(t)}),Object(s.jsxs)("p",{children:[Object(s.jsx)("b",{children:"Explanation:"})," Your IP address reveals information about your connection."," ",Object(s.jsx)("a",{className:"link",target:"_blank",rel:"noreferrer",alt:"Read more about ip connection",href:"https://en.wikipedia.org/wiki/IP_address",children:"Read more"})]})]})},He=function(e){var t=e.workerData,n=e.connectionData;return Object(s.jsxs)(s.Fragment,{children:[Object(s.jsx)(Le,{workerData:t,connectionData:n}),Object(s.jsx)(We,{workerData:t,connectionData:n}),Object(s.jsx)(Fe,{}),Object(s.jsx)(me,{workerData:t})]})},Ce=(n(263),function(){var e=Object(r.useState)(),t=Object(f.a)(e,2),n=t[0],a=t[1],o=Object(r.useState)(""),c=Object(f.a)(o,2),i=c[0],l=c[1];return Object(r.useEffect)((function(){(function(){var e;return"undefined"===typeof e&&(e=new Worker("worker.js")),e}()).onmessage=function(e){var t;a(e.data),t=l,fetch("https://api.vytal.io/ip/").then((function(e){return e.json()})).then((function(e){t(e)}))}}),[]),Object(s.jsx)(s.Fragment,{children:i?Object(s.jsxs)(s.Fragment,{children:[Object(s.jsx)("div",{className:"centerBlockInner",children:Object(s.jsx)(fe,{workerData:n})}),Object(s.jsx)("div",{className:"centerBlockInner",children:Object(s.jsx)(He,{workerData:n,connectionData:i})}),Object(s.jsxs)("div",{className:"centerBlockMobile",children:[Object(s.jsx)(fe,{workerData:n}),Object(s.jsx)(He,{workerData:n,connectionData:i})]})]}):Object(s.jsx)("div",{className:"contentBlock loadBlock",children:Object(s.jsx)("center",{children:"Loading..."})})})}),Ve=function(){return Object(s.jsxs)(s.Fragment,{children:[Object(s.jsx)(b,{}),Object(s.jsx)("div",{className:"centerBlockOuter",children:Object(s.jsx)(Ce,{})})]})},_e=(n(264),function(){return Object(s.jsxs)("div",{className:"App",children:[Object(s.jsx)(l,{}),Object(s.jsx)("div",{className:"background"}),Object(s.jsx)(Ve,{})]})});Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));c.a.render(Object(s.jsx)(a.a.StrictMode,{children:Object(s.jsx)(_e,{})}),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){console.error(e.message)}))}},[[265,1,2]]]); +//# sourceMappingURL=main.e7ca5764.chunk.js.map \ No newline at end of file diff --git a/static/js/main.e7ca5764.chunk.js.map b/static/js/main.e7ca5764.chunk.js.map new file mode 100644 index 0000000..c6d6e06 --- /dev/null +++ b/static/js/main.e7ca5764.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/Github.js","images/logo.svg","components/Logo.js","components/Block.js","images/xCircle.svg","images/checkCircle.svg","images/x.svg","components/TableRow.js","components/Table.js","utils/common.js","utils/userAgent.js","components/UserAgentBlock.js","utils/intl.js","components/IntlBlock.js","utils/navigator.js","components/NavigatorBlock.js","utils/fingerprint.js","components/FingerprintBlock.js","components/BlocksOne.js","utils/other.js","components/OtherBlock.js","utils/screen.js","components/ScreenBlock.js","utils/connection.js","components/LocationBlock.js","components/ConnectionBlock.js","components/BlocksTwo.js","components/Blocks.js","components/MainColumn.js","components/App.js","serviceWorker.js","index.js"],"names":["Github","className","href","data-color-scheme","aria-label","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref2","fill","stroke","transform","d","SvgLogo","_ref","svgRef","title","titleId","props","xmlns","preserveAspectRatio","viewBox","ref","id","ForwardRef","Logo","alt","ContentBlock","children","SvgXCircle","SvgCheckCircle","SvgX","modalStyles","content","top","left","right","bottom","marginRight","padding","border","borderRadius","Modal","setAppElement","TableRow","item","issues","filter","Boolean","useState","modalIsOpen","setIsOpen","closeModal","onClick","value","isOpen","onRequestClose","style","contentLabel","map","ele","index","Table","data","code","checkWebWorker","worker","getUserAgentData","userAgent","workerAgent","getUserAgent","userAgentParsed","Bowser","parse","navigator","workerAgentParsed","browser","name","version","os","versionName","engine","platform","type","UserAgentBlock","Block","rel","getIntl","workerData","locale","Intl","DateTimeFormat","resolvedOptions","timeZone","IntlBlock","getHardwareConcurrency","checkNavigatorProperties","checkNavigatorValue","checkNavigatorPrototype","getMaxTouchPoints","getPlatform","getAppVersion","getLanguage","getLanguages","getCookieEnabled","getDoNotTrack","getWebDriver","getPlugins","sortPlugins","getVendor","list","undefined","getOwnPropertyDescriptor","Navigator","err","getNavigator","deviceMemory","hardwareConcurrency","appVersion","language","languages","NavigatorBlock","getFingerprint","signature","hash","FingerprintBlock","setSignature","load","setload","md5","JSON","stringify","toString","useEffect","axios","get","then","response","getSignature","onSubmit","e","preventDefault","post","postSignature","placeholder","maxLength","BlocksOne","detectTor","date","Date","plugins","getTimezoneOffset","window","outerWidth","screen","availWidth","outerHeight","availHeight","checkDatePrototype","setDate","includes","getOther","battery","adBlock","batteryLevel","batteryStatus","Math","round","level","charging","brave","timezoneOffset","OtherBlock","setAdBlock","setBattery","fetch","method","mode","cache","catch","getBattery","res","getAvailWidth","checkScreenProperties","checkScreenValue","checkScreenPrototype","checkWidth","getOuterWidth","getHeight","getAvailHeight","checkHeight","getOuterHeight","getPixelDepth","getColorDepth","Screen","width","height","getScreen","ScreenBlock","checkProxy","proxy","getLocation","locationTimeZone","workerTimeZone","timeZoneIssue","timezone","isProxy","country","regionName","city","zip","lat","lon","getConnection","query","isp","org","as","LocationBlock","connectionData","src","BlocksTwo","ConnectionBlock","Blocks","setWorkerData","setConnectionData","w","Worker","getWebWorker","onmessage","event","setData","json","MainColumn","App","location","hostname","match","ReactDOM","render","StrictMode","document","getElementById","serviceWorker","ready","registration","unregister","error","console","message"],"mappings":"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","file":"static/js/main.e7ca5764.chunk.js","sourcesContent":["import './GitHub.css';\r\nimport GitHubButton from 'react-github-btn';\r\n\r\nconst Github = () => (\r\n
\r\n \r\n Star\r\n \r\n
\r\n);\r\n\r\nexport default Github;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#fff\",\n stroke: \"none\",\n transform: \"matrix(.1 0 0 -.1 0 1056)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4890 10554c-19-2-102-11-185-20-814-84-1627-377-2332-841-666-437-1242-1047-1652-1748-345-590-582-1279-670-1950-34-261-44-422-44-710 0-388 28-679 99-1035C523 2160 2153 526 4240 106c360-73 640-99 1040-99 488 0 847 44 1305 160 665 168 1310 477 1860 891 1004 754 1703 1833 1983 3062 146 636 168 1351 61 2010-273 1699-1362 3160-2913 3911-540 261-1091 420-1716 495-100 12-240 17-535 19-220 2-416 1-435-1zm870-978c947-115 1772-494 2460-1130 303-281 615-672 815-1025 491-866 669-1875 504-2861-113-681-390-1322-814-1885-233-310-552-627-869-862-1529-1139-3637-1136-5161 7-391 294-746 669-1012 1070-367 553-599 1170-683 1814-113 869 22 1705 399 2472 103 210 151 294 287 499 316 476 726 886 1199 1199 340 225 629 368 999 495 349 120 681 187 1106 225 112 10 641-3 770-18z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5045 8784c-729-59-1353-298-1925-740-149-114-480-445-594-594-405-524-638-1090-722-1755-22-172-25-595-6-760 86-742 352-1362 822-1916 176-207 457-462 565-513 153-73 342-56 483 44 140 98 210 245 199 420-9 156-62 251-211 377-479 408-770 907-876 1504-31 174-39 528-16 719 93 759 503 1435 1121 1847 275 183 609 315 946 372 442 76 912 34 1329-116 593-214 1089-664 1375-1248 194-396 270-726 270-1165-1-320-34-522-135-815-143-414-360-722-786-1116-311-287-141-788 284-834 71-8 180 13 256 51 97 47 353 285 519 482 474 563 751 1223 818 1954 17 188 6 625-19 798-99 656-347 1220-760 1730-118 144-361 385-514 507-520 416-1102 662-1770 748-118 16-543 28-653 19z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5175 6514c-92-14-198-39-260-61-458-165-766-607-768-1103-1-309 89-544 306-792 141-160 207-284 259-481 21-80 22-101 27-972l6-890 24-60c79-199 237-332 440-372 282-56 561 117 657 407 17 51 19 120 24 935 6 867 6 881 28 958 51 183 137 343 254 474 207 230 308 486 308 782 0 328-118 612-349 842-171 170-340 263-576 314-69 16-321 28-380 19z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39255 8795c-156-35-252-89-375-214-79-79-103-111-137-181-23-47-50-112-60-145-17-57-18-203-21-2915-2-2552-1-2863 13-2933 31-154 97-272 219-392 93-91 176-144 291-183l80-27 1972-3c2216-3 2045-8 2213 74 82 41 109 61 196 148s107 114 147 196c56 113 77 207 77 338-1 222-69 380-232 538-87 85-141 122-228 159-131 55-109 54-1270 57-591 2-1274 4-1517 6l-443 2-2 2433-3 2432-23 73c-86 279-301 480-574 536-92 19-240 20-323 1z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12765 8744c-101-17-243-74-332-136-160-109-287-325-313-531-10-84-2-193 21-280 9-37 516-1310 1838-4620 424-1062 439-1096 540-1209 63-71 201-159 301-192 130-43 243-53 364-32 163 27 276 83 399 196 130 120 126 111 585 1263 231 578 735 1842 1120 2807 530 1328 705 1776 718 1840 59 295-87 628-344 784-226 137-480 151-719 41-147-68-257-165-333-294-21-36-377-914-790-1950l-753-1884-756 1890c-416 1039-772 1916-791 1949-48 81-170 202-255 252-114 67-240 104-365 107-58 2-118 1-135-1z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26688 8740c-304-52-566-312-619-614-18-104-7-273 24-369 75-231 263-414 512-498l70-24 792-3 793-3 2-2442 3-2442 23-70c87-258 284-451 528-516 108-29 287-29 396-1 270 72 486 299 544 571 11 55 14 457 14 2484v2417h753c474 0 776 4 816 11 164 26 285 91 416 223 151 152 214 307 215 523 0 116-11 179-47 277-66 176-234 350-413 426-140 59 58 54-2465 56-1270 1-2331-2-2357-6z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34355 8735c-232-43-433-192-538-402-33-64-2231-5575-2255-5652-13-42-17-90-17-196 1-131 3-146 32-227 78-220 214-370 416-455 112-47 194-64 307-65 143 0 264 32 382 103 119 70 223 181 285 304 12 22 357 879 768 1905s750 1868 754 1872c3 4 339-826 745-1845 406-1018 755-1885 775-1925 133-274 456-451 752-413 109 14 155 29 279 88 79 38 107 59 180 132 71 71 94 103 133 181 89 180 112 363 68 530-22 86-2217 5595-2263 5682-150 281-487 442-803 383z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19760 8661c-129-35-236-96-337-194-264-253-298-670-80-966 23-31 467-625 987-1321l945-1265 5-1255 5-1255 24-70c65-194 179-338 343-437 106-63 202-90 343-95 153-6 238 11 364 73 169 83 316 254 379 441l27 78 5 1250 5 1250 1021 1280c561 704 1039 1305 1062 1335 94 127 137 261 135 430-2 240-95 431-283 581-141 113-312 167-495 156-199-13-348-76-478-205-29-28-421-512-872-1075l-819-1025-763 1018c-419 561-781 1040-805 1066-133 145-329 224-548 223-68 0-128-6-170-18z\"\n}));\n\nfunction SvgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n preserveAspectRatio: \"xMidYMid meet\",\n viewBox: \"0 0 4389 1056\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.6b260e90.svg\";\nexport { ForwardRef as ReactComponent };","import './Logo.css';\r\nimport { ReactComponent as LogoImg } from '../images/logo.svg';\r\n\r\nconst Logo = () => (\r\n
\r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport default Logo;\r\n","const ContentBlock = ({ children }) => (\r\n
{children}
\r\n);\r\n\r\nexport default ContentBlock;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#f4c1c6\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"\n}));\n\nfunction SvgXCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgXCircle);\nexport default __webpack_public_path__ + \"static/media/xCircle.660de620.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#c3e6cb\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"\n}));\n\nfunction SvgCheckCircle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckCircle);\nexport default __webpack_public_path__ + \"static/media/checkCircle.7ccef9af.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M207.6 256l107.72-107.72c6.23-6.23 6.23-16.34 0-22.58l-25.03-25.03c-6.23-6.23-16.34-6.23-22.58 0L160 208.4 52.28 100.68c-6.23-6.23-16.34-6.23-22.58 0L4.68 125.7c-6.23 6.23-6.23 16.34 0 22.58L112.4 256 4.68 363.72c-6.23 6.23-6.23 16.34 0 22.58l25.03 25.03c6.23 6.23 16.34 6.23 22.58 0L160 303.6l107.72 107.72c6.23 6.23 16.34 6.23 22.58 0l25.03-25.03c6.23-6.23 6.23-16.34 0-22.58L207.6 256z\"\n});\n\nfunction SvgX(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 320 512\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgX);\nexport default __webpack_public_path__ + \"static/media/x.32a6a29f.svg\";\nexport { ForwardRef as ReactComponent };","import './TableRow.css';\r\nimport Modal from 'react-modal';\r\nimport { useState } from 'react';\r\nimport { ReactComponent as XCircle } from '../images/xCircle.svg';\r\nimport { ReactComponent as CheckCircle } from '../images/checkCircle.svg';\r\nimport { ReactComponent as X } from '../images/x.svg';\r\n\r\nconst modalStyles = {\r\n content: {\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n padding: '18px',\r\n border: '1px solid var(--border)',\r\n borderRadius: '6px',\r\n },\r\n};\r\n\r\nModal.setAppElement('#root');\r\n\r\nconst TableRow = ({ item }) => {\r\n const issues = item.issues.filter(Boolean).length !== 0;\r\n const [modalIsOpen, setIsOpen] = useState(false);\r\n\r\n const openModal = () => {\r\n if (issues) setIsOpen(true);\r\n };\r\n\r\n const closeModal = () => {\r\n setIsOpen(false);\r\n };\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{item.key} issues
\r\n \r\n
\r\n
    \r\n {item.issues.filter(Boolean).map((ele, index) => (\r\n
  • {ele}
  • \r\n ))}\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TableRow;\r\n","import './Table.css';\r\nimport TableRow from './TableRow';\r\n\r\nconst Table = ({ data }) => (\r\n
\r\n
{item.key}{item.value || 'N/A'}\r\n {issues ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n {data.map((item) => (\r\n \r\n \r\n \r\n ))}\r\n
\r\n \r\n);\r\n\r\nexport default Table;\r\n","export { fetchAPI, checkWebWorker, getWebWorker };\r\n\r\n// Gets location values\r\nconst fetchAPI = (setData) => {\r\n fetch('https://api.vytal.io/ip/')\r\n .then((response) => response.json())\r\n .then((json) => {\r\n setData(json);\r\n });\r\n};\r\n\r\nconst checkWebWorker = (key, worker) => {\r\n if (`${key}` !== `${worker}`) {\r\n return `Did not match web worker (${worker})`;\r\n }\r\n return null;\r\n};\r\n\r\nconst getWebWorker = () => {\r\n let w;\r\n if (typeof w === 'undefined') {\r\n w = new Worker('worker.js');\r\n }\r\n return w;\r\n};\r\n","import Bowser from 'bowser';\r\nimport { checkWebWorker } from './common';\r\n\r\nconst getUserAgentData = (key, userAgent, workerAgent) => ({\r\n key,\r\n value: userAgent || 'N/A',\r\n issues: [checkWebWorker(userAgent, workerAgent)],\r\n});\r\n\r\n// Returns object with location data\r\nconst getUserAgent = (workerAgent) => {\r\n const userAgentParsed = Bowser.parse(navigator.userAgent);\r\n const workerAgentParsed = Bowser.parse(workerAgent);\r\n return [\r\n getUserAgentData(\r\n 'Browser',\r\n userAgentParsed.browser.name,\r\n workerAgentParsed.browser.name\r\n ),\r\n getUserAgentData(\r\n 'Browser version',\r\n userAgentParsed.browser.version,\r\n workerAgentParsed.browser.version\r\n ),\r\n getUserAgentData('OS', userAgentParsed.os.name, workerAgentParsed.os.name),\r\n getUserAgentData(\r\n 'OS version',\r\n userAgentParsed.os.versionName,\r\n workerAgentParsed.os.versionName\r\n ),\r\n getUserAgentData(\r\n 'Engine',\r\n userAgentParsed.engine.name,\r\n workerAgentParsed.engine.name\r\n ),\r\n getUserAgentData(\r\n 'Engine version',\r\n userAgentParsed.engine.version,\r\n workerAgentParsed.engine.version\r\n ),\r\n getUserAgentData(\r\n 'Platform type',\r\n userAgentParsed.platform.type,\r\n workerAgentParsed.platform.type\r\n ),\r\n ];\r\n};\r\n\r\nexport default getUserAgent;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport getUserAgent from '../utils/userAgent';\r\n\r\nconst UserAgentBlock = ({ workerAgent }) => (\r\n \r\n

User Agent

\r\n \r\n

\r\n Explanation: Your user agent can be parsed to determine information\r\n about your browser or operating system.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default UserAgentBlock;\r\n","import { checkWebWorker } from './common';\r\n\r\nconst getLocale = (locale) => ({\r\n key: 'Locale',\r\n code: 'Intl.DateTimeFormat().resolvedOptions().locale',\r\n value: Intl.DateTimeFormat().resolvedOptions().locale,\r\n issues: [\r\n checkWebWorker(Intl.DateTimeFormat().resolvedOptions().locale, locale),\r\n ],\r\n});\r\n\r\nconst getTimezone = (timeZone) => ({\r\n key: 'Timezone',\r\n code: 'Intl.DateTimeFormat().resolvedOptions().timeZone',\r\n value: Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n issues: [\r\n checkWebWorker(Intl.DateTimeFormat().resolvedOptions().timeZone, timeZone),\r\n ],\r\n});\r\n\r\nconst getIntl = (workerData) => [\r\n getLocale(workerData.locale),\r\n getTimezone(workerData.timeZone),\r\n];\r\n\r\nexport default getIntl;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport getIntl from '../utils/intl';\r\n\r\nconst IntlBlock = ({ workerData }) => (\r\n \r\n

Intl

\r\n
\r\n

\r\n Explanation: The Intl object exposes info about your computer.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default IntlBlock;\r\n","import { checkWebWorker } from './common';\r\n\r\nconst getDeviceMemory = (key, worker) => ({\r\n key: 'Device memory',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getHardwareConcurrency = (key, worker) => ({\r\n key: 'Hardware concurrency',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getMaxTouchPoints = (key) => ({\r\n key: 'Max touch points',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getPlatform = (key, worker) => ({\r\n key: 'Platform',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getUserAgent = (key, worker) => ({\r\n key: 'User agent',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getAppVersion = (key, worker) => ({\r\n key: 'App version',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getLanguage = (key, worker) => ({\r\n key: 'Language',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getLanguages = (key, worker) => ({\r\n key: 'Languages',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n checkWebWorker(navigator[key], worker),\r\n ],\r\n});\r\n\r\nconst getCookieEnabled = (key) => ({\r\n key: 'Cookie enabled',\r\n code: `navigator.${key}`,\r\n value: navigator[key] ? 'True' : 'False',\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getDoNotTrack = (key) => ({\r\n key: 'Do not track',\r\n code: `navigator.${key}`,\r\n value: navigator[key] ? 'True' : 'False',\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getWebDriver = (key) => ({\r\n key: 'Web driver',\r\n code: `navigator.${key}`,\r\n value: navigator[key] ? 'True' : 'False',\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getPlugins = (key) => ({\r\n key: 'Plugins',\r\n code: `navigator.${key}`,\r\n value: sortPlugins(navigator[key]),\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\nconst getVendor = (key) => ({\r\n key: 'Vendor',\r\n code: `navigator.${key}`,\r\n value: navigator[key],\r\n issues: [\r\n checkNavigatorProperties(key),\r\n checkNavigatorValue(key),\r\n checkNavigatorPrototype(key),\r\n ],\r\n});\r\n\r\n// sorts plugins object into comma separated list\r\nconst sortPlugins = (data) => {\r\n const { length } = data;\r\n\r\n let list = '';\r\n for (let i = 0; i < length; i++) {\r\n if (i !== 0) list += ', ';\r\n list += data[i].name;\r\n }\r\n return list;\r\n};\r\n\r\nconst checkNavigatorProperties = (key) => {\r\n if (Object.getOwnPropertyDescriptor(navigator, key) !== undefined) {\r\n return 'Failed undefined properties';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkNavigatorValue = (key) => {\r\n try {\r\n // eslint-disable-next-line no-unused-vars\r\n const { value } = Object.getOwnPropertyDescriptor(Navigator.prototype, key);\r\n } catch (err) {\r\n return 'Failed Navigator.prototype';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkNavigatorPrototype = (key) => {\r\n try {\r\n // eslint-disable-next-line no-unused-vars\r\n const check = Navigator.prototype[key];\r\n return 'Failed Navigator.prototype';\r\n } catch (err) {\r\n // eslint-disable-next-line no-unused-vars\r\n const check = '';\r\n }\r\n return null;\r\n};\r\n\r\nconst getNavigator = (workerData) => [\r\n getDeviceMemory('deviceMemory', workerData.deviceMemory),\r\n getHardwareConcurrency('hardwareConcurrency', workerData.hardwareConcurrency),\r\n getMaxTouchPoints('maxTouchPoints'),\r\n getPlatform('platform', workerData.platform),\r\n getUserAgent('userAgent', workerData.userAgent),\r\n getAppVersion('appVersion', workerData.appVersion),\r\n getLanguage('language', workerData.language),\r\n getLanguages('languages', workerData.languages),\r\n getCookieEnabled('cookieEnabled'),\r\n getDoNotTrack('doNotTrack'),\r\n getWebDriver('webdriver'),\r\n getPlugins('plugins'),\r\n getVendor('vendor'),\r\n];\r\n\r\nexport default getNavigator;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport getNavigator from '../utils/navigator';\r\n\r\nconst NavigatorBlock = ({ workerData }) => (\r\n \r\n

Navigator

\r\n
\r\n

\r\n Explanation: The Navigator interface exposes info about your\r\n computer.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default NavigatorBlock;\r\n","import axios from 'axios';\r\nimport md5 from 'crypto-js/md5';\r\n\r\nexport { getSignature, postSignature, getHash, getFingerprint };\r\n\r\nconst getSignature = (hash, setSignature, setload) => {\r\n axios\r\n .get(`https://api.vytal.io/fingerprint/?hash=${hash}`)\r\n .then((response) => {\r\n if (response.data.length !== 0) {\r\n setSignature(response.data[response.data.length - 1].name);\r\n }\r\n setload(true);\r\n });\r\n};\r\n\r\nconst postSignature = (hash, e, setSignature) => {\r\n e.preventDefault();\r\n axios.post('https://api.vytal.io/fingerprint/', {\r\n name: e.target[0].value,\r\n hash,\r\n });\r\n setSignature(e.target[0].value);\r\n};\r\n\r\nconst getHash = (data) => md5(JSON.stringify(data)).toString();\r\n\r\nconst getFingerprint = (signature, hash) => [\r\n {\r\n key: 'Signature',\r\n value: signature,\r\n issues: [],\r\n },\r\n {\r\n key: 'Hash',\r\n value: hash,\r\n issues: [],\r\n },\r\n];\r\n","import './FingerprintBlock.css';\r\nimport { useState, useEffect } from 'react';\r\nimport Block from './Block';\r\nimport Table from './Table';\r\nimport {\r\n getSignature,\r\n postSignature,\r\n getHash,\r\n getFingerprint,\r\n} from '../utils/fingerprint';\r\n\r\nconst FingerprintBlock = ({ workerData }) => {\r\n const [signature, setSignature] = useState();\r\n const [load, setload] = useState(false);\r\n const hash = getHash(workerData);\r\n\r\n useEffect(() => {\r\n getSignature(hash, setSignature, setload);\r\n }, []);\r\n\r\n return (\r\n \r\n

Fingerprint

\r\n {load && (\r\n <>\r\n {signature !== undefined ? (\r\n
\r\n
\r\n \r\n ) : (\r\n
\r\n
{hash}
\r\n
\r\n )}\r\n \r\n )}\r\n

\r\n Explanation: This hash is calculated from your device data. Even\r\n if you clear cookies, change your IP or use private mode the hash will\r\n stay the same. Enter a signature and turn on a VPN to test it out.\r\n

\r\n postSignature(hash, e, setSignature)}>\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FingerprintBlock;\r\n","import UserAgentBlock from './UserAgentBlock';\r\nimport IntlBlock from './IntlBlock';\r\nimport NavigatorBlock from './NavigatorBlock';\r\nimport FingerprintBlock from './FingerprintBlock';\r\n\r\nconst BlocksOne = ({ workerData }) => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default BlocksOne;\r\n","import { checkWebWorker } from './common';\r\n\r\nconst detectTor = () => {\r\n const date = new Date();\r\n if (\r\n navigator.plugins.length === 0 &&\r\n date.getTimezoneOffset() === 0 &&\r\n window.outerWidth === window.screen.availWidth &&\r\n window.outerHeight === window.screen.availHeight\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst checkDatePrototype = () => {\r\n if (!Date.prototype.setDate.toString().includes('[native code]')) {\r\n return 'Failed Date.prototype.setDate.toString()';\r\n }\r\n return null;\r\n};\r\n\r\n// Returns object with location data\r\nconst getOther = (battery, adBlock, workerData) => {\r\n let batteryLevel, batteryStatus;\r\n if (battery !== 'N/A') {\r\n batteryLevel = `${Math.round(battery.level * 100)}%`;\r\n batteryStatus = battery.charging ? 'Charging' : 'Not charging';\r\n }\r\n return [\r\n {\r\n key: 'Brave browser',\r\n code: 'navigator.brave',\r\n value: navigator.brave ? 'True' : 'False',\r\n issues: [],\r\n },\r\n {\r\n key: 'Tor browser',\r\n value: detectTor() ? 'True' : 'False',\r\n issues: [],\r\n },\r\n {\r\n key: 'Adblock',\r\n value: adBlock ? 'True' : 'False',\r\n issues: [],\r\n },\r\n {\r\n key: 'Date',\r\n code: 'new Date().toString()',\r\n value: new Date().toString(),\r\n issues: [checkDatePrototype()],\r\n },\r\n {\r\n key: 'Timezone offset',\r\n code: 'new Date().getTimezoneOffset()',\r\n value: new Date().getTimezoneOffset(),\r\n issues: [\r\n checkDatePrototype(),\r\n checkWebWorker(\r\n new Date().getTimezoneOffset(),\r\n workerData.timezoneOffset\r\n ),\r\n ],\r\n },\r\n {\r\n key: 'Battery level',\r\n value: batteryLevel,\r\n issues: [],\r\n },\r\n {\r\n key: 'Battery status',\r\n value: batteryStatus,\r\n issues: [],\r\n },\r\n ];\r\n};\r\nexport default getOther;\r\n","import { useState, useEffect } from 'react';\r\n\r\nimport Block from './Block';\r\nimport Table from './Table';\r\nimport getOther from '../utils/other';\r\n\r\nconst OtherBlock = ({ workerData }) => {\r\n const [adBlock, setAdBlock] = useState();\r\n const [battery, setBattery] = useState();\r\n\r\n useEffect(() => {\r\n fetch('https://www3.doubleclick.net', {\r\n method: 'HEAD',\r\n mode: 'no-cors',\r\n cache: 'no-store',\r\n })\r\n .then(() => {\r\n setAdBlock(false);\r\n })\r\n .catch(() => {\r\n setAdBlock(true);\r\n });\r\n if ('getBattery' in navigator) {\r\n navigator.getBattery().then((res) => {\r\n setBattery(res);\r\n });\r\n } else {\r\n setBattery('N/A');\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n

Other

\r\n {battery && adBlock !== undefined && (\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default OtherBlock;\r\n","const getWidth = (key) => ({\r\n key: 'Width',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('width'),\r\n checkScreenValue('width'),\r\n checkScreenPrototype('width'),\r\n checkWidth(),\r\n ],\r\n});\r\n\r\nconst getAvailWidth = (key) => ({\r\n key: 'Avail width',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('availWidth'),\r\n checkScreenValue('availWidth'),\r\n checkScreenPrototype('availWidth'),\r\n checkWidth(),\r\n ],\r\n});\r\n\r\nconst getOuterWidth = (key) => ({\r\n key: 'Outer width',\r\n code: `window.${key}`,\r\n value: window[key],\r\n issues: [],\r\n});\r\n\r\nconst getHeight = (key) => ({\r\n key: 'Height',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('height'),\r\n checkScreenValue('height'),\r\n checkScreenPrototype('height'),\r\n ],\r\n});\r\n\r\nconst getAvailHeight = (key) => ({\r\n key: 'Avail height',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('availHeight'),\r\n checkScreenValue('availHeight'),\r\n checkScreenPrototype('availHeight'),\r\n checkHeight(),\r\n ],\r\n});\r\n\r\nconst getOuterHeight = (key) => ({\r\n key: 'Outer height',\r\n code: `window.${key}`,\r\n value: window[key],\r\n issues: [],\r\n});\r\n\r\nconst getPixelDepth = (key) => ({\r\n key: 'Pixel depth',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('pixelDepth'),\r\n checkScreenValue('pixelDepth'),\r\n checkScreenPrototype('pixelDepth'),\r\n ],\r\n});\r\n\r\nconst getColorDepth = (key) => ({\r\n key: 'Color depth',\r\n code: `window.screen.${key}`,\r\n value: window.screen[key],\r\n issues: [\r\n checkScreenProperties('colorDepth'),\r\n checkScreenValue('colorDepth'),\r\n checkScreenPrototype('colorDepth'),\r\n ],\r\n});\r\n\r\nconst checkScreenValue = (key) => {\r\n if (\r\n Object.getOwnPropertyDescriptor(Screen.prototype, key).value !== undefined\r\n ) {\r\n return 'Failed descriptor.value undefined';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkScreenPrototype = (key) => {\r\n try {\r\n // eslint-disable-next-line no-unused-vars\r\n const check = Screen.prototype[key];\r\n return 'Failed Navigator.prototype';\r\n } catch (err) {\r\n // eslint-disable-next-line no-unused-vars\r\n const check = '';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkWidth = () => {\r\n if (window.screen.availWidth > window.screen.width) {\r\n return 'Avail width is wider then width';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkHeight = () => {\r\n if (window.screen.availHeight > window.screen.height) {\r\n return 'Avail height is wider then height';\r\n }\r\n return null;\r\n};\r\n\r\nconst checkScreenProperties = (key) => {\r\n if (Object.getOwnPropertyDescriptor(window.screen, key) !== undefined) {\r\n return 'Failed undefined properties';\r\n }\r\n return null;\r\n};\r\n\r\nconst getScreen = () => [\r\n getWidth('width'),\r\n getAvailWidth('availWidth'),\r\n getOuterWidth('outerWidth'),\r\n getHeight('height'),\r\n getAvailHeight('availHeight'),\r\n getOuterHeight('outerHeight'),\r\n getPixelDepth('pixelDepth'),\r\n getColorDepth('colorDepth'),\r\n];\r\n\r\nexport default getScreen;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport getScreen from '../utils/screen';\r\n\r\nconst ScreenBlock = () => (\r\n \r\n

Screen

\r\n
\r\n

\r\n Explanation: The Screen interface exposes info about your computer.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default ScreenBlock;\r\n","export { getMap, getConnection, getLocation };\r\n\r\nconst getMap = (data) =>\r\n `https://maps.googleapis.com/maps/api/staticmap?center=${data.lat},${data.lon}&markers=color:red%7Clabel:%7C${data.lat},${data.lon}&size=500x200&zoom=10&key=AIzaSyB-YN-X8PGBSPd7NOaQu4csVhgJUnF3ZGk`;\r\n\r\nconst compareTimeZone = (locationTimeZone, workerTimeZone) => {\r\n if (locationTimeZone !== workerTimeZone) {\r\n return \"Location data doesn't match system data\";\r\n }\r\n return null;\r\n};\r\n\r\nconst checkProxy = (proxy) => {\r\n if (proxy) {\r\n return 'VPN/proxy has been detected';\r\n }\r\n return null;\r\n};\r\n\r\n// Returns object with location data\r\nconst getLocation = (data, workerData) => {\r\n const timeZoneIssue = compareTimeZone(data.timezone, workerData.timeZone);\r\n const isProxy = checkProxy(data.proxy);\r\n return [\r\n {\r\n key: 'Country',\r\n value: data.country,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Region',\r\n value: data.regionName,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'City',\r\n value: data.city,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Time zone',\r\n value: data.timezone,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Zip code',\r\n value: data.zip,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Latitude',\r\n value: data.lat,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n {\r\n key: 'Longitude',\r\n value: data.lon,\r\n issues: [timeZoneIssue, isProxy],\r\n },\r\n ];\r\n};\r\n\r\n// Returns object with location data\r\nconst getConnection = (data) => {\r\n const isProxy = checkProxy(data.proxy);\r\n return [\r\n {\r\n key: 'IP address',\r\n value: data.query,\r\n issues: [isProxy],\r\n },\r\n {\r\n key: 'ISP',\r\n value: data.isp,\r\n issues: [isProxy],\r\n },\r\n {\r\n key: 'Org',\r\n value: data.org,\r\n issues: [isProxy],\r\n },\r\n {\r\n key: 'ASN',\r\n value: data.as,\r\n issues: [isProxy],\r\n },\r\n ];\r\n};\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport { getMap, getLocation } from '../utils/connection';\r\n\r\nconst LocationBlock = ({ connectionData, workerData }) => (\r\n \r\n

Location

\r\n \"Map\r\n
\r\n

\r\n Explanation: Your IP address can be used to determine your\r\n location.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default LocationBlock;\r\n","import Block from './Block';\r\nimport Table from './Table';\r\nimport { getConnection } from '../utils/connection';\r\n\r\nconst LocationBlock = ({ connectionData }) => (\r\n \r\n

Connection

\r\n
\r\n

\r\n Explanation: Your IP address reveals information about your\r\n connection.{' '}\r\n \r\n Read more\r\n \r\n

\r\n \r\n);\r\n\r\nexport default LocationBlock;\r\n","import OtherBlock from './OtherBlock';\r\nimport ScreenBlock from './ScreenBlock';\r\nimport LocationBlock from './LocationBlock';\r\nimport ConnectionBlock from './ConnectionBlock';\r\n\r\nconst BlocksTwo = ({ workerData, connectionData }) => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default BlocksTwo;\r\n","import { useState, useEffect } from 'react';\r\nimport BlocksOne from './BlocksOne';\r\nimport BlocksTwo from './BlocksTwo';\r\n// import FontsBlock from './FontsBlock';\r\nimport { fetchAPI, getWebWorker } from '../utils/common';\r\nimport './Blocks.css';\r\n\r\nconst Blocks = () => {\r\n const [workerData, setWorkerData] = useState();\r\n const [connectionData, setConnectionData] = useState('');\r\n\r\n useEffect(() => {\r\n getWebWorker().onmessage = (event) => {\r\n setWorkerData(event.data);\r\n fetchAPI(setConnectionData);\r\n };\r\n }, []);\r\n return (\r\n <>\r\n {connectionData ? (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n ) : (\r\n
\r\n
Loading...
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Blocks;\r\n","import './MainColumn.css';\r\nimport Logo from './Logo';\r\nimport Blocks from './Blocks';\r\n\r\nconst MainColumn = () => (\r\n <>\r\n \r\n
\r\n \r\n
\r\n \r\n);\r\nexport default MainColumn;\r\n","import Github from './Github';\r\nimport MainColumn from './MainColumn';\r\nimport './App.css';\r\n\r\nconst App = () => (\r\n
\r\n \r\n
\r\n \r\n
\r\n);\r\n\r\nexport default App;\r\n","/* eslint-disable */\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './components/App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""} \ No newline at end of file