function Fingerprint(f){var e=Array.prototype.forEach,t=Array.prototype.map;this.each=function(f,t,r){if(null!=f){if(e&&f.forEach===e)f.forEach(t,r);else if(f.length===+f.length){for(var n=0,h=f.length;n<h;n++)if("{}"===JSON.stringify(t.call(r,f[n],n,f)))return}else for(var i in f)if(f.hasOwnProperty(i)&&"{}"===JSON.stringify(t.call(r,f[i],i,f)))return}},this.map=function(f,e,r){var n=[];return null==f?n:t&&f.map===t?f.map(e,r):(this.each(f,function(f,t,h){n[n.length]=e.call(r,f,t,h)}),n)},f&&(this.hasher=f)}Fingerprint.prototype={get:function(){(keys=[]).push(navigator.userAgent),keys.push([screen.height,screen.width,screen.colorDepth].join("x")),keys.push(new Date().getTimezoneOffset()),keys.push(!!window.sessionStorage),keys.push(!!window.localStorage);var f=this.map(navigator.plugins,function(f){var e=this.map(f,function(f){return[f.type,f.suffixes].join("~")}).join(",");return[f.name,f.description,e].join("::")},this).join(";");return(keys.push(f),this.hasher)?this.hasher(keys.join("###"),31):this.murmurhash3_32_gc(keys.join("###"),31)},murmurhash3_32_gc:function(f,e){var t,r,n,h,i,a,o,$;for(t=3&f.length,r=f.length-t,n=e,i=3432918353,a=461845907,$=0;$<r;)o=255&f.charCodeAt($)|(255&f.charCodeAt(++$))<<8|(255&f.charCodeAt(++$))<<16|(255&f.charCodeAt(++$))<<24,++$,n^=o=(65535&(o=(o=(65535&o)*i+(((o>>>16)*i&65535)<<16)&4294967295)<<15|o>>>17))*a+(((o>>>16)*a&65535)<<16)&4294967295,n=(65535&(h=(65535&(n=n<<13|n>>>19))*5+(((n>>>16)*5&65535)<<16)&4294967295))+27492+(((h>>>16)+58964&65535)<<16);switch(o=0,t){case 3:o^=(255&f.charCodeAt($+2))<<16;case 2:o^=(255&f.charCodeAt($+1))<<8;case 1:o^=255&f.charCodeAt($),n^=o=(65535&(o=(o=(65535&o)*i+(((o>>>16)*i&65535)<<16)&4294967295)<<15|o>>>17))*a+(((o>>>16)*a&65535)<<16)&4294967295}return n^=f.length,n^=n>>>16,n=(65535&n)*2246822507+(((n>>>16)*2246822507&65535)<<16)&4294967295,n^=n>>>13,n=(65535&n)*3266489909+(((n>>>16)*3266489909&65535)<<16)&4294967295,(n^=n>>>16)>>>0}};