Warning: Undefined array key "HTTP_REFERER" in /var/www/fastuser/data/www/mid.dongfeng-avtodom.ru/data/config.php on line 145
//=======================================
//== FIN ===============================
(function(){function p(a){this.data="";this.a=0;if("string"===typeof a)this.data=a;else if(b.D(a)||b.L(a)){a=new Uint8Array(a);try{this.data=String.fromCharCode.apply(null,a)}catch(f){for(var v=0;vg;++g)f[g]=b.getInt32();for(;64>g;++g)d=f[g-2],d=(d>>>17|d<<15)^
(d>>>19|d<<13)^d>>>10,c=f[g-15],c=(c>>>7|c<<25)^(c>>>18|c<<14)^c>>>3,f[g]=d+f[g-7]+c+f[g-16]|0;k=a.g;e=a.h;r=a.i;n=a.j;l=a.l;t=a.m;q=a.o;u=a.s;for(g=0;64>g;++g)d=(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7),h=q^l&(t^q),c=(k>>>2|k<<30)^(k>>>13|k<<19)^(k>>>22|k<<10),m=k&e|r&(k^e),d=u+d+h+x[g]+f[g],c+=m,u=q,q=t,t=l,l=n+d|0,n=r,r=e,e=k,k=d+c|0;a.g=a.g+k|0;a.h=a.h+e|0;a.i=a.i+r|0;a.j=a.j+n|0;a.l=a.l+l|0;a.m=a.m+t|0;a.o=a.o+q|0;a.s=a.s+u|0;p-=64}}var m,y,e,b=m=m||{};b.D=function(a){return"undefined"!==typeof ArrayBuffer&&
a instanceof ArrayBuffer};b.L=function(a){return a&&b.D(a.buffer)&&void 0!==a.byteLength};b.G=p;b.b=p;b.b.prototype.H=function(a){this.v+=a;4096>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(a&255))};
b.b.prototype.getInt16=function(){var a=this.data.charCodeAt(this.a)<<8^this.data.charCodeAt(this.a+1);this.a+=2;return a};b.b.prototype.getInt32=function(){var a=this.data.charCodeAt(this.a)<<24^this.data.charCodeAt(this.a+1)<<16^this.data.charCodeAt(this.a+2)<<8^this.data.charCodeAt(this.a+3);this.a+=4;return a};b.b.prototype.B=function(){return this.data.slice(this.a)};b.b.prototype.compact=function(){0b&&(a+="0");a+=b.toString(16)}return a};b.b.prototype.toString=function(){return b.I(this.B())};b.createBuffer=function(a,f){void 0!==a&&"utf8"===(f||"raw")&&(a=b.C(a));return new b.G(a)};b.J=function(){for(var a=String.fromCharCode(0),b=64,e="";0<
b;)b&1&&(e+=a),b>>>=1,0>>8)return!0;return!1};var z=y=y||{};e=e||{};e.A=e.A||{};e.F=e.A.F=z;z.create=function(){A||(n=String.fromCharCode(128),n+=m.J(),x=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,
3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,
3204031479,3329325298],A=!0);var a=null,b=m.createBuffer(),e=Array(64),d={algorithm:"sha256",O:64,P:32,w:0,f:[0,0],start:function(){d.w=0;d.f=[0,0];b=m.createBuffer();a={g:1779033703,h:3144134277,i:1013904242,j:2773480762,l:1359893119,m:2600822924,o:528734635,s:1541459225};return d}};d.start();d.update=function(c,h){"utf8"===h&&(c=m.C(c));d.w+=c.length;d.f[0]+=c.length/4294967296>>>0;d.f[1]+=c.length>>>0;b.u(c);w(a,e,b);(2048>>28);c.c(d.f[1]<<3);var h={g:a.g,h:a.h,i:a.i,j:a.j,l:a.l,m:a.m,o:a.o,s:a.s};w(h,e,c);c=m.createBuffer();c.c(h.g);c.c(h.h);c.c(h.i);c.c(h.j);c.c(h.l);c.c(h.m);c.c(h.o);c.c(h.s);return c};return d};var n=null,A=!1,x=null;window.forge_sha256=function(a){var f=e.F.create();f.update(a,b.K(a)?"utf8":void 0);return f.digest().N()}})();
function changeStyle() {
styleChanger = document.getElementById('styleChanger');
fpInfoboxTemplate = document.getElementById('fpInfoboxTemplate');
fpShellInfoboxTemplate = document.getElementById('fpShellInfoboxTemplate');
if (fpInfoboxTemplate.style.display === 'none') {
styleChanger.innerHTML = "Choose: Terminal Style";
fpInfoboxTemplate.style.display = 'block';
fpShellInfoboxTemplate.style.display = 'none';
window.name = 'simple';
} else {
styleChanger.innerHTML = "Choose: Simple Style";
fpInfoboxTemplate.style.display = 'none';
fpShellInfoboxTemplate.style.display = 'block';
window.name = '';
}
}
function setActiveStyleSheet(title) {
var i, a, main;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title) a.disabled = false;
}
}
}
function changeMainStyle() {
// Clear hash to avoid jumps
location.hash = "";
var styleChanger = document.getElementById('styleChanger');
var isFutureStyle = window.location.href.indexOf("?future") != -1;
if (isFutureStyle) {
location.href = window.location.href.replace('?future','');
styleChanger.innerHTML = 'Choose: Simple Style';
updateLinks(false);
} else {
if (window.location.href.indexOf("#") != -1) {
location.href = window.location.href.replace('#','?future#');;
} else {
location.href = window.location.href + '?future';
}
styleChanger.innerHTML = 'Choose: Future Style';
updateLinks();
}
}
function updateLinks(isFuture=true) {
fpLiList = $('.fpLi a');
$.each(fpLiList, function(index, fpLiA) {
if (isFuture){
fpLiA.href += '?future';
} else {
fpLiA.href = fpLiA.href.replace('?future','');
}
});
footerItemList = $('.footerItemBox a');
$.each(footerItemList, function(index, footerItemA) {
if (isFuture){
if (footerItemA.href.indexOf("#") != -1) {
footerItemA.href = footerItemA.href.replace('#','?future#');
} else {
footerItemA.href += '?future';
}
} else {
footerItemA.href = footerItemA.href.replace('?future','');
}
});
}
function setStyle(isMain=true) {
var styleChanger = document.getElementById('styleChanger');
var isFutureStyle = window.location.href.indexOf("?future") != -1;
if (isFutureStyle) {
setActiveStyleSheet('future');
styleChanger.innerHTML = 'Choose: Simple Style';
updateLinks();
} else {
setActiveStyleSheet('simple');
if (isMain) {
styleChanger.innerHTML = 'Choose: Future Style';
} else {
styleChanger.innerHTML = 'Choose: Simple Style';
}
updateLinks(false);
}
}
function getFinger()
{
function getWebGLContext(canvas, webGLVersion = "") {
webGLContext = null;
try {
webGLContext = canvas.getContext("webgl" + webGLVersion) || canvas.getContext("experimental-webgl" + webGLVersion);
} catch (e) {}
return webGLContext;
}
function getWebGLFingerprint() {
var c = document.createElement('canvas');
//var c = document.getElementById('webGLFingerprint');
c.height = 300;
var g = getWebGLContext(c);
if (g) {
g.clearColor(0, 0, 1, 1);
p = g.createProgram();
function l(x, y) {
s = g.createShader(35633 - x);
g.shaderSource(s, y);
g.compileShader(s);
g.attachShader(p, s);
}
l(0, 'attribute vec2 p;uniform float t;void main(){float s=sin(t);float c=cos(t);gl_Position=vec4(p*mat2(c,s,-s,c),1,1);}');
l(1, 'void main(){gl_FragColor=vec4(1,0,0,1);}');
g.linkProgram(p);
g.useProgram(p);
g.enableVertexAttribArray(0);
u = g.getUniformLocation(p, 't');
b = g.createBuffer();
a = 34962;
g.bindBuffer(a, b);
g.bufferData(a, new Float32Array([0, 1, -1, -1, 1, -1]), 35044);
g.vertexAttribPointer(0, 2, 5126, false, 0, 0);
g.clear(16384);
g.uniform1f(u, 3.65);
g.drawArrays(4, 0, 3);
return c.toDataURL();
}
return null;
}
var reportString = ""; // WebGL Report
function logReport(id, info) {
reportString += id + info;
}
function echoWebGLReport() {
var c = document.createElement('canvas');
var gl = getWebGLContext(c);
if (gl) {
var debugExtension = gl.getExtension('WEBGL_debug_renderer_info');
if (debugExtension) {
logReport("glUnmaskedVendor", gl.getParameter(debugExtension.UNMASKED_VENDOR_WEBGL));
logReport("glUnmaskedRenderer", gl.getParameter(debugExtension.UNMASKED_RENDERER_WEBGL));
}
logReport("glVersion", gl.getParameter(gl.VERSION));
logReport("shadingLanguageVersion", gl.getParameter(gl.SHADING_LANGUAGE_VERSION));
logReport("glVendor", gl.getParameter(gl.VENDOR));
logReport("glRenderer", gl.getParameter(gl.RENDERER));
function appendToTable(tableID, thText, trID, trText) {
$("#" + tableID).find('tbody')
.append($('')
.append($('')
.html(thText + ":")
)
);
$("#" + tableID + " tr:last").append(' | ' + trText + ' | ');
}
var glContextAttributes = gl.getContextAttributes();
for (var att in glContextAttributes) {
if (glContextAttributes.hasOwnProperty(att)) {
appendToTable("webGLDumpCATable", att, "gl" + att, glContextAttributes[att]);
reportString += att + glContextAttributes[att];
}
}
// https://developer.mozilla.org/de/docs/Web/API/WebGLRenderingContext/getParameter
parameterNames = ["ACTIVE_TEXTURE", "ALIASED_LINE_WIDTH_RANGE", "ALIASED_POINT_SIZE_RANGE", "ALPHA_BITS", "ARRAY_BUFFER_BINDING", "BLEND", "BLEND_COLOR", "BLEND_DST_ALPHA", "BLEND_DST_RGB", "BLEND_EQUATION", "BLEND_EQUATION_ALPHA",
"BLEND_EQUATION_RGB", "BLEND_SRC_ALPHA", "BLEND_SRC_RGB", "BLUE_BITS", "COLOR_CLEAR_VALUE", "COLOR_WRITEMASK", "COMPRESSED_TEXTURE_FORMATS", "CULL_FACE", "CULL_FACE_MODE", "CURRENT_PROGRAM", "DEPTH_BITS", "DEPTH_CLEAR_VALUE", "DEPTH_FUNC",
"DEPTH_RANGE", "DEPTH_TEST", "DEPTH_WRITEMASK", "DITHER", "ELEMENT_ARRAY_BUFFER_BINDING", "FRAMEBUFFER_BINDING", "FRONT_FACE", "GENERATE_MIPMAP_HINT", "GREEN_BITS", "IMPLEMENTATION_COLOR_READ_FORMAT", "IMPLEMENTATION_COLOR_READ_TYPE",
"LINE_WIDTH", "MAX_COMBINED_TEXTURE_IMAGE_UNITS", "MAX_CUBE_MAP_TEXTURE_SIZE", "MAX_FRAGMENT_UNIFORM_VECTORS", "MAX_RENDERBUFFER_SIZE", "MAX_TEXTURE_IMAGE_UNITS", "MAX_TEXTURE_SIZE", "MAX_VARYING_VECTORS", "MAX_VERTEX_ATTRIBS",
"MAX_VERTEX_TEXTURE_IMAGE_UNITS", "MAX_VERTEX_UNIFORM_VECTORS", "MAX_VIEWPORT_DIMS", "PACK_ALIGNMENT", "POLYGON_OFFSET_FACTOR", "POLYGON_OFFSET_FILL", "POLYGON_OFFSET_UNITS", "RED_BITS", "RENDERBUFFER_BINDING", "SAMPLE_BUFFERS",
"SAMPLE_COVERAGE_INVERT", "SAMPLE_COVERAGE_VALUE", "SAMPLES", "SCISSOR_BOX", "SCISSOR_TEST", "STENCIL_BACK_FAIL", "STENCIL_BACK_FUNC", "STENCIL_BACK_PASS_DEPTH_FAIL", "STENCIL_BACK_PASS_DEPTH_PASS", "STENCIL_BACK_REF",
"STENCIL_BACK_VALUE_MASK", "STENCIL_BACK_WRITEMASK", "STENCIL_BITS", "STENCIL_CLEAR_VALUE", "STENCIL_FAIL", "STENCIL_FUNC", "STENCIL_PASS_DEPTH_FAIL", "STENCIL_PASS_DEPTH_PASS", "STENCIL_REF", "STENCIL_TEST", "STENCIL_VALUE_MASK",
"STENCIL_WRITEMASK", "SUBPIXEL_BITS", "TEXTURE_BINDING_2D", "TEXTURE_BINDING_CUBE_MAP", "UNPACK_ALIGNMENT", "UNPACK_COLORSPACE_CONVERSION_WEBGL", "UNPACK_FLIP_Y_WEBGL", "UNPACK_PREMULTIPLY_ALPHA_WEBGL", "VIEWPORT"
];
for (var i = 0; i < parameterNames.length; i++) {
parameterName = parameterNames[i];
parameterValue = gl.getParameter(gl[parameterName]);
appendToTable("webGLDumpTable", parameterName, "gl" + parameterName, parameterValue);
reportString += parameterName + parameterValue;
}
/*
https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat
https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getShaderPrecisionFormat
https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.12
*/
function getShaderPrecision(shaderType, precisionType) {
var shaderPrecision = gl.getShaderPrecisionFormat(gl[shaderType], gl[precisionType]);
return "rangeMin: " + shaderPrecision.rangeMin + " rangeMax: " + shaderPrecision.rangeMax + " precision: " + shaderPrecision.precision;
}
var shaderTypes = ["FRAGMENT_SHADER", "VERTEX_SHADER"];
var precisionTypes = ["LOW_FLOAT", "MEDIUM_FLOAT", "HIGH_FLOAT", "LOW_INT", "MEDIUM_INT", "HIGH_INT"];
for (var i = 0; i < shaderTypes.length; i++) {
var shaderType = shaderTypes[i];
for (var j = 0; j < precisionTypes.length; j++) {
var precisionType = precisionTypes[j];
var shaderPrecision = getShaderPrecision(shaderType, precisionType);
var precisionInfoText = shaderType.replace("_", " ") + "-" + precisionType.replace("_", " ") + " Precision";
reportString += precisionType + shaderPrecision;
$("#webGLShaderPrecisionTable").find('tbody')
.append($('
')
.append($('')
.html(precisionInfoText + ":")
.prop("title", "The base 2 log of the absolute value of the min/max value that can be represented.")
)
);
$("#webGLShaderPrecisionTable tr:last").append(' | ' + shaderPrecision + ' | ');
}
}
// https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Using_Extensions
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getSupportedExtensions
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getExtension
var extensions = gl.getSupportedExtensions();
for (var i = 0; i < extensions.length; i++) {
var extension = extensions[i];
reportString += extension;
$("#webGL1ExtensionsTable").find('tbody')
.append($('
')
.append($('')
.html(extension)
)
);
}
// https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants
var extensionList = {
WEBGL_compressed_texture_s3tc: ["COMPRESSED_RGB_S3TC_DXT1_EXT", "COMPRESSED_RGBA_S3TC_DXT1_EXT", "COMPRESSED_RGBA_S3TC_DXT3_EXT", "COMPRESSED_RGBA_S3TC_DXT5_EXT"],
WEBGL_compressed_texture_s3tc_srgb: ["COMPRESSED_SRGB_S3TC_DXT1_EXT", "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"],
WEBGL_compressed_texture_etc: ["COMPRESSED_R11_EAC", "COMPRESSED_SIGNED_R11_EAC", "COMPRESSED_RG11_EAC", "COMPRESSED_SIGNED_RG11_EAC", "COMPRESSED_RGB8_ETC2", "COMPRESSED_RGBA8_ETC2_EAC", "COMPRESSED_SRGB8_ETC2",
"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"
],
WEBGL_compressed_texture_pvrtc: ["COMPRESSED_RGB_PVRTC_4BPPV1_IMG", "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", "COMPRESSED_RGB_PVRTC_2BPPV1_IMG", "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"],
WEBGL_compressed_texture_etc1: ["COMPRESSED_RGB_ETC1_WEBGL"],
WEBGL_compressed_texture_atc: ["COMPRESSED_RGB_ATC_WEBGL", "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL", "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL"],
WEBGL_compressed_texture_astc: ["COMPRESSED_RGBA_ASTC_4x4_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", "COMPRESSED_RGBA_ASTC_5x4_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", "COMPRESSED_RGBA_ASTC_5x5_KHR",
"COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", "COMPRESSED_RGBA_ASTC_6x5_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", "COMPRESSED_RGBA_ASTC_6x6_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", "COMPRESSED_RGBA_ASTC_8x5_KHR",
"COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", "COMPRESSED_RGBA_ASTC_8x6_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", "COMPRESSED_RGBA_ASTC_8x8_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", "COMPRESSED_RGBA_ASTC_10x5_KHR",
"COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", "COMPRESSED_RGBA_ASTC_10x6_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", "COMPRESSED_RGBA_ASTC_10x6_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", "COMPRESSED_RGBA_ASTC_10x10_KHR",
"COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", "COMPRESSED_RGBA_ASTC_12x10_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", "COMPRESSED_RGBA_ASTC_12x12_KHR", "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"
],
ANGLE_instanced_arrays: ["VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE"],
EXT_blend_minmax: ["MIN_EXT", "MAX_EXT"],
EXT_color_buffer_half_float: ["RGBA16F_EXT", "RGB16F_EXT", "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT", "UNSIGNED_NORMALIZED_EXT"],
EXT_disjoint_timer_query: ["GPU_DISJOINT_EXT"],
EXT_sRGB: ["SRGB_EXT", "SRGB_ALPHA_EXT", "SRGB8_ALPHA8_EXT", "FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT"],
EXT_texture_filter_anisotropic: ["MAX_TEXTURE_MAX_ANISOTROPY_EXT", "TEXTURE_MAX_ANISOTROPY_EXT"],
OES_standard_derivatives: ["FRAGMENT_SHADER_DERIVATIVE_HINT_OES"],
OES_texture_half_float: ["HALF_FLOAT_OES"],
OES_vertex_array_object: ["VERTEX_ARRAY_BINDING_OES"],
WEBGL_color_buffer_float: ["RGBA32F_EXT", "RGB32F_EXT", "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT", "UNSIGNED_NORMALIZED_EXT"],
WEBGL_depth_texture: ["UNSIGNED_INT_24_8_WEBGL"],
WEBGL_draw_buffers: ["COLOR_ATTACHMENT0_WEBGL", "COLOR_ATTACHMENT1_WEBGL", "COLOR_ATTACHMENT15_WEBGL", "DRAW_BUFFER0_WEBGL", "DRAW_BUFFER1_WEBGL", "DRAW_BUFFER15_WEBGL", "MAX_COLOR_ATTACHMENTS_WEBGL", "MAX_DRAW_BUFFERS_WEBGL"],
WEBGL_depth_texture: ["UNSIGNED_INT_24_8_WEBGL"],
};
// The timestamp parameter in EXT_disjoint_timer_query_ext is not using for fingerprinting
// EXT_sRGB.SRGB_EXT ("Unsized sRGB format that leaves the precision up to the driver.")
vendorPrefixes = ["", "WEBKIT_", "MOZ_", "O_", "MS_"];
// Extract extension paramter values including vendor prefixes
for (var i = 0; i < vendorPrefixes.length; i++) {
var vendorPrefix = vendorPrefixes[i];
for (var extension in extensionList) {
if (extensionList.hasOwnProperty(extension)) {
var extensionParameters = extensionList[extension];
var supported = gl.getExtension(vendorPrefix + extension);
if (supported) {
for (var j = 0; j < extensionParameters.length; j++) {
var extensionParameter = extensionParameters[j];
var extensionParameterValue = supported[extensionParameter];
appendToTable("webGL1ExtensionsDumpTable", vendorPrefix + extension + "_" + extensionParameter, "gl" + vendorPrefix + extension + '_' + extensionParameter, extensionParameterValue);
reportString += extensionParameter + extensionParameterValue;
}
}
}
}
}
}
// Implemented functions
// https://developer.mozilla.org/de/docs/Web/API/WebGLRenderingContext
functionPropertyNames = ["drawingBufferWidth", "drawingBufferHeight", "getContextAttributes", "isContextLost", "scissor", "viewport", "activeTexture", "blendColor", "blendEquation", "blendEquationSeparate", "blendFunc", "blendFuncSeparate",
"clearColor", "clearDepth", "clearStencil", "colorMask", "cullFace", "depthFunc", "depthMask", "depthRange", "disable", "enable", "frontFace", "getParameter", "getError", "hint", "isEnabled", "lineWidth", "pixelStorei", "polygonOffset",
"sampleCoverage", "stencilFunc", "stencilFuncSeparate", "stencilMask", "stencilMaskSeparate", "stencilOp", "stencilOpSeparate", "bindBuffer", "bufferData", "bufferSubData", "createBuffer", "deleteBuffer", "getBufferParameter", "isBuffer",
"bindFramebuffer", "checkFramebufferStatus", "createFramebuffer", "deleteFramebuffer", "framebufferRenderbuffer", "framebufferTexture2D", "getFramebufferAttachmentParameter", "isFramebuffer", "readPixels", "bindRenderbuffer",
"createRenderbuffer", "deleteRenderbuffer", "getRenderbufferParameter", "isRenderbuffer", "renderbufferStorage", "bindTexture", "compressedTexImage2D", "compressedTexSubImage2D", "copyTexImage2D", "copyTexSubImage2D", "createTexture",
"deleteTexture", "generateMipmap", "getTexParameter", "isTexture", "texImage2D", "texSubImage2D", "texParameterf", "texParameteri", "attachShader", "bindAttribLocation", "compileShader", "createProgram", "createShader", "deleteProgram",
"deleteShader", "detachShader", "getAttachedShaders", "getProgramParameter", "getProgramInfoLog", "getShaderParameter", "getShaderPrecisionFormat", "getShaderInfoLog", "getShaderSource", "isProgram", "isShader", "linkProgram", "shaderSource",
"useProgram", "validateProgram", "disableVertexAttribArray", "enableVertexAttribArray", "getActiveAttrib", "getActiveUniform", "getAttribLocation", "getUniform", "getUniformLocation", "getVertexAttrib", "getVertexAttribOffset", "uniform1f",
"uniform1fv", "uniform1i", "uniform1iv", "uniform2f", "uniform2fv", "uniform2i", "uniform2iv", "uniform3f", "uniform3fv", "uniform3i", "uniform3iv", "uniform4f", "uniform4fv", "uniform4i", "uniform4iv", "uniformMatrix2fv", "uniformMatrix3fv",
"uniformMatrix4fv", "vertexAttrib1f", "vertexAttrib2f", "vertexAttrib3f", "vertexAttrib4f", "vertexAttrib1fv", "vertexAttrib2fv", "vertexAttrib3fv", "vertexAttrib4fv", "vertexAttribPointer", "clear", "drawArrays", "drawElements", "finish",
"flush", "getSupportedExtensions", "getExtension"
];
var implementedCounter = 0;
for (var i = 0; i < functionPropertyNames.length; i++) {
funcPropName = functionPropertyNames[i];
if (typeof gl[funcPropName] !== "undefined") {
appendToTable("webGL1FuncsPropsTable", funcPropName, "gl" + "glFuncProp" + funcPropName, "Yes");
implementedCounter++;
reportString += funcPropName + "1";
} else {
appendToTable("webGL1FuncsPropsTable", funcPropName, "gl" + "glFuncProp" + funcPropName, "No");
reportString += funcPropName + "0";
}
}
//$("#glImplementedFuncs").html(implementedCounter + "/" + functionPropertyNames.length);
}
var fpWebGL = getWebGLFingerprint();
var fpWebGLHash = "";
var reportStringHash = "";
if (fpWebGL != null) {
echoWebGLReport(); // Display report info
reportStringHash = forge_sha256(reportString).slice(0, 32); // Fingeprint (hashed report string)
return reportStringHash;
}
}
//== FIN ===============================
//=======================================
//=======================================
//== SOURCE BUSTER =====================
/** sourcebuster v1.1.1 **/
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;"undefined"!=typeof window?r=window:"undefined"!=typeof global?r=global:"undefined"!=typeof self&&(r=self),r.sbjs=e()}}(function(){return function e(r,t,s){function n(a,i){if(!t[a]){if(!r[a]){var c="function"==typeof require&&require;if(!i&&c)return c(a,!0);if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var p=t[a]={exports:{}};r[a][0].call(p.exports,function(e){var t=r[a][1][e];return n(t?t:e)},p,p.exports,e,r,t,s)}return t[a].exports}for(var o="function"==typeof require&&require,a=0;a0))return x=a.getHost(e),!0;for(var r=0;r0)for(var o=0;o0)for(var a=0;a {
sendYandexGoal("30sec");
}, 30000 );
}
// Scroll 50%, 100%
let windowH = $(window).height();
let docH = $(document).height();
let flag50 = true;
let flag100 = true;
$(window).scroll(function() {
let scrollTop = $(document).scrollTop();
if ( "1"=="1" ) {
let scrollTop = $(document).scrollTop();
//50% scroll
if (flag50) {
if (scrollTop+windowH/2 > docH/2) {
sendYandexGoal("scroll 50");
flag50 = false;
}
}
}
if ( "1"=="1" ) {
//100% scroll
if (flag100) {
if (scrollTop+windowH >= docH) {
sendYandexGoal("scroll 100");
flag100 = false;
}
}
}
});
}
function initFingerData() {
let finger = getFinger();
window.waf.siClientId = finger;
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. fingerId="+finger);
}
let url = "data/waf.php?sinid="+finger;
$.get(url, function () {
});
}
function isWafSend( vars, callback ) {
if ( typeof(vars)=="undefined" || vars==null || !vars ) {
vars = [];
}
if (
(document.location.href.indexOf('_ssend=1')>0) ||
(document.location.href.indexOf('_sdebug=1')>0) ||
("0"=="0") ||
"0"=="1"
) {
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. Принудительная отправка. Параметр _ssend");
console.log("@@WAF. isSend=1");
}
window.waf.isSend = true;
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. isSend="+window.waf.isSend);
}
if ( typeof(callback)!="undefined" ) {
let resp = JSON.stringify( { action:"success", text:"debug or disable" } );
console.log("!!!!!!!!!!",resp);
callback( window.waf.isSend, resp );
}
}else {
$.post("data/waf.php?issend", vars, function (resp) {
let jsonResult = JSON.parse(resp);
let isSend = ((jsonResult["action"] == "success") ? true : false);
window.waf.isSend = isSend;
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. isSend="+window.waf.isSend);
}
if ( typeof(callback)!="undefined" ) {
console.log("!!!!!!!!!!",resp);
callback( window.waf.isSend, resp );
}
});
}
}
function wafSend( form, callbackSuccess, callbackError ) {
let formCenter = $("select[name='center']", form).val();
if ($("select[name='center']", form).length < 1) {
formCenter = $("input[name='center']", form).val();
}
$(document).on("change", "select[name='center']", function() {
formCenter = $(this).val();
});
//let serializedDataString = $(form).serialize();
let dataArray = $(form).serializeArray();
let formTitle = $("input[name='title']", form).val();
let formName = $("input[name=name]", form).val();
let formPhone = $("input[name=phone]", form).val();
//== IS WAF SEND? ==
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. sendForm; data=",dataArray);
}
isWafSend( dataArray, function(res) {
if ( res!=false ) {
//== Success ==
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. sendForm; response=success");
}
//== Callback
if ( typeof(callbackSuccess)!="undefined" ) {
callbackSuccess( res );
}
console.log(formCenter);
//== Calltouch ==
if ( "1"=="1" ) {
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. Send calltouch data@@");
}
sendCallTouchData({
"title": formTitle,
"name": formName,
"phone": formPhone,
"center": formCenter
});
}
//== Comagic ==
if ( "0"=="1" ) {
if ( typeof(Comagic)!="undefined" && typeof(Comagic.addOfflineRequest)!="undefined" ) {
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. Send comagic data@@");
}
Comagic.addOfflineRequest({phone: formPhone});
}
}
if ( "1"=="1" ) {
sendYandexGoal("lead");
}
}else {
//== Error ==
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. sendForm; response=error");
}
if ( typeof(callbackError)!="undefined" ) {
callbackError( res );
}
}
//== MAIL ==
$.post("data/mail.php", dataArray, function (data) {
$(form).trigger('reset');
$('input[name=files]', form).val('');
$('.uploader_text', form).css('display', 'inline-block');
$('.uploader_images_count', form).hide();
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. sendForm; mail.response", data);
}
});
});
}
function initCheckPasteData() {
$( document ).on( "paste", "input", function() {
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. paste!");
}
let url = "data/waf.php?ispaste=1";
$.get(url, function () {
//console.log("yandexClient",yandexClientId);
});
});
}
//== WAF ===============================
//=======================================
//==========================================================================================
//== CallTouch
function sendCallTouchData(e_vars) {
if (typeof (e_vars) == "undefined") e_vars = [];
if (typeof (e_vars["name"]) == "undefined") e_vars["name"] = "";
if (typeof (e_vars["phone"]) == "undefined") e_vars["phone"] = "";
if (typeof (e_vars["title"]) == "undefined") e_vars["title"] = "";
if (typeof (e_vars["center"]) == "undefined") e_vars["center"] = "";
if (typeof (e_vars["calltouch_route_key"]) == "undefined") e_vars["calltouch_route_key"] = "";
var l_result = {};
var l_phone = "";
var l_name = "";
var l_title = "";
l_calltouch_route_key = "undefined";
try {
l_phone = e_vars["phone"];
l_name = e_vars["name"];
l_title = e_vars["title"];
l_center = e_vars["center"];
l_calltouch_route_key = e_vars["calltouch_route_key"];
l_result.name = l_name;
l_result.phone = l_phone;
l_result.title = l_title;
l_result.center = l_center;
l_result.calltouch_route_key = l_calltouch_route_key;
l_result.url = document.location.href;
l_result.referrer = document.referrer;
l_result.user_agent = window.navigator.userAgent;
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. CallTouch send:", l_result);
}
l_result.ya = [];
l_result.ga = [];
clientId = "";
trackingId = "";
//Google
if (typeof (ga) != "undefined" && typeof (ga) == "function") {
try {
ga(function (tracker) {
if (typeof (ga.getAll) == "function") {
//Ga list
l_ga_list = ga.getAll();
if (typeof (l_ga_list) == "object" && l_ga_list.length > 0) {
for (l_key in l_ga_list) {
l_ga = l_ga_list[l_key];
clientId = l_ga.get('clientId');
trackingId = l_ga.get('trackingId');
//new ga push
l_ga_find = 0;
for (l_temp_ga_key in l_result.ga) {
l_temp_ga_value = l_result.ga[l_temp_ga_key];
if (l_temp_ga_value["trackingId"] == trackingId) l_ga_find = 1;
}//end_ for
if (l_ga_find != 1) {
l_result.ga.push({ "type": "list", "trackingId": trackingId, "clientId": clientId });
}//end_ if
}//end_ for
//!!OLD!!
if (l_ga_list.length > 0) {
clientId = l_ga_list[0].get('clientId');
trackingId = l_ga_list[0].get('trackingId');
}//end_ if
}//end_ if
}//end_ if
//!!OLD!!
//l_result.push( {"trackingId":trackingId, "clientId":clientId} );
});
} catch (err) {
try {
clientId = tracker.get('clientId');
trackingId = tracker.get('trackingId');
//new ga push
l_result.ga.push({ "type": "single", "trackingId": trackingId, "clientId": clientId });
} catch (err) {
}
}//end_ try_ catch
}//end_ if
//Yandex
if (typeof (Ya) != "undefined" && typeof (Ya) == "object" && typeof (Ya.Metrika) == "function" && typeof (Ya.Metrika.counters) == "function") {
l_ya_counters = Ya.Metrika.counters();
if (typeof (l_ya_counters) == "object" && typeof (l_ya_counters.length) != "undefined" && l_ya_counters.length > 0) {
for (var i = 0; i < l_ya_counters.length; i++) {
l_ya_counter = l_ya_counters[i];
l_ya_counter_type = l_ya_counter.type;
l_ya_counter_id = l_ya_counter.id;
l_ya_client_id = window["yaCounter" + l_ya_counter_id].getClientID();
l_result.ya.push({ "type": l_ya_counter_type, "trackingId": l_ya_counter_id, "clientId": l_ya_client_id });
}//end_ for_ i
}//end_ if
}//end_ if
} catch (err) {
}
//calltouch SessionId
l_result.calltouchSessionId = "";
try {
l_result.calltouchSessionId = window.ct('calltracking_params')[0].sessionId;
}
catch (e) {
}
//console.log( "[[[",l_result );
//console.log("[[[==", JSON.stringify(l_result));
$.post("data/calltouch.php", { "data": JSON.stringify(l_result) }, function (data) {
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. CallTouch result:", data);
}
});
}//end_ func
//== CallTouch
//==========================================================================================
//==========================================================================================
//== yaCounter
function sendYandexGoal( goalName ) {
getYandexIds( function( ids ){
for( k in ids ) {
let ymId = ids[k];
let yaCounter = window['yaCounter' + ymId];
if ( typeof(yaCounter)!="undefined" ) {
if ( typeof(window.ym)!="undefined" ) {
ym(ymId,'reachGoal', goalName );
if ( window.waf.isDebug==1 ) {
console.log( "@@WAF. yaCounter" + ymId + "; goalName="+goalName+"; send" );
}
} else {
yaCounter.reachGoal( goalName );
if ( window.waf.isDebug==1 ) {
console.log( "@@WAF. yaCounter" + ymId + "; goalName="+goalName+"; send" );
}
}
}
}
} );
}
//== yaCounter
//==========================================================================================
//==========================================================================================
//== typ (Не сделано)
function initSbjs() {
sbjs.init({
//lifetime: 3,
//domain: 'domain.com',
//lifetime: 3,
//callback: function(result){ console.log(result.current.typ); }
session_length: 1,
callback: function(result){
let typ = sbjs.get.current.typ;
window.waf.typ = typ;
let url = "data/waf.php?typ="+typ;
$.get(url, function () {
});
if ( window.waf.isDebug==1 ) {
console.log("@@WAF. typ="+typ);
}
}
});
}
//== typ
//==========================================================================================
function initWaf(){
window.waf = {};
window.waf.calltouchIsEnable = "1";
window.waf.comagicIsEnable = "0";
}
function initIsDebug() {
window.waf.isDebug = 0;
if ( "0"=="1" ) {
window.waf.isDebug = 1;
console.log("@@WAF. Дебаг включен");
}
}
function initIsWebdriver() {
window.waf.isWebdriver = (navigator.webdriver)?1:0;
let url = "data/waf.php?iswebdriver="+window.waf.isWebdriver;
$.get(url, function () {
//console.log("yandexClient",yandexClientId);
});
}
$(function () {
initWaf();
initIsDebug();
initIsWebdriver();
initYandexData();
initYandexGoal();
initGoogleData();
initFingerData();
initCheckPasteData();
initSbjs();
});
|