VimUnDokH% 4 L˩v:yxva'var slicer = Array.prototype.slice.call'0000P _P~5_P function wrap(f, wrapper) {5_P5_Pfunction wrap(f, wrapper) {5_P return function wrapped()5_P return function wrapped() {}5_P 5_ P/*5_ P5_ P5_ P5_ P5_  P 5_ P var params = slicer.call()5_%P 5_P params.unshift()5_<P= wrapper.apply(this, [ f ].concat(Array.slice(arguments)))5_P wrapper.apply(this, params)5_1vP B * Returns the first function passed as an argument to the second,C * allowing you to adjust arguments, run code before and after, and/ * conditionally execute the original function. * @example *< * var hello = function(name) { return "hello: " + name; };% * hello = wrap(hello, function(f) {/ * return "before, " + f("moe") + ", after"; * }); *1 * hello(); // => 'before, hello: moe, after' */5_4vP/*5_4vP * */5_4vP    5_ 4vP A Returns the first function passed as an argument to the second,@allowing you to adjust arguments, run code before and after, and C * allowing you to adjust arguments, run code before and after, and5_ 4vP B allowing you to adjust arguments, run code before and after, and,conditionally execute the original function. / * conditionally execute the original function.5_ 4vP 5_ 4vP  * @example5_ 4vP  ## example5_4vP   *5_4vP  < * var hello = function(name) { return "hello: " + name; };5_4vP % * hello = wrap(hello, function(f) {5_ 4vP/ * return "before, " + f("moe") + ", after";5_! 4vP * });5_ "!4vP });5_!#"/4vP/ return "before, " + f("moe") + ", after";5_"$#4vP *5_#%$4vP1 * hello(); // => 'before, hello: moe, after'5_$&%4vP!1 hello(); // => 'before, hello: moe, after'5_%)&14vP"1 hello(); // => "before, hello: moe, after'5_&*') 4vPC1 hello(); // => "before, hello: moe, after"5_)+* 4vPD0 hello(); // => "before, hello: moe, after"5_*,+<4vPH< var hello = function(name) { return "hello: " + name; };5_+-,94vPI; var hello = function(name) { return "hello: " + name; }5_,0-.4vPN  5_-.0'4vP 'var slicer = Array.prototype.slice.call5_-/0.4vPfunction wrap(λ, wrapper) {5_./4vP params.unshift(λ)5_&()'4vP5B var hello = function hello(name) { return "hello: " + name; };5_'(4vP86 function hello(name) { return "hello: " + name; };5