1if (typeof Object.assign != 'function') { 2 Object.assign = function(target, varArgs) { 3 'use strict'; 4 if (target == null) { // TypeError if undefined or null 5 throw new TypeError('Cannot convert undefined or null to object'); 6 } 7 var to = Object(target); 8 for (var index = 1; index < arguments.length; index++) { 9 var nextSource = arguments[index]; 10 if (nextSource != null) { 11 for (var nextKey in nextSource) { 12 if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { 13 to[nextKey] = nextSource[nextKey]; 14 } 15 } 16 } 17 } 18 return to; 19 }; 20} 21 22const isString = function (val){ 23 return (typeof val === 'string' ? true : false); 24}; 25const isBlob = function (val){ 26 return (val instanceof Blob ? true : false); 27}; 28 29polyfill.call(typeof window === 'object' ? window : this || {}); 30 31function polyfill () { 32 if (!('navigator' in this)) { 33 this.navigator = {}; 34 } 35 36 if (typeof this.navigator.sendBeacon !== 'function') { 37 this.navigator.sendBeacon = sendBeacon.bind(this); 38 } 39} 40 41function sendBeacon (url, data) { 42 const event = this.event && this.event.type; 43 const sync = event === 'unload' || event === 'beforeunload'; 44 const xhr = ('XMLHttpRequest' in this) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); 45 xhr.open('POST', url, !sync); 46 xhr.withCredentials = true; 47 xhr.setRequestHeader('Accept', '*/*'); 48 49 if (isString(data)) { 50 xhr.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8'); 51 xhr.responseType = 'text'; 52 } else if (isBlob(data) && data.type) { 53 xhr.setRequestHeader('Content-Type', data.type); 54 } 55 56 try { 57 xhr.send(data); 58 } catch (error) { 59 return false; 60 } 61 62 return true; 63}
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.