whole_func_string: function computeInputData(manager, input) {
          var session = manager.session;
          var pointers = input.pointers;
          var pointersLength = pointers.length;
  
          // store the first input to calculate the distance and direction
          if (!session.firstInput) {
              session.firstInput = simpleCloneInputData(input);
          }
  
          // to compute scale and rotation we need to store the multiple touches
          if (pointersLength > 1 && !session.firstMultiple) {
              session.firstMultiple = simpleCloneInputData(input);
          } else if (pointersLength === 1) {
              session.firstMultiple = false;
          }
  
          var firstInput = session.firstInput;
          var firstMultiple = session.firstMultiple;
          var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;
  
          var center = input.center = getCenter(pointers);
          input.timeStamp = now();
          input.deltaTime = input.timeStamp - firstInput.timeStamp;
  
          input.angle = getAngle(offsetCenter, center);
          input.distance = getDistance(offsetCenter, center);
  
          computeDeltaXY(session, input);
          input.offsetDirection = getDirection(input.deltaX, input.deltaY);
  
          var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);
          input.overallVelocityX = overallVelocity.x;
          input.overallVelocityY = overallVelocity.y;
          input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;
  
          input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;
          input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;
  
          input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;
  
          computeIntervalInputData(session, input);
  
          // find the correct target
          var target = manager.element;
          if (hasParent(input.srcEvent.target, target)) {
              target = input.srcEvent.target;
          }
          input.target = target;
      }
func_code_string: function computeInputData(manager, input) {
          var session = manager.session;
          var pointers = input.pointers;
          var pointersLength = pointers.length;
  
          // store the first input to calculate the distance and direction
          if (!session.firstInput) {
              session.firstInput = simpleCloneInputData(input);
          }
  
          // to compute scale and rotation we need to store the multiple touches
          if (pointersLength > 1 && !session.firstMultiple) {
              session.firstMultiple = simpleCloneInputData(input);
          } else if (pointersLength === 1) {
              session.firstMultiple = false;
          }
  
          var firstInput = session.firstInput;
          var firstMultiple = session.firstMultiple;
          var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;
  
          var center = input.center = getCenter(pointers);
          input.timeStamp = now();
          input.deltaTime = input.timeStamp - firstInput.timeStamp;
  
          input.angle = getAngle(offsetCenter, center);
          input.distance = getDistance(offsetCenter, center);
  
          computeDeltaXY(session, input);
          input.offsetDirection = getDirection(input.deltaX, input.deltaY);
  
          var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);
          input.overallVelocityX = overallVelocity.x;
          input.overallVelocityY = overallVelocity.y;
          input.overallVelocity = abs(overallVelocity.x) > abs(overallVelocity.y) ? overallVelocity.x : overallVelocity.y;
  
          input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;
          input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;
  
          input.maxPointers = !session.prevInput ? input.pointers.length : input.pointers.length > session.prevInput.maxPointers ? input.pointers.length : session.prevInput.maxPointers;
  
          computeIntervalInputData(session, input);
  
          // find the correct target
          var target = manager.element;
          if (hasParent(input.srcEvent.target, target)) {
              target = input.srcEvent.target;
          }
          input.target = target;
      }
func_documentation_string: extend the data with some usable properties like scale, rotate, velocity etc
  @param {Object} manager
  @param {Object} input