Help
RSS
API
Feed
Maltego
Contact
Domain > glebvasiliev.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
Whois
Property
Value
Email
hostmaster@imena.ua
NameServer
NS4.TENET.UA
Created
2012-11-06 00:00:00
Changed
2015-12-02 00:00:00
Expires
2016-11-06 00:00:00
Registrar
INTERNET INVEST, LTD
DNS Resolutions
Date
IP Address
2025-02-05
81.177.141.250
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Wed, 05 Feb 2025 18:37:42 GMTContent-Type: text/htmlContent-Length: 16419Connection: keep-aliveServer: ApacheLast-Modified: Sat, 06 Jan 2024 19:29:02 GMTETag: 4023-60e4bfa229ce4Accept-Ranges: bytesVary: Accept-Encoding !DOCTYPE html>html xmlnshttp://www.w3.org/1999/xhtml langen xml:langen>head>meta charsetutf-8>meta namegenerator contentquarto-1.3.450>meta nameviewport contentwidthdevice-width, initial-scale1.0, user-scalableyes>title>Gleb Vasiliev/title>style>code{white-space: pre-wrap;}span.smallcaps{font-variant: small-caps;}div.columns{display: flex; gap: min(4vw, 1.5em);}div.column{flex: auto; overflow-x: auto;}div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}ul.task-list{list-style: none;}ul.task-list li inputtypecheckbox { width: 0.8em; margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ vertical-align: middle;}/style>script srcsite_libs/quarto-nav/quarto-nav.js>/script>script srcsite_libs/quarto-nav/headroom.min.js>/script>script srcsite_libs/clipboard/clipboard.min.js>/script>script srcsite_libs/quarto-search/autocomplete.umd.js>/script>script srcsite_libs/quarto-search/fuse.min.js>/script>script srcsite_libs/quarto-search/quarto-search.js>/script>meta namequarto:offset content./>script srcsite_libs/quarto-html/quarto.js>/script>script srcsite_libs/quarto-html/popper.min.js>/script>script srcsite_libs/quarto-html/tippy.umd.min.js>/script>script srcsite_libs/quarto-html/anchor.min.js>/script>link hrefsite_libs/quarto-html/tippy.css relstylesheet>link hrefsite_libs/quarto-html/quarto-syntax-highlighting.css relstylesheet idquarto-text-highlighting-styles>script srcsite_libs/bootstrap/bootstrap.min.js>/script>link hrefsite_libs/bootstrap/bootstrap-icons.css relstylesheet>link hrefsite_libs/bootstrap/bootstrap.min.css relstylesheet idquarto-bootstrap data-modelight>link hrefsite_libs/quarto-contrib/fontawesome6-0.1.0/all.css relstylesheet>link hrefsite_libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css relstylesheet>link hrefsite_libs/quarto-contrib/academicons-1.9.2/all.css relstylesheet>link hrefsite_libs/quarto-contrib/academicons-1.9.2/size.css relstylesheet>script idquarto-search-options typeapplication/json>{ location: navbar, copy-button: false, collapse-after: 3, panel-placement: end, type: overlay, limit: 20, language: { search-no-results-text: No results, search-matching-documents-text: matching documents, search-copy-link-title: Copy link to search, search-hide-matches-text: Hide additional matches, search-more-match-text: more match in this document, search-more-matches-text: more matches in this document, search-clear-button-title: Clear, search-detached-cancel-button-title: Cancel, search-submit-button-title: Submit, search-label: Search }}/script>style>html{ scroll-behavior: smooth; }/style>meta propertyog:title contentGleb Vasiliev>meta propertyog:image contentrbf.ico>meta propertyog:site-name contentGleb Vasiliev>meta nametwitter:title contentGleb Vasiliev>meta nametwitter:image contentrbf.ico>meta nametwitter:card contentsummary_large_image>/head>body classnav-fixed>div idquarto-search-results>/div> header idquarto-header classheadroom fixed-top> nav classnavbar navbar-expand-lg navbar-dark > div classnavbar-container container-fluid> div classnavbar-brand-container> a classnavbar-brand href./index.html> span classnavbar-title>Gleb Vasiliev/span> /a> /div> div idquarto-search class titleSearch>/div> button classnavbar-toggler typebutton data-bs-togglecollapse data-bs-target#navbarCollapse aria-controlsnavbarCollapse aria-expandedfalse aria-labelToggle navigation onclickif (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }> span classnavbar-toggler-icon>/span>/button> div classcollapse navbar-collapse idnavbarCollapse> ul classnavbar-nav navbar-nav-scroll me-auto> li classnav-item> a classnav-link active href./index.html rel target aria-currentpage> span classmenu-text>Home/span>/a> /li> li classnav-item> a classnav-link href./consulting.html rel target> span classmenu-text>Consulting/span>/a> /li> li classnav-item> a classnav-link href./media.html rel target> span classmenu-text>Media Appearances/span>/a> /li> li classnav-item> a classnav-link href./publications.html rel target> span classmenu-text>Research/span>/a> /li> /ul> div classquarto-navbar-tools ms-auto>/div> /div> !-- /navcollapse --> /div> !-- /container-fluid --> /nav>/header>!-- content -->div idquarto-content classquarto-container page-columns page-rows-contents page-layout-article page-navbar>!-- sidebar -->!-- margin-sidebar --> div idquarto-margin-sidebar classsidebar margin-sidebar> /div>!-- main -->main classcontent idquarto-document-content>header idtitle-block-header classquarto-title-block default>div classquarto-title>h1 classtitle>Gleb Vasiliev/h1>/div>div classquarto-title-meta> /div> /header>div classcallout callout-style-default callout-important callout-titled>div classcallout-header d-flex align-content-center>div classcallout-icon-container>i classcallout-icon>/i>/div>div classcallout-title-container flex-fill>Important/div>/div>div classcallout-body-container callout-body>p>img srcrbf.ico classimg-fluid stylewidth:12.0%> MASTER CAUTION! This website is under construction. Errors are everywhere./p>/div>/div>div classgrid>div classg-col-4>p>img srcgleb.jpg classimg-fluid> a hrefmailto:glebvasiliev@glebvasiliev.com>i classfa-solid fa-envelope aria-labelenvelope>/i>/a> a hrefhttps://scholar.google.com/citations?user60_9WkEAAAAJ>i classai ai-google-scholar>/i>/a> a hrefhttps://orcid.org/0000-0003-3529-8102>i classai ai-orcid>/i>/a> a hrefhttps://www.researchgate.net/profile/Gleb-Vasiliev>i classai ai-researchgate>/i>/a>/p>/div>div classg-col-8>p>Hi! I’m Gleb, a researcher and consultant working in the fields at the intersection of sports economics, sports performance, sports psychology, machine learning and operations research (with applications to sports). Besides academic work, I help sports organizations and athletes win on and off the field./p>p>Probably, you may know me as the one who (jointly with my colleagues a hrefhttp://dagaev.com>Dmitry Dagaev/a> and Arseniy Stolyarov) a hrefhttps://www.sport-express.ru/football/rfpl/reviews/kalendar-rpl-kak-sostavlyaetsya-i-kakie-usloviya-uchteny-v-raspisanii-pochemu-spartak-snova-nachinaet-s-sochi-1696060/>scheduled/a> one of the top European soccer leagues, or as the a hrefhttp://galdahokejs.lv/index.php/en/lowcc2018>tablehockey world champion/a>, or even as a (former?!) bassist a hrefhttps://youtu.be/JEuENwLZePc>playing/a> funk, pop, gypsy punk, and indie music :) I thought of, participated in, and led multiple projects in various industries. Apart from sports, I applied cutting-edge data science techniques to real-world banking and waste management problems. I also teach people R, Python, and data science./p>/div>/div>/main> !-- /main -->script idquarto-html-after-body typeapplication/javascript>window.document.addEventListener(DOMContentLoaded, function (event) { const toggleBodyColorMode (bsSheetEl) > { const mode bsSheetEl.getAttribute(data-mode); const bodyEl window.document.querySelector(body); if (mode dark) { bodyEl.classList.add(quarto-dark); bodyEl.classList.remove(quarto-light); } else { bodyEl.classList.add(quarto-light); bodyEl.classList.remove(quarto-dark); } } const toggleBodyColorPrimary () > { const bsSheetEl window.document.querySelector(link#quarto-bootstrap); if (bsSheetEl) { toggleBodyColorMode(bsSheetEl); } } toggleBodyColorPrimary(); const icon ; const anchorJS new window.AnchorJS(); anchorJS.options { placement: right, icon: icon }; anchorJS.add(.anchored); const isCodeAnnotation (el) > { for (const clz of el.classList) { if (clz.startsWith(code-annotation-)) { return true; } } return false; } const clipboard new window.ClipboardJS(.code-copy-button, { text: function(trigger) { const codeEl trigger.previousElementSibling.cloneNode(true); for (const childEl of codeEl.children) { if (isCodeAnnotation(childEl)) { childEl.remove(); } } return codeEl.innerText; } }); clipboard.on(success, function(e) { // button target const button e.trigger; // dont keep focus button.blur(); // flash checked button.classList.add(code-copy-button-checked); var currentTitle button.getAttribute(title); button.setAttribute(title, Copied!); let tooltip; if (window.bootstrap) { button.setAttribute(data-bs-toggle, tooltip); button.setAttribute(data-bs-placement, left); button.setAttribute(data-bs-title, Copied!); tooltip new bootstrap.Tooltip(button, { trigger: manual, customClass: code-copy-button-tooltip, offset: 0, -8}); tooltip.show(); } setTimeout(function() { if (tooltip) { tooltip.hide(); button.removeAttribute(data-bs-title); button.removeAttribute(data-bs-toggle); button.removeAttribute(data-bs-placement); } button.setAttribute(title, currentTitle); button.classList.remove(code-copy-button-checked); }, 1000); // clear code selection e.clearSelection(); }); function tippyHover(el, contentFn) { const config { allowHTML: true, content: contentFn, maxWidth: 500, delay: 100, arrow: false, appendTo: function(el) { return el.parentElement; }, interactive: true, interactiveBorder: 10, theme: quarto, placement: bottom-start }; window.tippy(el, config); } const noterefs window.document.querySelectorAll(aroledoc-noteref); for (var i0; inoterefs.length; i++) { const ref noterefsi; tippyHover(ref, function() { // use id or data attribute instead here let href ref.getAttribute(data-footnote-href) || ref.getAttribute(href); try { href new URL(href).hash; } catch {} const id href.replace(/^#\/?/, ); const note window.document.getElementById(id); return note.innerHTML; }); } let selectedAnnoteEl; const selectorForAnnotation ( cell, annotation) > { let cellAttr data-code-cell + cell + ; let lineAttr data-code-annotation + annotation + ; const selector span + cellAttr + + lineAttr + ; return selector; } const selectCodeLines (annoteEl) > { const doc window.document; const targetCell annoteEl.getAttribute(data-target-cell); const targetAnnotation annoteEl.getAttribute(data-target-annotation); const annoteSpan window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); const lines annoteSpan.getAttribute(data-code-lines).split(,); const lineIds lines.map((line) > { return targetCell + - + line; }) let top null; let height null; let parent null; if (lineIds.length > 0) { //compute the position of the single el (top and bottom and make a div) const el window.document.getElementById(lineIds0); top el.offsetTop; height el.offsetHeight; parent el.parentElement.parentElement; if (lineIds.length > 1) { const lastEl window.document.getElementById(lineIdslineIds.length - 1); const bottom lastEl.offsetTop + lastEl.offsetHeight; height bottom - top; } if (top ! null && height ! null && parent ! null) { // cook up a div (if necessary) and position it let div window.document.getElementById(code-annotation-line-highlight); if (div null) { div window.document.createElement(div); div.setAttribute(id, code-annotation-line-highlight); div.style.position absolute; parent.appendChild(div); } div.style.top top - 2 + px; div.style.height height + 4 + px; let gutterDiv window.document.getElementById(code-annotation-line-highlight-gutter); if (gutterDiv null) { gutterDiv window.document.createElement(div); gutterDiv.setAttribute(id, code-annotation-line-highlight-gutter); gutterDiv.style.position absolute; const codeCell window.document.getElementById(targetCell); const gutter codeCell.querySelector(.code-annotation-gutter); gutter.appendChild(gutterDiv); } gutterDiv.style.top top - 2 + px; gutterDiv.style.height height + 4 + px; } selectedAnnoteEl annoteEl; } }; const unselectCodeLines () > { const elementsIds code-annotation-line-highlight, code-annotation-line-highlight-gutter; elementsIds.forEach((elId) > { const div window.document.getElementById(elId); if (div) { div.remove(); } }); selectedAnnoteEl undefined; }; // Attach click handler to the DT const annoteDls window.document.querySelectorAll(dtdata-target-cell); for (const annoteDlNode of annoteDls) { annoteDlNode.addEventListener(click, (event) > { const clickedEl event.target; if (clickedEl ! selectedAnnoteEl) { unselectCodeLines(); const activeEl window.document.querySelector(dtdata-target-cell.code-annotation-active); if (activeEl) { activeEl.classList.remove(code-annotation-active); } selectCodeLines(clickedEl); clickedEl.classList.add(code-annotation-active); } else { // Unselect the line unselectCodeLines(); clickedEl.classList.remove(code-annotation-active); } }); } const findCites (el) > { const parentEl el.parentElement; if (parentEl) { const cites parentEl.dataset.cites; if (cites) { return { el, cites: cites.split( ) }; } else { return findCites(el.parentElement) } } else { return undefined; } }; var bibliorefs window.document.querySelectorAll(aroledoc-biblioref); for (var i0; ibibliorefs.length; i++) { const ref bibliorefsi; const citeInfo findCites(ref); if (citeInfo) { tippyHover(citeInfo.el, function() { var popup window.document.createElement(div); citeInfo.cites.forEach(function(cite) { var citeDiv window.document.createElement(div); citeDiv.classList.add(hanging-indent); citeDiv.classList.add(csl-entry); var biblioDiv window.document.getElementById(ref- + cite); if (biblioDiv) { citeDiv.innerHTML biblioDiv.innerHTML; } popup.appendChild(citeDiv); }); return popup.innerHTML; }); } }});/script>/div> !-- /content -->script srcsite_libs/quarto-html/zenscroll-min.js>/script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Wed, 05 Feb 2025 18:37:44 GMTContent-Type: text/htmlContent-Length: 16419Connection: keep-aliveServer: ApacheLast-Modified: Sat, 06 Jan 2024 19:29:02 GMTETag: 4023-60e4bfa229ce4Accept-Ranges: bytesVary: Accept-Encoding !DOCTYPE html>html xmlnshttp://www.w3.org/1999/xhtml langen xml:langen>head>meta charsetutf-8>meta namegenerator contentquarto-1.3.450>meta nameviewport contentwidthdevice-width, initial-scale1.0, user-scalableyes>title>Gleb Vasiliev/title>style>code{white-space: pre-wrap;}span.smallcaps{font-variant: small-caps;}div.columns{display: flex; gap: min(4vw, 1.5em);}div.column{flex: auto; overflow-x: auto;}div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}ul.task-list{list-style: none;}ul.task-list li inputtypecheckbox { width: 0.8em; margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ vertical-align: middle;}/style>script srcsite_libs/quarto-nav/quarto-nav.js>/script>script srcsite_libs/quarto-nav/headroom.min.js>/script>script srcsite_libs/clipboard/clipboard.min.js>/script>script srcsite_libs/quarto-search/autocomplete.umd.js>/script>script srcsite_libs/quarto-search/fuse.min.js>/script>script srcsite_libs/quarto-search/quarto-search.js>/script>meta namequarto:offset content./>script srcsite_libs/quarto-html/quarto.js>/script>script srcsite_libs/quarto-html/popper.min.js>/script>script srcsite_libs/quarto-html/tippy.umd.min.js>/script>script srcsite_libs/quarto-html/anchor.min.js>/script>link hrefsite_libs/quarto-html/tippy.css relstylesheet>link hrefsite_libs/quarto-html/quarto-syntax-highlighting.css relstylesheet idquarto-text-highlighting-styles>script srcsite_libs/bootstrap/bootstrap.min.js>/script>link hrefsite_libs/bootstrap/bootstrap-icons.css relstylesheet>link hrefsite_libs/bootstrap/bootstrap.min.css relstylesheet idquarto-bootstrap data-modelight>link hrefsite_libs/quarto-contrib/fontawesome6-0.1.0/all.css relstylesheet>link hrefsite_libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css relstylesheet>link hrefsite_libs/quarto-contrib/academicons-1.9.2/all.css relstylesheet>link hrefsite_libs/quarto-contrib/academicons-1.9.2/size.css relstylesheet>script idquarto-search-options typeapplication/json>{ location: navbar, copy-button: false, collapse-after: 3, panel-placement: end, type: overlay, limit: 20, language: { search-no-results-text: No results, search-matching-documents-text: matching documents, search-copy-link-title: Copy link to search, search-hide-matches-text: Hide additional matches, search-more-match-text: more match in this document, search-more-matches-text: more matches in this document, search-clear-button-title: Clear, search-detached-cancel-button-title: Cancel, search-submit-button-title: Submit, search-label: Search }}/script>style>html{ scroll-behavior: smooth; }/style>meta propertyog:title contentGleb Vasiliev>meta propertyog:image contentrbf.ico>meta propertyog:site-name contentGleb Vasiliev>meta nametwitter:title contentGleb Vasiliev>meta nametwitter:image contentrbf.ico>meta nametwitter:card contentsummary_large_image>/head>body classnav-fixed>div idquarto-search-results>/div> header idquarto-header classheadroom fixed-top> nav classnavbar navbar-expand-lg navbar-dark > div classnavbar-container container-fluid> div classnavbar-brand-container> a classnavbar-brand href./index.html> span classnavbar-title>Gleb Vasiliev/span> /a> /div> div idquarto-search class titleSearch>/div> button classnavbar-toggler typebutton data-bs-togglecollapse data-bs-target#navbarCollapse aria-controlsnavbarCollapse aria-expandedfalse aria-labelToggle navigation onclickif (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }> span classnavbar-toggler-icon>/span>/button> div classcollapse navbar-collapse idnavbarCollapse> ul classnavbar-nav navbar-nav-scroll me-auto> li classnav-item> a classnav-link active href./index.html rel target aria-currentpage> span classmenu-text>Home/span>/a> /li> li classnav-item> a classnav-link href./consulting.html rel target> span classmenu-text>Consulting/span>/a> /li> li classnav-item> a classnav-link href./media.html rel target> span classmenu-text>Media Appearances/span>/a> /li> li classnav-item> a classnav-link href./publications.html rel target> span classmenu-text>Research/span>/a> /li> /ul> div classquarto-navbar-tools ms-auto>/div> /div> !-- /navcollapse --> /div> !-- /container-fluid --> /nav>/header>!-- content -->div idquarto-content classquarto-container page-columns page-rows-contents page-layout-article page-navbar>!-- sidebar -->!-- margin-sidebar --> div idquarto-margin-sidebar classsidebar margin-sidebar> /div>!-- main -->main classcontent idquarto-document-content>header idtitle-block-header classquarto-title-block default>div classquarto-title>h1 classtitle>Gleb Vasiliev/h1>/div>div classquarto-title-meta> /div> /header>div classcallout callout-style-default callout-important callout-titled>div classcallout-header d-flex align-content-center>div classcallout-icon-container>i classcallout-icon>/i>/div>div classcallout-title-container flex-fill>Important/div>/div>div classcallout-body-container callout-body>p>img srcrbf.ico classimg-fluid stylewidth:12.0%> MASTER CAUTION! This website is under construction. Errors are everywhere./p>/div>/div>div classgrid>div classg-col-4>p>img srcgleb.jpg classimg-fluid> a hrefmailto:glebvasiliev@glebvasiliev.com>i classfa-solid fa-envelope aria-labelenvelope>/i>/a> a hrefhttps://scholar.google.com/citations?user60_9WkEAAAAJ>i classai ai-google-scholar>/i>/a> a hrefhttps://orcid.org/0000-0003-3529-8102>i classai ai-orcid>/i>/a> a hrefhttps://www.researchgate.net/profile/Gleb-Vasiliev>i classai ai-researchgate>/i>/a>/p>/div>div classg-col-8>p>Hi! I’m Gleb, a researcher and consultant working in the fields at the intersection of sports economics, sports performance, sports psychology, machine learning and operations research (with applications to sports). Besides academic work, I help sports organizations and athletes win on and off the field./p>p>Probably, you may know me as the one who (jointly with my colleagues a hrefhttp://dagaev.com>Dmitry Dagaev/a> and Arseniy Stolyarov) a hrefhttps://www.sport-express.ru/football/rfpl/reviews/kalendar-rpl-kak-sostavlyaetsya-i-kakie-usloviya-uchteny-v-raspisanii-pochemu-spartak-snova-nachinaet-s-sochi-1696060/>scheduled/a> one of the top European soccer leagues, or as the a hrefhttp://galdahokejs.lv/index.php/en/lowcc2018>tablehockey world champion/a>, or even as a (former?!) bassist a hrefhttps://youtu.be/JEuENwLZePc>playing/a> funk, pop, gypsy punk, and indie music :) I thought of, participated in, and led multiple projects in various industries. Apart from sports, I applied cutting-edge data science techniques to real-world banking and waste management problems. I also teach people R, Python, and data science./p>/div>/div>/main> !-- /main -->script idquarto-html-after-body typeapplication/javascript>window.document.addEventListener(DOMContentLoaded, function (event) { const toggleBodyColorMode (bsSheetEl) > { const mode bsSheetEl.getAttribute(data-mode); const bodyEl window.document.querySelector(body); if (mode dark) { bodyEl.classList.add(quarto-dark); bodyEl.classList.remove(quarto-light); } else { bodyEl.classList.add(quarto-light); bodyEl.classList.remove(quarto-dark); } } const toggleBodyColorPrimary () > { const bsSheetEl window.document.querySelector(link#quarto-bootstrap); if (bsSheetEl) { toggleBodyColorMode(bsSheetEl); } } toggleBodyColorPrimary(); const icon ; const anchorJS new window.AnchorJS(); anchorJS.options { placement: right, icon: icon }; anchorJS.add(.anchored); const isCodeAnnotation (el) > { for (const clz of el.classList) { if (clz.startsWith(code-annotation-)) { return true; } } return false; } const clipboard new window.ClipboardJS(.code-copy-button, { text: function(trigger) { const codeEl trigger.previousElementSibling.cloneNode(true); for (const childEl of codeEl.children) { if (isCodeAnnotation(childEl)) { childEl.remove(); } } return codeEl.innerText; } }); clipboard.on(success, function(e) { // button target const button e.trigger; // dont keep focus button.blur(); // flash checked button.classList.add(code-copy-button-checked); var currentTitle button.getAttribute(title); button.setAttribute(title, Copied!); let tooltip; if (window.bootstrap) { button.setAttribute(data-bs-toggle, tooltip); button.setAttribute(data-bs-placement, left); button.setAttribute(data-bs-title, Copied!); tooltip new bootstrap.Tooltip(button, { trigger: manual, customClass: code-copy-button-tooltip, offset: 0, -8}); tooltip.show(); } setTimeout(function() { if (tooltip) { tooltip.hide(); button.removeAttribute(data-bs-title); button.removeAttribute(data-bs-toggle); button.removeAttribute(data-bs-placement); } button.setAttribute(title, currentTitle); button.classList.remove(code-copy-button-checked); }, 1000); // clear code selection e.clearSelection(); }); function tippyHover(el, contentFn) { const config { allowHTML: true, content: contentFn, maxWidth: 500, delay: 100, arrow: false, appendTo: function(el) { return el.parentElement; }, interactive: true, interactiveBorder: 10, theme: quarto, placement: bottom-start }; window.tippy(el, config); } const noterefs window.document.querySelectorAll(aroledoc-noteref); for (var i0; inoterefs.length; i++) { const ref noterefsi; tippyHover(ref, function() { // use id or data attribute instead here let href ref.getAttribute(data-footnote-href) || ref.getAttribute(href); try { href new URL(href).hash; } catch {} const id href.replace(/^#\/?/, ); const note window.document.getElementById(id); return note.innerHTML; }); } let selectedAnnoteEl; const selectorForAnnotation ( cell, annotation) > { let cellAttr data-code-cell + cell + ; let lineAttr data-code-annotation + annotation + ; const selector span + cellAttr + + lineAttr + ; return selector; } const selectCodeLines (annoteEl) > { const doc window.document; const targetCell annoteEl.getAttribute(data-target-cell); const targetAnnotation annoteEl.getAttribute(data-target-annotation); const annoteSpan window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); const lines annoteSpan.getAttribute(data-code-lines).split(,); const lineIds lines.map((line) > { return targetCell + - + line; }) let top null; let height null; let parent null; if (lineIds.length > 0) { //compute the position of the single el (top and bottom and make a div) const el window.document.getElementById(lineIds0); top el.offsetTop; height el.offsetHeight; parent el.parentElement.parentElement; if (lineIds.length > 1) { const lastEl window.document.getElementById(lineIdslineIds.length - 1); const bottom lastEl.offsetTop + lastEl.offsetHeight; height bottom - top; } if (top ! null && height ! null && parent ! null) { // cook up a div (if necessary) and position it let div window.document.getElementById(code-annotation-line-highlight); if (div null) { div window.document.createElement(div); div.setAttribute(id, code-annotation-line-highlight); div.style.position absolute; parent.appendChild(div); } div.style.top top - 2 + px; div.style.height height + 4 + px; let gutterDiv window.document.getElementById(code-annotation-line-highlight-gutter); if (gutterDiv null) { gutterDiv window.document.createElement(div); gutterDiv.setAttribute(id, code-annotation-line-highlight-gutter); gutterDiv.style.position absolute; const codeCell window.document.getElementById(targetCell); const gutter codeCell.querySelector(.code-annotation-gutter); gutter.appendChild(gutterDiv); } gutterDiv.style.top top - 2 + px; gutterDiv.style.height height + 4 + px; } selectedAnnoteEl annoteEl; } }; const unselectCodeLines () > { const elementsIds code-annotation-line-highlight, code-annotation-line-highlight-gutter; elementsIds.forEach((elId) > { const div window.document.getElementById(elId); if (div) { div.remove(); } }); selectedAnnoteEl undefined; }; // Attach click handler to the DT const annoteDls window.document.querySelectorAll(dtdata-target-cell); for (const annoteDlNode of annoteDls) { annoteDlNode.addEventListener(click, (event) > { const clickedEl event.target; if (clickedEl ! selectedAnnoteEl) { unselectCodeLines(); const activeEl window.document.querySelector(dtdata-target-cell.code-annotation-active); if (activeEl) { activeEl.classList.remove(code-annotation-active); } selectCodeLines(clickedEl); clickedEl.classList.add(code-annotation-active); } else { // Unselect the line unselectCodeLines(); clickedEl.classList.remove(code-annotation-active); } }); } const findCites (el) > { const parentEl el.parentElement; if (parentEl) { const cites parentEl.dataset.cites; if (cites) { return { el, cites: cites.split( ) }; } else { return findCites(el.parentElement) } } else { return undefined; } }; var bibliorefs window.document.querySelectorAll(aroledoc-biblioref); for (var i0; ibibliorefs.length; i++) { const ref bibliorefsi; const citeInfo findCites(ref); if (citeInfo) { tippyHover(citeInfo.el, function() { var popup window.document.createElement(div); citeInfo.cites.forEach(function(cite) { var citeDiv window.document.createElement(div); citeDiv.classList.add(hanging-indent); citeDiv.classList.add(csl-entry); var biblioDiv window.document.getElementById(ref- + cite); if (biblioDiv) { citeDiv.innerHTML biblioDiv.innerHTML; } popup.appendChild(citeDiv); }); return popup.innerHTML; }); } }});/script>/div> !-- /content -->script srcsite_libs/quarto-html/zenscroll-min.js>/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]