1(function ($) { 2 if ("ontouchstart" in window) { 3 document.documentElement.className = document.documentElement.className + " touch-enabled"; 4 } 5 if (navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/i)) { 6 document.documentElement.className = document.documentElement.className + " no-parallax"; 7 } 8 9 // animation frame interval; 10 11 var reqAnimFrame = (function () { 12 return window.requestAnimationFrame || 13 window.webkitRequestAnimationFrame || 14 window.mozRequestAnimationFrame || 15 window.oRequestAnimationFrame || 16 window.msRequestAnimationFrame || function (callback, element) { 17 window.setTimeout(callback, 1000 / 60); 18 }; 19 })(); 20 21 22 window.requestInterval = function (fn, delay, cancelFunction) { 23 if (!window.requestAnimationFrame && 24 !window.webkitRequestAnimationFrame && 25 !(window.mozRequestAnimationFrame && window.mozCancelRequestAnimationFrame) && // Firefox 5 ships without cancel support 26 !window.oRequestAnimationFrame && 27 !window.msRequestAnimationFrame) 28 return window.setInterval(fn, delay); 29 30 var start = new Date().getTime(), 31 handle = {}; 32 33 34 function loop() { 35 var current = new Date().getTime(), 36 delta = current - start; 37 38 if (delta >= delay) { 39 fn.call(); 40 start = new Date().getTime(); 41 } 42 43 handle.value = reqAnimFrame(loop); 44 45 if (delta >= delay && cancelFunction && cancelFunction.call() === true) { 46 clearRequestInterval(handle); 47 } 48 }; 49 50 handle.value = reqAnimFrame(loop); 51 52 53 return handle; 54 }; 55 56 window.clearRequestInterval = function (handle) { 57 window.cancelAnimationFrame ? window.cancelAnimationFrame(handle.value) : 58 window.webkitCancelAnimationFrame ? window.webkitCancelAnimationFrame(handle.value) : 59 window.webkitCancelRequestAnimationFrame ? window.webkitCancelRequestAnimationFrame(handle.value) : /* Support for legacy API */ 60 window.mozCancelRequestAnimationFrame ? window.mozCancelRequestAnimationFrame(handle.value) : 61 window.oCancelRequestAnimationFrame ? window.oCancelRequestAnimationFrame(handle.value) : 62 window.msCancelRequestAnimationFrame ? window.msCancelRequestAnimationFrame(handle.value) : 63 clearInterval(handle); 64 }; 65 66 if (!$.event.special.tap) { 67 68 $.event.special.tap = { 69 setup: function (data, namespaces) { 70 var $elem = $(this); 71 $elem.bind('touchstart', $.event.special.tap.handler) 72 .bind('touchmove', $.event.special.tap.handler) 73 .bind('touchend', $.event.special.tap.handler); 74 }, 75 76 teardown: function (namespaces) { 77 var $elem = $(this); 78 $elem.unbind('touchstart', $.event.special.tap.handler) 79 .unbind('touchmove', $.event.special.tap.handler) 80 .unbind('touchend', $.event.special.tap.handler); 81 }, 82 83 handler: function (event) { 84 85 var $elem = $(this); 86 $elem.data(event.type, 1); 87 if (event.type === 'touchend' && !$elem.data('touchmove')) { 88 event.type = 'tap'; 89 $.event.handle.apply(this, arguments); 90 } 91 else if ($elem.data('touchend')) { 92 $elem.removeData('touchstart touchmove touchend'); 93 } 94 } 95 }; 96 97 } 98 99 if (!$.fn.isInView) { 100 $.fn.isInView = function (fullyInView) { 101 var element = this; 102 var pageTop = $(window).scrollTop(); 103 var pageBottom = pageTop + $(window).height(); 104 var elementTop = $(element).offset().top; 105 var elementBottom = elementTop + $(element).height(); 106 107 if (fullyInView === true) { 108 return ((pageTop < elementTop) && (pageBottom > elementBottom)); 109 } else { 110 return ((elementTop <= pageBottom) && (elementBottom >= pageTop)); 111 } 112 } 113 } 114 115 116 if (!$.throttle) { 117 $.throttle = function (fn, threshhold, scope) { 118 threshhold || (threshhold = 250); 119 var last, 120 deferTimer; 121 return function () { 122 var context = scope || this; 123 124 var now = +new Date, 125 args = arguments; 126 if (last && now < last + threshhold) { 127 // hold on to it 128 clearTimeout(deferTimer); 129 deferTimer = setTimeout(function () { 130 last = now;
131 fn.apply(context, args); 132 }, threshhold); 133 } else { 134 last = now; 135 fn.apply(context, args); 136 } 137 }; 138 } 139 } 140 141 142 if (!$.debounce) { 143 $.debounce = function (func, wait, immediate) { 144 var timeout; 145 return function () { 146 var context = this, args = arguments; 147 var later = function () { 148 timeout = null; 149 if (!immediate) func.apply(context, args); 150 }; 151 var callNow = immediate && !timeout; 152 clearTimeout(timeout); 153 timeout = setTimeout(later, wait); 154 if (callNow) func.apply(context, args); 155 }; 156 } 157 } 158 159 160})(jQuery); 161 162 163(function ($) { 164 if (!window.mesmerize_smooth_scroll || !window.mesmerize_smooth_scroll.enabled) { 165 return; 166 } 167 168 var goUp = true; 169 var end = null; 170 var interval = null; 171 var animationInterval = 10; //lower is faster 172 var steps = 10; //lower is faster 173 var distance = 100; 174 var step = 0; 175 176 function handle(delta) { 177 178 delta = Math.sign(delta) * parseInt(Math.min(Math.abs(delta, 10))); // normalize delta 179 if (end === null) { 180 end = $(window).scrollTop(); 181 } 182 183 end -= distance * delta; 184 goUp = delta > 0; 185 186 $('body').on('mousedown.wheelscroll', 'a', function (event) { 187 if (interval) { 188 clearRequestInterval(interval); 189 interval = null; 190 end = null; 191 $('body').off('mousedown.wheelscroll'); 192 } 193 }); 194 195 function updateScroll() { 196 var scrollTop = $(window).scrollTop(); 197 step = Math.round((end - scrollTop) / steps); 198 $(window).scrollTop(scrollTop + step); 199 } 200 201 function cancelInterval() { 202 var scrollTop = $(window).scrollTop(); 203 if ( 204 (scrollTop <= 0 && goUp) || scrollTop >= $(window).prop("scrollHeight") - $(window).height() || 205 (goUp && step > -1) || (!goUp && step < 1) 206 ) { 207 208 interval = null; 209 end = null; 210 return true; 211 } 212 return false; 213 } 214 215 if (interval === null) { 216 interval = requestInterval(updateScroll, animationInterval, cancelInterval) 217 } 218 } 219 220 function wheel(event) { 221 222 var delta = 0; 223 if (event.wheelDelta) delta = event.wheelDelta / 120; 224 else if (event.detail) delta = -event.detail / 3; 225 226 if (window.scrollY === 0 && delta > 0) { // do nothing when scrolling to top and already there 227 return true; 228 } 229 230 if (((window.innerHeight + window.scrollY) >= document.body.offsetHeight) && delta < 0) { // do nothing when scrolling to bottom and already there 231 return true; 232 } 233 234 handle(delta); 235 if (event.preventDefault) event.preventDefault(); 236 event.returnValue = false; 237 } 238 239 $(window).load(function (event) { 240 if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false); 241 window.onmousewheel = document.onmousewheel = wheel; 242 }); 243 244})(jQuery); 245 246 247jQuery(document).ready(function ($) { 248 249 if (window.mesmerize_backstretch) { 250 251 window.mesmerize_backstretch.duration = parseInt(window.mesmerize_backstretch.duration); 252 window.mesmerize_backstretch.transitionDuration = parseInt(window.mesmerize_backstretch.transitionDuration); 253 254 var images = mesmerize_backstretch.images; 255 256 if (!images) { 257 return; 258 } 259 260 jQuery('.header-homepage, .header').backstretch(images, mesmerize_backstretch); 261 } 262 263 264 var masonry = $(".post-list.row"); 265 266 var images = masonry.find('img'); 267 var loadedImages = 0; 268 269 var debounceMasonryRefresh = jQuery.debounce(function () { 270 masonry.data().masonry.layout(); 271 }, 500); 272 273 function imageLoaded() { 274 loadedImages++; 275 if (images.length === loadedImages && masonry.data().masonry) { 276 masonry.data().masonry.layout(); 277 } 278 } 279 280 images.each(function () { 281 $(this).on('load', imageLoaded); 282 debounceMasonryRefresh();
283 }); 284 285 286 var items = $(".post-list.row .post-list-item"); 287 var index = items.length - 1; 288 items.each(function () { 289 $(this).css({ 290 width: $(this).css('max-width') 291 }) 292 }); 293 if (masonry.length) { 294 masonry.masonry({ 295 itemSelector: '.post-list-item', 296 percentPosition: true, 297 columnWidth: '.' + items.eq(index).attr('data-masonry-width') 298 }); 299 } 300 301 if ($.fn.smoothScrollAnchor) { 302 var _$body = $('body'); 303 $('.header-homepage-arrow-c .header-homepage-arrow').smoothScrollAnchor({ 304 target: _$body.find('[data-id]').length ? _$body.find('[data-id]').first() : _$body.find('.page-content, .content').eq(0), 305 targetSel: _$body.find('[data-id]').length ? '[data-id]:first' : '.page-content, .content', 306 offset: function () { 307 var $fixed = $('.navigation-bar.fixto-fixed'); 308 if ($fixed.length) { 309 return $fixed[0].getBoundingClientRect().height; 310 } 311 312 return 0; 313 } 314 }); 315 } 316 317 // logo inside menu ME fix 318 $('.navigation-bar.logo-inside-menu #main_menu > .logo').each(function () { 319 $(this).css('width', $(this).find('.text-logo').outerWidth() + 32); 320 }); 321 322}); 323 324 325(function ($) { 326 327 function toggleFooter() { 328 var footerTop = footer.offset().top + footer.outerHeight(); 329 var pageBottom = pageContent.offset().top + pageContent.height(); 330 331 if (footerTop >= pageBottom) { 332 footer.css('visibility', 'visible'); 333 } else { 334 footer.css('visibility', ''); 335 } 336 } 337 338 function updateFooter() { 339 pageContent.css("margin-bottom", footer.outerHeight() - 1); 340 toggleFooter(); 341 } 342 343 var footer = $('.footer.paralax'); 344 345 if (footer.length) { 346 if (footer.parents('.no-parallax').length) { 347 footer.css('visibility', 'visible'); 348 return; 349 } 350 351 $('.header-wrapper').css('z-index', 1); 352 353 var pageContent = footer.prev(); 354 pageContent.addClass('footer-shadow'); 355 pageContent.css({ 356 'position': 'relative', 357 'z-index': 1 358 }); 359 360 jQuery(window).resize(function (e) { 361 updateFooter(); 362 }); 363 364 jQuery(document).ready(function () { 365 window.setTimeout(function () { 366 updateFooter(); 367 }, 100); 368 }) 369 370 updateFooter(); 371 372 $(window).on('scroll', function () { 373 toggleFooter(); 374 }); 375 } 376 377 378})(jQuery); 379 380jQuery(function ($) { 381 382 var morphed = $("[data-text-effect]"); 383 if ($.fn.typed && morphed.length && JSON.parse(mesmerize_morph.header_text_morph)) { 384 morphed.each(function () { 385 $(this).empty(); 386 $(this).typed({ 387 strings: JSON.parse($(this).attr('data-text-effect')), 388 typeSpeed: parseInt(mesmerize_morph.header_text_morph_speed), 389 loop: true 390 }); 391 392 }); 393 } 394}); 395 396// OffScreen Menu 397 398(function ($) { 399 var $menus = $('.offcanvas_menu'); 400 var $offCanvasWrapper = $('#offcanvas-wrapper'); 401 402 if ($offCanvasWrapper.length) { 403 $('html').addClass('has-offscreen'); 404 $offCanvasWrapper.appendTo('body'); 405 406 407 $offCanvasWrapper.on('kube.offcanvas.ready', function () { 408 $offCanvasWrapper.removeClass('force-hide'); 409 }); 410 411 412 $offCanvasWrapper.on('kube.offcanvas.open', function () { 413 $('html').addClass('offcanvas-opened'); 414 }); 415 416 417 $offCanvasWrapper.on('kube.offcanvas.close', function () { 418 $('html').removeClass('offcanvas-opened') 419 }); 420 } 421 422 423 $menus.each(function () { 424 425 var $menu = $(this); 426 427 $menu.on('mesmerize.open-all', function () { 428 $(this).find('.menu-item-has-children, .page_item_has_children').each(function () { 429 $(this).addClass('open'); 430 $(this).children('ul').slideDown(100); 431 }); 432 }); 433 434 $menu.find('.menu-item-has-children a, .page_item_has_children a').each(function () { 435 if ($(this).children('i.fa.arrow').length === 0) { 436 $(this).append('<i class="fa arrow"></i>'); 437 438 } 439 }); 440 441 $menu.on('click', '.menu-item-has-children > a, .page_item_has_children > a', function (event) { 442 var $this = $(this); 443 var $li = $this.closest('li'); 444 event.stopPropagation(); 445 446 if ($li.children('ul').length === 0) { 447 return true; 448 } 449 450 if ($li.hasClass('open')) { 451 if ($this.is('a')) { 452 return true; 453 } 454 $li.children('ul').slideUp(100, function () { 455 $li.find('ul').each(function () { 456 $(this).parent().removeClass('open'); 457 $(this).css('display', 'none'); 458 }) 459 }); 460 } else { 461 $li.children('ul').slideDown(100); 462 } 463 464 $li.toggleClass('open'); 465 466 event.preventDefault(); 467 468 }); 469 470 $menu.on('click tap', '.mesmerize-menu-cart', function (event) { 471 event.stopPropagation(); 472 }); 473 474 $menu.on('click tap', '.menu-item-has-children > a > .arrow, .page_item_has_children > a > .arrow', function (event) { 475 var $this = $(this); 476 var $li = $this.closest('li'); 477 event.stopPropagation(); 478 event.preventDefault(); 479 $li.toggleClass('open'); 480 481 if ($li.hasClass('open')) { 482 $li.children('ul').slideDown(100); 483 } else { 484 $li.children('ul').slideUp(100); 485 } 486 }); 487 488 if ($.fn.scrollSpy) { 489 $menu.find('a').scrollSpy({ 490 onChange: function () { 491 $menu.find('.current-menu-item,.current_page_item').removeClass('current-menu-item current_page_item'); 492 $(this).closest('li').addClass('current-menu-item'); 493 }, 494 onLeave: function () { 495 $(this).closest('li').removeClass('current-menu-item current_page_item'); 496 }, 497 smoothScrollAnchor: true, 498 offset: function () { 499 if ($('.navigation-bar.fixto-fixed').length) { 500 return $('.navigation-bar.fixto-fixed')[0].getBoundingClientRect().height; 501 } 502 503 return 0; 504 } 505 }); 506 } 507 508 });
509 510 511 if ($.fn.smoothScrollAnchor) { 512 $('#page > .page-content > .content, #page > .content').find('a[data-cp-link]').filter(function () { 513 var $el = $(this); 514 515 if ($el.is('[role=tab]') || $el.parent().is('[role=tab]')) { 516 return false; 517 } 518 519 return true; 520 521 }).smoothScrollAnchor(); 522 523 524 $('#page > .footer').find('a').filter(function () { 525 var $el = $(this); 526 527 if ($el.is('[role=tab]') || $el.parent().is('[role=tab]')) { 528 return false; 529 } 530 return true; 531 532 }).smoothScrollAnchor(); 533 } 534})(jQuery); 535 536 537(function ($) { 538 539 540 function updateCounterCircle($el) { 541 var $valueHolder = $el.find('[data-countup]'); 542 var val = $valueHolder.text(); 543 val = jQuery.map(val.match(/[-]{0,1}[s\d.]*[\d]+/g), function (x) { 544 return x 545 }).join([]); 546 547 var max = $valueHolder.attr('data-max') !== undefined ? $valueHolder.attr('data-max') : 100; 548 var min = $valueHolder.attr('data-min') !== undefined ? $valueHolder.attr('data-min') : 0; 549 550 if (min > max) { 551 var aux = max; 552 max = min; 553 min = aux; 554 } 555 556 if (!val) { 557 val = min; 558 } 559 560 var percentage = val / max * 100; 561 562 var $circle = $el.find('.circle-bar'); 563 var r = $circle.attr('r'); 564 var c = Math.PI * (r * 2); 565 566 if (percentage < 0) { 567 percentage = 0; 568 } 569 if (percentage > 100) { 570 percentage = 100; 571 } 572 var pct = c * (100 - percentage) / 100; 573 $circle.css({strokeDashoffset: pct}); 574 575 $(function () { 576 if (!wp || !wp.customize) { 577 $circle.parent().height($circle.parent().width()); 578 } 579 }); 580 } 581 582 function initCounterCircle($circle) { 583 updateCounterCircle($circle); 584 585 586 $circle.find('[data-countup]').bind('countup.update', function () { 587 updateCounterCircle($circle); 588 }); 589 590 // $circle.find('[data-countup]').bind('DOMSubtreeModified', updateCircleOnDOMSubtreeModified); 591 592 $circle.data('doCircle', function () { 593 updateCounterCircle($circle); 594 }); 595 } 596 597 function initCountUP($self, force) { 598 var min = $self.attr('data-min') !== undefined ? $self.attr('data-min') : 0, 599 stopAt = $self.attr('data-stop'), 600 max = $self.attr('data-max') !== undefined ? $self.attr('data-max') : 100, 601 prefix = $self.attr('data-prefix') || "", 602 suffix = $self.attr('data-suffix') || "", 603 duration = $self.attr('data-duration') || 2000, 604 decimals = $self.attr('data-decimals') || 0; 605 606 if (stopAt !== undefined) { 607 max = stopAt; 608 } 609 610 var formattedMax = ''; 611 612 try { 613 var counter = new CountUp($self[0], parseInt(min), parseInt(max), parseInt(decimals), parseInt(duration) / 1000, { 614 prefix: prefix, 615 suffix: suffix, 616 onUpdate: function (value) { 617 $self.trigger('countup.update', [value]); 618 } 619 }); 620 621 formattedMax = counter.options.formattingFn(parseInt(max)); 622 } catch (e) { 623 console.error('invalid countup args', { 624 min: min, 625 max: max, 626 decimals: decimals, 627 duration: duration, 628 suffix: suffix, 629 prefix: prefix 630 }); 631 } 632 633 $self.data('countup', counter); 634 635 636 $self.attr('data-max-computed', formattedMax); 637 638 if (force) { 639 $self.data('countup').reset(); 640 } 641 642 if ($self.isInView(true) || force) { 643 $self.data('countup').start(); 644 } 645 646 $self.data('restartCountUp', function () { 647 initCountUP($self); 648 }) 649 } 650 651 652 $('.circle-counter').each(function () { 653 initCounterCircle($(this)); 654 });
655 656 var $countUPs = $('[data-countup]'); 657 658 $countUPs.each(function () { 659 var $self = $(this); 660 initCountUP($self); 661 }); 662 663 $(window).on('scroll', function () { 664 $countUPs.each(function () { 665 var $self = $(this); 666 667 if ($self.isInView(true) && !$self.data('one')) { 668 $self.data('countup').start(); 669 $self.data('one', true); 670 } else { 671 // $self.data('countup').reset(); 672 } 673 674 }); 675 }); 676 677 $(function () { 678 if (!wp || !wp.customize) { 679 $(window).on('resize', function () { 680 $('.circle-counter .circle-svg').each(function () { 681 $(this).height($(this).width()); 682 }); 683 684 }); 685 } 686 }); 687 688 689 // customizer binding 690 691 if (parent.CP_Customizer) { 692 parent.CP_Customizer.addModule(function (CP_Customizer) { 693 CP_Customizer.hooks.addAction('after_node_insert', function ($node) { 694 if ($node.is('[data-countup]')) { 695 696 if ($node.closest('.circle-counter').length) { 697 initCounterCircle($node.closest('.circle-counter')); 698 } 699 700 initCountUP($node, true); 701 } 702 703 $node.find('[data-countup]').each(function () { 704 705 if ($(this).closest('.circle-counter').length) { 706 initCounterCircle($(this).closest('.circle-counter')); 707 } 708 709 initCountUP($(this), true); 710 }) 711 }); 712 }); 713 } 714 715 716 // Animations 717 var nonadmin = $('body'); 718/* 719 // Logo 720 if (!nonadmin.hasClass('logged-in')){ 721 $('#page .logo img').addClass('to-animate'); 722 723 724 $('#page .logo').waypoint( function( direction ) { 725 726 if( direction === 'down' && !$(this.element).hasClass('animated') ) { 727 728 setTimeout(function() { 729 $('#page .to-animate').each(function( k ) { 730 var el = $(this); 731 732 setTimeout ( function () { 733 el.addClass('fadeInRight animated'); 734 }, k * 300, 'easeInExpo' ); 735 736 }); 737 }, 990); 738 739 $(this.element).addClass('animated'); 740 741 } 742 } , { offset: '90%' } ); 743 744 } 745 */ 746 747/* 748 749 // Sluzby 750 if (!nonadmin.hasClass('logged-in')){ 751 $('#sluzby .col-xs-12').addClass('to-animate'); 752 753 $('#sluzby').waypoint( function( direction ) { 754 755 if( direction === 'down' && !$(this.element).hasClass('animated') ) { 756 757 setTimeout(function() { 758 $('#sluzby .to-animate').each(function( k ) { 759 var el = $(this); 760 761 setTimeout ( function () { 762 el.addClass('fadeInRight animated'); 763 }, k * 200, 'easeInSine' ); 764 765 }); 766 }, 990); 767 768 $(this.element).addClass('animated'); 769 770 } 771 } , { offset: '90%' } ); 772 } 773 774 // Set href attribute form img #sluzby 775 if (!nonadmin.hasClass('logged-in')){ 776 $('#sluzby .col-xs-12 > div').each(function () { 777 $('img', this).wrap('<a class="rdm"></a>'); 778 //$('img', this).after('</a>'); 779 var lnk = $(this).find('a.button').attr('href'); 780 $('a.rdm', this).attr('href', lnk); 781 }); 782 } 783 784 785 // Accordion menu - subpages - nemazat! 786 $('#left-column #menu-auto-menu-from-pages > li > a').click(function() { 787 $(this).siblings('.sub-menu').slideToggle(1200); 788 $(this).parent().addClass('current-menu-parent'); 789 $(this).parent().siblings().removeClass('current_page_item'); 790 791 //Hide the other panels 792 $(".sub-menu").not($(this).next()).slideUp('fast'); 793 $(this).parent().siblings().removeClass('current-menu-item'); // First level 794 $(this).parent().siblings().removeClass('current-menu-parent'); // Two level 795 $(this).parent().siblings().removeClass('current-page-ancestor'); // More then two level 796 797 return false; 798 }); 799 800 $('li:has(.current-menu-item)').addClass('current-menu-parent'); 801 $('li:has(.current_page_parent)').addClass('current-menu-parent'); 802*/ 803 804 // Odebrani funkce zoom 805 $('.woocommerce-product-gallery__image img').removeClass('zoomImg'); 806 807 // Custom code - add div for section #pocitadlo 808 $('#pocitadlo').prepend('<div class="bg-overlay"></div>'); 809 810 (function($) { 811 $(document).ready(function() { 812 // Definice promÄnných 813 const $bubble = $('.fa-bars'); 814 const $offcanvas = $('#offcanvas-wrapper'); 815 816 // Funkce pro otevÅenà menu 817 function openMenu() { 818 $offcanvas 819 .removeClass('hide force-hide') 820 .addClass('offcanvas open') 821 .css('width', '300px'); 822 } 823 824 // Funkce pro zavÅenà menu 825 function closeMenu() { 826 $offcanvas 827 .removeClass('offcanvas open') 828 .addClass('hide force-hide') 829 .css('width', ''); 830 } 831 832 // Kliknutà na bubble 833 $bubble.on('click', function(e) { 834 e.stopPropagation(); 835 if ($offcanvas.hasClass('hide')) { 836 openMenu(); 837 } else { 838 closeMenu(); 839 } 840 }); 841 842 // Kliknutà mimo menu 843 $(document).on('click', function(e) { 844 if (!$(e.target).closest('#offcanvas-wrapper').length 845 && !$(e.target).closest('.fa-bars').length 846 && $offcanvas.hasClass('open')) { 847 closeMenu(); 848 } 849 }); 850 851 // Zabránà zavÅenà pÅi kliknutà uvnitÅ menu 852 $offcanvas.on('click', function(e) { 853 e.stopPropagation(); 854 }); 855 }); 856 })(jQuery); 857 858})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.