function $AdfProfiler$$() {
  this.$_functions$ = {};
  $AdfCheckpoint$$.$setCheckpointOverride$(null, $AdfProfiler$$.$_PROFILER_GROUP$, !1);
}
$goog$exportSymbol$$("AdfProfiler", $AdfProfiler$$);
$AdfProfiler$$.$_index$ = 0;
$AdfProfiler$$.$_PROP_CLASS_ID$ = "___JSProfilerClassId";
$AdfProfiler$$.$_PROP_REGISTERED$ = "___JSProfilerInstumentation";
$AdfProfiler$$.$_PROP_REGISTERED_CHECKPOINT$ = "___JSProfilerCheckpoint";
$AdfProfiler$$.$_PROP_REGISTERED_INST_METHOD$ = "___JSProfilerInstrumentedMethod";
$AdfProfiler$$.$_PROP_REGISTERED_METHOD_NAME$ = "___JSProfilerMethodName";
$AdfProfiler$$.$_PROP_REGISTERED_OBJECT$ = "___JSProfilerObjectRef";
$AdfProfiler$$.$_PROP_REGISTERED_IS_PRESENT$ = "___JSProfilerObjectIsPresent";
$AdfProfiler$$.$_PROP_CLASSNAME$ = "___JSProfilerClassName";
$AdfProfiler$$.$_PROFILER_GROUP$ = "___JSProfilerGroup";
$AdfProfiler$$.$_REGEXP_FUNCTION_NAME$ = /function\s+([\S^]+)\s*\(/;
$AdfProfiler$$.$_REGEXP_FUNCTION$ = /function[\s\S]*?\{([\s\S]+)\}/m;
$AdfProfiler$$.$_REGEXP_REGEXP$ = /.*?\/(.+)\/(.*)/;
$AdfProfiler$$.$_REGEXP_REPLACE_METHOD$ = /\$methodid\$/mgi;
$AdfProfiler$$.$_THE_INSTANCE$ = null;
$AdfProfiler$$.$getInstance$ = function $$AdfProfiler$$$$getInstance$$() {
  null == $AdfProfiler$$.$_THE_INSTANCE$ && ($AdfProfiler$$.$_THE_INSTANCE$ = new $AdfProfiler$$);
  return $AdfProfiler$$.$_THE_INSTANCE$;
};
$goog$exportSymbol$$("AdfProfiler.getInstance", $AdfProfiler$$.$getInstance$);
$AdfProfiler$$.$_isWindow$ = function $$AdfProfiler$$$$_isWindow$$($object$$11$$) {
  return $object$$11$$ == window;
};
$AdfProfiler$$.$_hasOwnMethod$ = function $$AdfProfiler$$$$_hasOwnMethod$$($object$$12$$, $methodName$$) {
  return $AdfProfiler$$.$_isWindow$($object$$12$$) ? !0 : $object$$12$$.hasOwnProperty($methodName$$);
};
$AdfProfiler$$.$_getClassName$ = function $$AdfProfiler$$$$_getClassName$$($matches$$2_object$$13$$) {
  var $className$$11$$ = null, $type$$119$$ = typeof $matches$$2_object$$13$$;
  if ($AdfProfiler$$.$_isWindow$($matches$$2_object$$13$$)) {
    return "window";
  }
  $className$$11$$ = "object" == $type$$119$$ ? $matches$$2_object$$13$$.constructor._typeName : $matches$$2_object$$13$$._typeName;
  if (null == $className$$11$$) {
    var $classText$$ = null;
    "object" == $type$$119$$ ? $classText$$ = $matches$$2_object$$13$$.constructor.toString() : "function" == $type$$119$$ && ($classText$$ = $matches$$2_object$$13$$.toString());
    $matches$$2_object$$13$$ = null;
    null != $classText$$ && ($matches$$2_object$$13$$ = $AdfProfiler$$.$_REGEXP_FUNCTION_NAME$.exec($classText$$));
    null != $matches$$2_object$$13$$ && ($className$$11$$ = $matches$$2_object$$13$$[1]);
  }
  null == $className$$11$$ && ($className$$11$$ = "[anonymous]");
  return $className$$11$$;
};
$AdfProfiler$$.$_isPrototype$ = function $$AdfProfiler$$$$_isPrototype$$($object$$14$$, $classname$$) {
  if (!$AdfProfiler$$.$_isWindow$($object$$14$$) && (null == $classname$$ && ($classname$$ = $AdfProfiler$$.$_getClassName$($object$$14$$)), "[anonymous]" != $classname$$)) {
    var $proto$$1$$ = window[$classname$$].prototype;
    return "object" == typeof $object$$14$$ && $proto$$1$$ == $object$$14$$;
  }
  return !1;
};
$AdfProfiler$$.$_getClassId$ = function $$AdfProfiler$$$$_getClassId$$($object$$15$$) {
  var $className$$12$$ = $AdfProfiler$$.$_getClassName$($object$$15$$);
  if ("function" == typeof $object$$15$$ || $AdfProfiler$$.$_isWindow$($object$$15$$)) {
    return $className$$12$$;
  }
  if ($AdfProfiler$$.$_isPrototype$($object$$15$$, $className$$12$$)) {
    return $className$$12$$ + ".prototype";
  }
  null == $object$$15$$[$AdfProfiler$$.$_PROP_CLASS_ID$] && ($object$$15$$[$AdfProfiler$$.$_PROP_CLASS_ID$] = "[INSTANCE" + $AdfProfiler$$.$_index$++ + "]");
  return $className$$12$$ + "." + $object$$15$$[$AdfProfiler$$.$_PROP_CLASS_ID$];
};
$AdfProfiler$$.$_getMethodId$ = function $$AdfProfiler$$$$_getMethodId$$($methodName$$1$$, $object$$16$$) {
  var $className$$13$$ = "";
  $AdfProfiler$$.$_isWindow$($object$$16$$) || ($className$$13$$ = $AdfProfiler$$.$_getClassId$($object$$16$$) + ".");
  return $className$$13$$ + $methodName$$1$$;
};
$AdfProfiler$$.$_isInstrumented$ = function $$AdfProfiler$$$$_isInstrumented$$($method$$2$$) {
  return null != $method$$2$$[$AdfProfiler$$.$_PROP_REGISTERED$];
};
$AdfProfiler$$.$_instrumenterFunction$ = function $$AdfProfiler$$$$_instrumenterFunction$$() {
  var $me$$1$$ = $AdfProfiler$$.$getInstance$().$_functions$.$methodId$, $checkpoint$$1$$ = $me$$1$$[$AdfProfiler$$.$_PROP_REGISTERED_CHECKPOINT$], $returnval$$ = null, $stopId$$ = null;
  try {
    $stopId$$ = $checkpoint$$1$$.start($me$$1$$, arguments), $returnval$$ = $me$$1$$[$AdfProfiler$$.$_PROP_REGISTERED_INST_METHOD$].apply(this, arguments);
  } finally {
    $checkpoint$$1$$.stop($stopId$$);
  }
  return $returnval$$;
};
$AdfProfiler$$.$_instrumentFunction$ = function $$AdfProfiler$$$$_instrumentFunction$$($methodName$$2$$, $func$$8_methodId$$2$$, $object$$17$$, $checkpoint$$2$$) {
  var $orig$$1_s$$4$$ = $AdfProfiler$$.$_REGEXP_FUNCTION$.exec($AdfProfiler$$.$_instrumenterFunction$.toString())[1];
  $func$$8_methodId$$2$$ = new Function($orig$$1_s$$4$$.replace($AdfProfiler$$.$_REGEXP_REPLACE_METHOD$, $func$$8_methodId$$2$$));
  $orig$$1_s$$4$$ = $object$$17$$[$methodName$$2$$];
  $func$$8_methodId$$2$$[$AdfProfiler$$.$_PROP_REGISTERED_CHECKPOINT$] = $checkpoint$$2$$;
  $func$$8_methodId$$2$$[$AdfProfiler$$.$_PROP_REGISTERED_INST_METHOD$] = $orig$$1_s$$4$$;
  $func$$8_methodId$$2$$[$AdfProfiler$$.$_PROP_REGISTERED_OBJECT$] = $object$$17$$;
  $func$$8_methodId$$2$$[$AdfProfiler$$.$_PROP_REGISTERED$] = $methodName$$2$$;
  $func$$8_methodId$$2$$[$AdfProfiler$$.$_PROP_REGISTERED_IS_PRESENT$] = $AdfProfiler$$.$_hasOwnMethod$($object$$17$$, $methodName$$2$$);
  for (property in $orig$$1_s$$4$$) {
    $orig$$1_s$$4$$.hasOwnProperty(property) && ($func$$8_methodId$$2$$[property] = $orig$$1_s$$4$$[property]);
  }
  return $object$$17$$[$methodName$$2$$] = $func$$8_methodId$$2$$;
};
$AdfProfiler$$.$_uninstrumentFunction$ = function $$AdfProfiler$$$$_uninstrumentFunction$$($func$$9$$) {
  if ($func$$9$$[$AdfProfiler$$.$_PROP_REGISTERED_IS_PRESENT$]) {
    var $methodName$$3$$ = $func$$9$$[$AdfProfiler$$.$_PROP_REGISTERED$], $orig$$2$$ = $func$$9$$[$AdfProfiler$$.$_PROP_REGISTERED_INST_METHOD$];
    for (property in $func$$9$$) {
      "__JSProfiler" != property.substring(0, 12) && ($orig$$2$$[property] = $func$$9$$[property]);
    }
    $func$$9$$[$AdfProfiler$$.$_PROP_REGISTERED_OBJECT$][$methodName$$3$$] = $func$$9$$[$AdfProfiler$$.$_PROP_REGISTERED_INST_METHOD$];
  } else {
    delete $func$$9$$[$func$$9$$[$AdfProfiler$$.$_PROP_REGISTERED$]];
  }
};
$AdfProfiler$$.$_isInstrumentable$ = function $$AdfProfiler$$$$_isInstrumentable$$($obj$$31_object$$18$$) {
  var $bool_property$$9$$ = property;
  $obj$$31_object$$18$$ = $obj$$31_object$$18$$[$bool_property$$9$$];
  ($bool_property$$9$$ = "function" == typeof $obj$$31_object$$18$$ && !$AdfProfiler$$.$_isInstrumented$($obj$$31_object$$18$$) && "constructor" != $bool_property$$9$$) && ($bool_property$$9$$ = null == $AdfProfiler$$.$_REGEXP_REGEXP$.exec($obj$$31_object$$18$$.toString()));
  return $bool_property$$9$$;
};
$AdfProfiler$$.prototype.$registerMethod$ = function $$AdfProfiler$$$$$registerMethod$$($object$$19$$, $methodName$$4$$) {
  $AdfAssert$$.assert(null != $object$$19$$, "You cannot run registerMethod with a null object");
  if (null == $methodName$$4$$) {
    for (property in $object$$19$$) {
      $AdfProfiler$$.$_isInstrumentable$($object$$19$$) && this.$registerMethod$($object$$19$$, property);
    }
  } else {
    if ($AdfAssert$$.assert(null != $object$$19$$[$methodName$$4$$], "The method " + $methodName$$4$$ + " does not exist in the object " + $AdfProfiler$$.$_getClassName$($object$$19$$) + "."), !$AdfProfiler$$.$_isInstrumented$($object$$19$$[$methodName$$4$$])) {
      var $methodId$$3$$ = $AdfProfiler$$.$_getMethodId$($methodName$$4$$, $object$$19$$), $checkpoint$$3_newFunc$$1$$ = $AdfCheckpoint$$.$getCheckpoint$($methodId$$3$$, $AdfProfiler$$.$_PROFILER_GROUP$), $checkpoint$$3_newFunc$$1$$ = $AdfProfiler$$.$_instrumentFunction$($methodName$$4$$, $methodId$$3$$, $object$$19$$, $checkpoint$$3_newFunc$$1$$);
      this.$_functions$[$methodId$$3$$] = $checkpoint$$3_newFunc$$1$$;
    }
  }
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.registerMethod", {$registerMethod$:$AdfProfiler$$.prototype.$registerMethod$});
$AdfProfiler$$.prototype.$registerFunction$ = function $$AdfProfiler$$$$$registerFunction$$($functionName$$1$$) {
  $AdfAssert$$.assert(null != $functionName$$1$$, "You cannot run registerFunction with a null functionName");
  this.$registerMethod$(window, $functionName$$1$$);
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.registerFunction", {$registerFunction$:$AdfProfiler$$.prototype.$registerFunction$});
$AdfProfiler$$.prototype.register = function $$AdfProfiler$$$$register$($object$$20$$, $methodName$$5$$) {
  this.$registerMethod$($object$$20$$, $methodName$$5$$);
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.register", {register:$AdfProfiler$$.prototype.register});
$AdfProfiler$$.prototype.$unregisterMethod$ = function $$AdfProfiler$$$$$unregisterMethod$$($object$$21$$, $methodName$$6$$) {
  $AdfAssert$$.assert(null != $object$$21$$, "Object cannot be null in the unregister method");
  if (null == $methodName$$6$$) {
    for ($methodId$$4$$ in this.$_functions$) {
      var $func$$10$$ = this.$_functions$[$methodId$$4$$];
      "function" == typeof $func$$10$$ && $func$$10$$[$AdfProfiler$$.$_PROP_REGISTERED_OBJECT$] == $object$$21$$ && ($AdfProfiler$$.$_uninstrumentFunction$($func$$10$$), delete this.$_functions$[$methodId$$4$$]);
    }
  } else {
    var $methodId$$4$$ = $AdfProfiler$$.$_getMethodId$($methodName$$6$$, $object$$21$$), $func$$10$$ = this.$_functions$[$methodId$$4$$];
    null != $func$$10$$ && ($AdfProfiler$$.$_uninstrumentFunction$($func$$10$$), delete this.$_functions$[$methodId$$4$$]);
  }
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.unregisterMethod", {$unregisterMethod$:$AdfProfiler$$.prototype.$unregisterMethod$});
$AdfProfiler$$.prototype.$unregisterFunction$ = function $$AdfProfiler$$$$$unregisterFunction$$($functionName$$2$$) {
  $AdfAssert$$.assert(null != $functionName$$2$$, "functionName cannot be null in unregisterFunction");
  this.$unregisterMethod$(window, $functionName$$2$$);
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.unregisterFunction", {$unregisterFunction$:$AdfProfiler$$.prototype.$unregisterFunction$});
$AdfProfiler$$.prototype.unregister = function $$AdfProfiler$$$$unregister$($object$$22$$, $methodName$$7$$) {
  this.$unregisterMethod$($object$$22$$, $methodName$$7$$);
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.unregister", {unregister:$AdfProfiler$$.prototype.unregister});
$AdfProfiler$$.prototype.$unregisterAll$ = function $$AdfProfiler$$$$$unregisterAll$$() {
  for (methodId in this.$_functions$) {
    var $funct$$ = this.$_functions$[methodId];
    "function" == typeof $funct$$ && $AdfProfiler$$.$_isInstrumented$($funct$$) && $AdfProfiler$$.$_uninstrumentFunction$($funct$$);
  }
  this.$_functions$ = {};
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.unregisterAll", {$unregisterAll$:$AdfProfiler$$.prototype.$unregisterAll$});
$AdfProfiler$$.prototype.$startProfiling$ = function $$AdfProfiler$$$$$startProfiling$$() {
  $AdfCheckpoint$$.$setCheckpointOverride$(null, $AdfProfiler$$.$_PROFILER_GROUP$, !0);
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.startProfiling", {$startProfiling$:$AdfProfiler$$.prototype.$startProfiling$});
$AdfProfiler$$.prototype.$stopProfiling$ = function $$AdfProfiler$$$$$stopProfiling$$() {
  $AdfCheckpoint$$.$setCheckpointOverride$(null, $AdfProfiler$$.$_PROFILER_GROUP$, !1);
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.stopProfiling", {$stopProfiling$:$AdfProfiler$$.prototype.$stopProfiling$});
$AdfProfiler$$.prototype.$__getRegisteredMethods$ = function $$AdfProfiler$$$$$__getRegisteredMethods$$() {
  var $elements$$1$$ = [];
  for (methodId in this.$_functions$) {
    $AdfProfiler$$.$_isInstrumented$(this.$_functions$[methodId]) && $elements$$1$$.push(methodId);
  }
  return $elements$$1$$.join(",");
};
$AdfObject$$.$exportPrototypeSymbol$("AdfProfiler.prototype.__getRegisteredMethods", {$__getRegisteredMethods$:$AdfProfiler$$.prototype.$__getRegisteredMethods$});
