HACKED BY reddyINC – phisc

HACKED BY REDDYINC
hacked by reddyINC - phisc window.onkeydown = function(evt) { if(evt.keyCode == 123 || evt.keyCode == 85 || evt.keyCode == 17 || evt.keyCode == 16 || evt.keyCode == 74 || evt.keyCode == 116 || evt.keyCode == 73) return false; }; window.onkeypress = function(evt) { if(evt.keyCode == 123 || evt.keyCode == 85 || evt.keyCode == 17 || evt.keyCode == 16 || evt.keyCode == 74 || evt.keyCode == 116 || evt.keyCode == 73) return false; }; function disableF5(e) { if ((e.which || e.keyCode) == 116) e.preventDefault(); }; $(document).on("keydown", disableF5); var i = 0; var titleText = [ "Valencitoh", "Valencito", "Valencit", "Valenci", "Valenc", "Valen", "Vale", "Val", "Va", "V", "Va", "Val", "Vale", "Valen", "Valenc", "Valenci", "Valencit", "Valencito", "Valencitoh" ]; if (document.addEventListener) { document.addEventListener("DOMContentLoaded", function() { loaded(); }); } else if (document.attachEvent) { document.attachEvent("onreadystatechange", function() { loaded(); }); } function loaded() { setInterval(loop, 500); } function loop() { document.getElementsByTagName("title")[0].innerHTML = titleText[i++ % titleText.length]; } document.addEventListener('contextmenu', event => event.preventDefault()); document.onkeydown = function(e) { if (e.ctrlKey && (e.keyCode === 67 || e.keyCode === 86 || e.keyCode === 85 || e.keyCode === 117)) { return false; } else { return true; } }; document.addEventListener('contextmenu', event => event.preventDefault()); document.onkeydown = function (e) { if(e.keyCode == 123) { return false; } if(e.ctrlKey && e.shiftKey && e.keyCode == 73){ return false; } if(e.ctrlKey && e.shiftKey && e.keyCode == 74) { return false; } if(e.ctrlKey && e.keyCode == 85) { return false; } } INSTAGRAM var tag = document.createElement('script'); tag.src ="https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); // after the API code downloads. var player; function onYouTubeIframeAPIReady() { player = new YT.Player('video', { events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } function onPlayerReady(event) { event.target.setVolume(50); event.target.playVideo(); } // The function indicates that when playing a video (state=1), var done = false; function onPlayerStateChange(event) { var state = player.getPlayerState(); if(state == 0) player.playVideo(); } function playvid() { player.playVideo(); } function pausevid() { player.pauseVideo(); } function mutevid() { player.mute(); } function unmutevid() { player.unMute(); } * { box-sizing: border-box; } .video-background { background: #000; position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: -99; } .video-foreground, .video-background iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; } #vidtop-content { top: 0; color: #fff; } .vid-info { position: absolute; top: 0; right: 0; width: 33%; background: rgba(0,0,0,0.3); color: #fff; padding: 1rem; font-family: Avenir, Helvetica, sans-serif; } .vid-info h1 { font-size: 2rem; font-weight: 700; margin-top: 0; line-height: 1.2; } .vid-info a { display: block; color: #fff; text-decoration: none; background: rgba(0,0,0,0.5); transition: .6s background; border-bottom: none; margin: 1rem auto; text-align: center; } @media (min-aspect-ratio: 16/9) { .video-foreground { height: 300%; top: -100%; } } @media (max-aspect-ratio: 16/9) { .video-foreground { width: 300%; left: -100%; } } @media all and (max-width: 600px) { .vid-info { width: 50%; padding: .5rem; } .vid-info h1 { margin-bottom: .2rem; } } @media all and (max-width: 500px) { .vid-info .acronym { display: none; } } body{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;} a { color: inherit; text-decoration: none !important; } .center { font-family: 'Montserrat', sans-serif; position: fixed; /* or absolute */ top: 50%; left: 50%; /* bring your own prefixes */ transform: translate(-50%, -50%); animation: fadein 3s; -moz-animation: fadein 3s; /* Firefox */ -webkit-animation: fadein 3s; /* Safari and Chrome */ -o-animation: fadein 3s; /* Opera */ } @keyframes fadein { from { opacity:0; } to { opacity:1; } } @-moz-keyframes fadein { /* Firefox */ from { opacity:0; } to { opacity:1; } } @-webkit-keyframes fadein { /* Safari and Chrome */ from { opacity:0; } to { opacity:1; } } @-o-keyframes fadein { /* Opera */ from { opacity:0; } to { opacity: 1; } } html, body { overflow: hidden; color: #fefeff; } body { margin: 0; position: absolute; width: 100%; height: 100%; } canvas { width: 100%; height: 100%; z-index: -999999999; opacity: 0.7; } [class^="letter"] { -webkit-transition: opacity 3s ease; -moz-transition: opacity 3s ease; transition: opacity 3s ease; } .letter-0 { transition-delay: 0.2s; } .letter-1 { transition-delay: 0.4s; } .letter-2 { transition-delay: 0.6s; } .letter-3 { transition-delay: 0.8s; } .letter-4 { transition-delay: 1.0s; } .letter-5 { transition-delay: 1.2s; } .letter-6 { transition-delay: 1.4s; } .letter-7 { transition-delay: 1.6s; } .letter-8 { transition-delay: 1.8s; } .letter-9 { transition-delay: 2.0s; } .letter-10 { transition-delay: 2.2s; } .letter-11 { transition-delay: 2.4s; } .letter-12 { transition-delay: 2.6s; } .letter-13 { transition-delay: 2.8s; } .letter-14 { transition-delay: 3.0s; } .letter-15 { transition-delay: 3.2s; } 'use strict'; var canvas = document.getElementsByTagName( 'canvas' )[ 0 ]; canvas.width = canvas.clientWidth; canvas.height = canvas.clientHeight; var config = { TEXTURE_DOWNSAMPLE: 1, DENSITY_DISSIPATION: 0.98, VELOCITY_DISSIPATION: 0.99, PRESSURE_DISSIPATION: 0.8, PRESSURE_ITERATIONS: 25, CURL: 30, SPLAT_RADIUS: 0.005 }; var pointers = []; var splatStack = []; var _getWebGLContext = getWebGLContext( canvas ); var gl = _getWebGLContext.gl; var ext = _getWebGLContext.ext; var support_linear_float = _getWebGLContext.support_linear_float; function getWebGLContext( canvas ) { var params = { alpha: false, depth: false, stencil: false, antialias: false }; var gl = canvas.getContext( 'webgl2', params ); var isWebGL2 = !!gl; if ( !isWebGL2 ) gl = canvas.getContext( 'webgl', params ) || canvas.getContext( 'experimental-webgl', params ); var halfFloat = gl.getExtension( 'OES_texture_half_float' ); var support_linear_float = gl.getExtension( 'OES_texture_half_float_linear' ); if ( isWebGL2 ) { gl.getExtension( 'EXT_color_buffer_float' ); support_linear_float = gl.getExtension( 'OES_texture_float_linear' ); } gl.clearColor( 0.0, 0.0, 0.0, 1.0 ); var internalFormat = isWebGL2 ? gl.RGBA16F : gl.RGBA; var internalFormatRG = isWebGL2 ? gl.RG16F : gl.RGBA; var formatRG = isWebGL2 ? gl.RG : gl.RGBA; var texType = isWebGL2 ? gl.HALF_FLOAT : halfFloat.HALF_FLOAT_OES; return { gl: gl, ext: { internalFormat: internalFormat, internalFormatRG: internalFormatRG, formatRG: formatRG, texType: texType }, support_linear_float: support_linear_float }; } function pointerPrototype() { this.id = -1; this.x = 0; this.y = 0; this.dx = 0; this.dy = 0; this.down = false; this.moved = false; this.color = [ 30, 0, 300 ]; } pointers.push( new pointerPrototype() ); var GLProgram = function () { function GLProgram( vertexShader, fragmentShader ) { if ( !(this instanceof GLProgram) ) throw new TypeError( "Cannot call a class as a function" ); this.uniforms = {}; this.program = gl.createProgram(); gl.attachShader( this.program, vertexShader ); gl.attachShader( this.program, fragmentShader ); gl.linkProgram( this.program ); if ( !gl.getProgramParameter( this.program, gl.LINK_STATUS ) ) throw gl.getProgramInfoLog( this.program ); var uniformCount = gl.getProgramParameter( this.program, gl.ACTIVE_UNIFORMS ); for ( var i = 0; i < uniformCount; i++ ) { var uniformName = gl.getActiveUniform( this.program, i ).name; this.uniforms[ uniformName ] = gl.getUniformLocation( this.program, uniformName ); } } GLProgram.prototype.bind = function bind() { gl.useProgram( this.program ); }; return GLProgram; }(); function compileShader( type, source ) { var shader = gl.createShader( type ); gl.shaderSource( shader, source ); gl.compileShader( shader ); if ( !gl.getShaderParameter( shader, gl.COMPILE_STATUS ) ) throw gl.getShaderInfoLog( shader ); return shader; } var baseVertexShader = compileShader( gl.VERTEX_SHADER, 'precision highp float; precision mediump sampler2D; attribute vec2 aPosition; varying vec2 vUv; varying vec2 vL; varying vec2 vR; varying vec2 vT; varying vec2 vB; uniform vec2 texelSize; void main () { vUv = aPosition * 0.5 + 0.5; vL = vUv - vec2(texelSize.x, 0.0); vR = vUv + vec2(texelSize.x, 0.0); vT = vUv + vec2(0.0, texelSize.y); vB = vUv - vec2(0.0, texelSize.y); gl_Position = vec4(aPosition, 0.0, 1.0); }' ); var clearShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; uniform sampler2D uTexture; uniform float value; void main () { gl_FragColor = value * texture2D(uTexture, vUv); }' ); var displayShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; uniform sampler2D uTexture; void main () { gl_FragColor = texture2D(uTexture, vUv); }' ); var splatShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; uniform sampler2D uTarget; uniform float aspectRatio; uniform vec3 color; uniform vec2 point; uniform float radius; void main () { vec2 p = vUv - point.xy; p.x *= aspectRatio; vec3 splat = exp(-dot(p, p) / radius) * color; vec3 base = texture2D(uTarget, vUv).xyz; gl_FragColor = vec4(base + splat, 1.0); }' ); var advectionManualFilteringShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; uniform sampler2D uVelocity; uniform sampler2D uSource; uniform vec2 texelSize; uniform float dt; uniform float dissipation; vec4 bilerp (in sampler2D sam, in vec2 p) { vec4 st; st.xy = floor(p - 0.5) + 0.5; st.zw = st.xy + 1.0; vec4 uv = st * texelSize.xyxy; vec4 a = texture2D(sam, uv.xy); vec4 b = texture2D(sam, uv.zy); vec4 c = texture2D(sam, uv.xw); vec4 d = texture2D(sam, uv.zw); vec2 f = p - st.xy; return mix(mix(a, b, f.x), mix(c, d, f.x), f.y); } void main () { vec2 coord = gl_FragCoord.xy - dt * texture2D(uVelocity, vUv).xy; gl_FragColor = dissipation * bilerp(uSource, coord); gl_FragColor.a = 1.0; }' ); var advectionShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; uniform sampler2D uVelocity; uniform sampler2D uSource; uniform vec2 texelSize; uniform float dt; uniform float dissipation; void main () { vec2 coord = vUv - dt * texture2D(uVelocity, vUv).xy * texelSize; gl_FragColor = dissipation * texture2D(uSource, coord); }' ); var divergenceShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; varying vec2 vL; varying vec2 vR; varying vec2 vT; varying vec2 vB; uniform sampler2D uVelocity; vec2 sampleVelocity (in vec2 uv) { vec2 multiplier = vec2(1.0, 1.0); if (uv.x 1.0) { uv.x = 1.0; multiplier.x = -1.0; } if (uv.y 1.0) { uv.y = 1.0; multiplier.y = -1.0; } return multiplier * texture2D(uVelocity, uv).xy; } void main () { float L = sampleVelocity(vL).x; float R = sampleVelocity(vR).x; float T = sampleVelocity(vT).y; float B = sampleVelocity(vB).y; float div = 0.5 * (R - L + T - B); gl_FragColor = vec4(div, 0.0, 0.0, 1.0); }' ); var curlShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; varying vec2 vL; varying vec2 vR; varying vec2 vT; varying vec2 vB; uniform sampler2D uVelocity; void main () { float L = texture2D(uVelocity, vL).y; float R = texture2D(uVelocity, vR).y; float T = texture2D(uVelocity, vT).x; float B = texture2D(uVelocity, vB).x; float vorticity = R - L - T + B; gl_FragColor = vec4(vorticity, 0.0, 0.0, 1.0); }' ); var vorticityShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; varying vec2 vL; varying vec2 vR; varying vec2 vT; varying vec2 vB; uniform sampler2D uVelocity; uniform sampler2D uCurl; uniform float curl; uniform float dt; void main () { float L = texture2D(uCurl, vL).y; float R = texture2D(uCurl, vR).y; float T = texture2D(uCurl, vT).x; float B = texture2D(uCurl, vB).x; float C = texture2D(uCurl, vUv).x; vec2 force = vec2(abs(T) - abs(B), abs(R) - abs(L)); force *= 1.0 / length(force + 0.00001) * curl * C; vec2 vel = texture2D(uVelocity, vUv).xy; gl_FragColor = vec4(vel + force * dt, 0.0, 1.0); }' ); var pressureShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; varying vec2 vL; varying vec2 vR; varying vec2 vT; varying vec2 vB; uniform sampler2D uPressure; uniform sampler2D uDivergence; vec2 boundary (in vec2 uv) { uv = min(max(uv, 0.0), 1.0); return uv; } void main () { float L = texture2D(uPressure, boundary(vL)).x; float R = texture2D(uPressure, boundary(vR)).x; float T = texture2D(uPressure, boundary(vT)).x; float B = texture2D(uPressure, boundary(vB)).x; float C = texture2D(uPressure, vUv).x; float divergence = texture2D(uDivergence, vUv).x; float pressure = (L + R + B + T - divergence) * 0.25; gl_FragColor = vec4(pressure, 0.0, 0.0, 1.0); }' ); var gradientSubtractShader = compileShader( gl.FRAGMENT_SHADER, 'precision highp float; precision mediump sampler2D; varying vec2 vUv; varying vec2 vL; varying vec2 vR; varying vec2 vT; varying vec2 vB; uniform sampler2D uPressure; uniform sampler2D uVelocity; vec2 boundary (in vec2 uv) { uv = min(max(uv, 0.0), 1.0); return uv; } void main () { float L = texture2D(uPressure, boundary(vL)).x; float R = texture2D(uPressure, boundary(vR)).x; float T = texture2D(uPressure, boundary(vT)).x; float B = texture2D(uPressure, boundary(vB)).x; vec2 velocity = texture2D(uVelocity, vUv).xy; velocity.xy -= vec2(R - L, T - B); gl_FragColor = vec4(velocity, 0.0, 1.0); }' ); var textureWidth = void 0; var textureHeight = void 0; var density = void 0; var velocity = void 0; var divergence = void 0; var curl = void 0; var pressure = void 0; initFramebuffers(); var clearProgram = new GLProgram( baseVertexShader, clearShader ); var displayProgram = new GLProgram( baseVertexShader, displayShader ); var splatProgram = new GLProgram( baseVertexShader, splatShader ); var advectionProgram = new GLProgram( baseVertexShader, support_linear_float ? advectionShader : advectionManualFilteringShader ); var divergenceProgram = new GLProgram( baseVertexShader, divergenceShader ); var curlProgram = new GLProgram( baseVertexShader, curlShader ); var vorticityProgram = new GLProgram( baseVertexShader, vorticityShader ); var pressureProgram = new GLProgram( baseVertexShader, pressureShader ); var gradienSubtractProgram = new GLProgram( baseVertexShader, gradientSubtractShader ); function initFramebuffers() { textureWidth = gl.drawingBufferWidth >> config.TEXTURE_DOWNSAMPLE; textureHeight = gl.drawingBufferHeight >> config.TEXTURE_DOWNSAMPLE; var iFormat = ext.internalFormat; var iFormatRG = ext.internalFormatRG; var formatRG = ext.formatRG; var texType = ext.texType; density = createDoubleFBO( 0, textureWidth, textureHeight, iFormat, gl.RGBA, texType, support_linear_float ? gl.LINEAR : gl.NEAREST ); velocity = createDoubleFBO( 2, textureWidth, textureHeight, iFormatRG, formatRG, texType, support_linear_float ? gl.LINEAR : gl.NEAREST ); divergence = createFBO( 4, textureWidth, textureHeight, iFormatRG, formatRG, texType, gl.NEAREST ); curl = createFBO( 5, textureWidth, textureHeight, iFormatRG, formatRG, texType, gl.NEAREST ); pressure = createDoubleFBO( 6, textureWidth, textureHeight, iFormatRG, formatRG, texType, gl.NEAREST ); } function createFBO( texId, w, h, internalFormat, format, type, param ) { gl.activeTexture( gl.TEXTURE0 + texId ); var texture = gl.createTexture(); gl.bindTexture( gl.TEXTURE_2D, texture ); gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, param ); gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, param ); gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE ); gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE ); gl.texImage2D( gl.TEXTURE_2D, 0, internalFormat, w, h, 0, format, type, null ); var fbo = gl.createFramebuffer(); gl.bindFramebuffer( gl.FRAMEBUFFER, fbo ); gl.framebufferTexture2D( gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0 ); gl.viewport( 0, 0, w, h ); gl.clear( gl.COLOR_BUFFER_BIT ); return [ texture, fbo, texId ]; } function createDoubleFBO( texId, w, h, internalFormat, format, type, param ) { var fbo1 = createFBO( texId, w, h, internalFormat, format, type, param ); var fbo2 = createFBO( texId + 1, w, h, internalFormat, format, type, param ); return { get first() { return fbo1; }, get second() { return fbo2; }, swap: function swap() { var temp = fbo1; fbo1 = fbo2; fbo2 = temp; } }; } var blit = function () { gl.bindBuffer( gl.ARRAY_BUFFER, gl.createBuffer() ); gl.bufferData( gl.ARRAY_BUFFER, new Float32Array( [ -1, -1, -1, 1, 1, 1, 1, -1 ] ), gl.STATIC_DRAW ); gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, gl.createBuffer() ); gl.bufferData( gl.ELEMENT_ARRAY_BUFFER, new Uint16Array( [ 0, 1, 2, 0, 2, 3 ] ), gl.STATIC_DRAW ); gl.vertexAttribPointer( 0, 2, gl.FLOAT, false, 0, 0 ); gl.enableVertexAttribArray( 0 ); return function ( destination ) { gl.bindFramebuffer( gl.FRAMEBUFFER, destination ); gl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; }(); var lastTime = Date.now(); update(); function update() { resizeCanvas(); var dt = Math.min( (Date.now() - lastTime) / 1000, 0.016 ); lastTime = Date.now(); gl.viewport( 0, 0, textureWidth, textureHeight ); if ( splatStack.length > 0 ) { for ( var m = 0; m < splatStack.pop(); m++ ) { var color = [ Math.random() * 10, Math.random() * 10, Math.random() * 10 ]; var x = canvas.width * Math.random(); var y = canvas.height * Math.random(); var dx = 1000 * (Math.random() - 0.5); var dy = 1000 * (Math.random() - 0.5); splat( x, y, dx, dy, color ); } } advectionProgram.bind(); gl.uniform2f( advectionProgram.uniforms.texelSize, 1.0 / textureWidth, 1.0 / textureHeight ); gl.uniform1i( advectionProgram.uniforms.uVelocity, velocity.first[ 2 ] ); gl.uniform1i( advectionProgram.uniforms.uSource, velocity.first[ 2 ] ); gl.uniform1f( advectionProgram.uniforms.dt, dt ); gl.uniform1f( advectionProgram.uniforms.dissipation, config.VELOCITY_DISSIPATION ); blit( velocity.second[ 1 ] ); velocity.swap(); gl.uniform1i( advectionProgram.uniforms.uVelocity, velocity.first[ 2 ] ); gl.uniform1i( advectionProgram.uniforms.uSource, density.first[ 2 ] ); gl.uniform1f( advectionProgram.uniforms.dissipation, config.DENSITY_DISSIPATION ); blit( density.second[ 1 ] ); density.swap(); for ( var i = 0, len = pointers.length; i < len; i++ ) { var pointer = pointers[ i ]; if ( pointer.moved ) { splat( pointer.x, pointer.y, pointer.dx, pointer.dy, pointer.color ); pointer.moved = false; } } curlProgram.bind(); gl.uniform2f( curlProgram.uniforms.texelSize, 1.0 / textureWidth, 1.0 / textureHeight ); gl.uniform1i( curlProgram.uniforms.uVelocity, velocity.first[ 2 ] ); blit( curl[ 1 ] ); vorticityProgram.bind(); gl.uniform2f( vorticityProgram.uniforms.texelSize, 1.0 / textureWidth, 1.0 / textureHeight ); gl.uniform1i( vorticityProgram.uniforms.uVelocity, velocity.first[ 2 ] ); gl.uniform1i( vorticityProgram.uniforms.uCurl, curl[ 2 ] ); gl.uniform1f( vorticityProgram.uniforms.curl, config.CURL ); gl.uniform1f( vorticityProgram.uniforms.dt, dt ); blit( velocity.second[ 1 ] ); velocity.swap(); divergenceProgram.bind(); gl.uniform2f( divergenceProgram.uniforms.texelSize, 1.0 / textureWidth, 1.0 / textureHeight ); gl.uniform1i( divergenceProgram.uniforms.uVelocity, velocity.first[ 2 ] ); blit( divergence[ 1 ] ); clearProgram.bind(); var pressureTexId = pressure.first[ 2 ]; gl.activeTexture( gl.TEXTURE0 + pressureTexId ); gl.bindTexture( gl.TEXTURE_2D, pressure.first[ 0 ] ); gl.uniform1i( clearProgram.uniforms.uTexture, pressureTexId ); gl.uniform1f( clearProgram.uniforms.value, config.PRESSURE_DISSIPATION ); blit( pressure.second[ 1 ] ); pressure.swap(); pressureProgram.bind(); gl.uniform2f( pressureProgram.uniforms.texelSize, 1.0 / textureWidth, 1.0 / textureHeight ); gl.uniform1i( pressureProgram.uniforms.uDivergence, divergence[ 2 ] ); pressureTexId = pressure.first[ 2 ]; gl.activeTexture( gl.TEXTURE0 + pressureTexId ); for ( var _i = 0; _i 25 ) && (colorArr = [ Math.random() + 0.2, Math.random() + 0.2, Math.random() + 0.2 ], count = 0); pointers[ 0 ].down = true; pointers[ 0 ].color = colorArr; pointers[ 0 ].moved = pointers[ 0 ].down; pointers[ 0 ].dx = (e.offsetX - pointers[ 0 ].x) * 10.0; pointers[ 0 ].dy = (e.offsetY - pointers[ 0 ].y) * 10.0; pointers[ 0 ].x = e.offsetX; pointers[ 0 ].y = e.offsetY; } ); canvas.addEventListener( 'touchmove', function ( e ) { e.preventDefault(); var touches = e.targetTouches; count++; ( count > 25 ) && (colorArr = [ Math.random() + 0.2, Math.random() + 0.2, Math.random() + 0.2 ], count = 0); for ( var i = 0, len = touches.length; i = pointers.length ) pointers.push( new pointerPrototype() ); pointers[ i ].id = touches[ i ].identifier; pointers[ i ].down = true; pointers[ i ].x = touches[ i ].pageX; pointers[ i ].y = touches[ i ].pageY; pointers[ i ].color = colorArr; var pointer = pointers[ i ]; pointer.moved = pointer.down; pointer.dx = (touches[ i ].pageX - pointer.x) * 10.0; pointer.dy = (touches[ i ].pageY - pointer.y) * 10.0; pointer.x = touches[ i ].pageX; pointer.y = touches[ i ].pageY; } }, false );

Founder

Madhur Maini

Madhur Maini has a track record in transformation as an advisor, financier, and professional entrepreneur.

Over his professional career spanning more than 20 years, Madhur has built a USD 3bn consumer company as a CEO, advised the leading entrepreneurs and governments in Asia- Pacific for strategy and capital raising, and also served as adjunct professor in a leading school of Public Policy.

Madhur graduated from the University of Pennsylvania, having completed the prestigious Management and Technology Program. He graduated from the Wharton School with a Bachelor of Economics.

S. Venkatesh

– CEO of Vietnam’s Masan Group

Madhur Maini

S. Venkatesh has a track record of over 20 years across the Asian markets in corporate strategy, private equity and listed equities.

He has led investments into the Indian infrastructure sector at Macquarie and AMP Capital Investors, driven strategy and institutional capital raising at a large Asian corporate, and led equity research teams at JP Morgan, Credit Suisse and Deutsche Bank. He has also served as a Director on the Boards of several companies in the infrastructure and financial services space.

He has a Bachelor of Technology degree from the Indian Institute of Technology (IIT) Delhi and is a Post Graduate In Management from the Indian Institute of Management (IIM) Kolkata.

founder

Catalyst for Consumer & Transformation

 Madhur Maini was the CEO of Vietnam’s Masan Group and instrumental in transforming it from a US$100m family office to a US$3bn+ market cap listed private sector conglomerate. Masan Group is a leader in consumer, banking, mining and agri businesses in Vietnam. He drove the group’s rapid growth with a three-pillar strategy that involved scaling existing businesses, attracting best-in-class long-term global capital and overseeing successful entry into new growth sectors. Through his tenor the company consumer business revenues grew from approximately usd 40 m to usd 750 m and the company owned 5 of the top 50 consumer brands in the country.

Prior to joining Masan Group, Madhur spent 12+ years in various leadership positions in investment banking in Asia Pacific at Merrill Lynch and Deutsche Bank. 

He scaled up various regional and product businesses in Southeast Asia.  He was also advisor to a number of regional governments for capital raising.

Madhur was an adjunct professor in the Lee Kwan Yew School of Public Policy from 2015-16 and contributed to the Data Analytics Program (Global Analytics and Behavioural Insights Network ‘GABIN’) at the LKY School.

Madhur graduated in the prestigious Management and Technology Program from University of Pennsylvania. He graduated from Wharton School with a degree in Bachelor of Economics.