(function(root,factory){"use strict";if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.Guard=factory()}})(this,function(){"use strict";return function(initConfig){var level=0;var config;var listeners=[];var isRequesting=false;var requestQueue=[];var _={isFunction:function(value){return typeof value=="function"},isArray:function(value){return Array.isArray(value)},isRegExp:function(value){return value instanceof RegExp}};function checkAccess(requestRule){if(!requestRule){return level>0}return function(){for(var i=0;i<=level;i++){var rules=config[i].allowed;for(var j=0;j