!function(a,b){if(typeof define=="function"){define(b)}else{if(typeof module!="undefined"){module.exports=b()}else{this[a]=b()}}}("klass",function(){var c=this,d=c.klass,h="function",k=/xyz/.test(function(){xyz})?/\bsupr\b/:/.*/,e="prototype";function i(f){return j.call(g(f)?f:function(){},f,1)}function g(f){return typeof f===h}function b(l,m,f){return function(){var o=this.supr;this.supr=f[e][l];var n=m.apply(this,arguments);this.supr=o;return n}}function a(m,n,f){for(var l in n){if(n.hasownproperty(l)){m[l]=g(n[l])&&g(f[e][l])&&k.test(n[l])?b(l,n[l],f):n[l]}}}function j(m,p){function t(){}t[e]=this[e];var q=this,s=new t(),n=g(m),f=n?m:this,l=n?{}:m;function r(){if(this.initialize){this.initialize.apply(this,arguments)}else{p||n&&q.apply(this,arguments);f.apply(this,arguments)}}r.methods=function(u){a(s,u,q);r[e]=s;return this};r.methods.call(r,l).prototype.constructor=r;r.extend=arguments.callee;r[e].implement=r.statics=function(v,u){v=typeof v=="string"?(function(){var o={};o[v]=u;return o}()):v;a(this,v,q);return this};return r}i.noconflict=function(){c.klass=d;return this};c.klass=i;return i});