{"version":3,"sources":["webpack:///./node_modules/aurelia-dependency-injection/dist/native-modules/aurelia-dependency-injection.js","webpack:///./node_modules/aurelia-google-analytics/dist/analytics.js","webpack:///./node_modules/aurelia-event-aggregator/dist/native-modules/aurelia-event-aggregator.js","webpack:///./node_modules/aurelia-framework/dist/native-modules/aurelia-framework.js","webpack:///./node_modules/aurelia-google-analytics/dist/index.js","webpack:///./node_modules/aurelia-history-browser/dist/native-modules/aurelia-history-browser.js","webpack:///./node_modules/aurelia-i18n/dist/native-modules/aurelia-i18n.js","webpack:///./node_modules/aurelia-history/dist/native-modules/aurelia-history.js","webpack:///./node_modules/aurelia-fetch-client/dist/native-modules/aurelia-fetch-client.js"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","__spreadArray","to","from","pack","ar","l","Array","prototype","slice","call","concat","autoinject","potentialTarget","deco","hasOwnProperty","inject","getOwn","paramTypes","_emptyParameters","splice","isInjectable","rest","_i","_key","descriptor","value","SuppressedError","Strategy","resolver","create","get","isStrategy","actual","expected","state","StrategyResolver","strategy","this","container","instance","singleton","invoke","transient","function","array","alias","Error","Number","Lazy","Lazy_1","_this","of","All","All_1","getAll","Optional","checkParent","_checkParent","Optional_1","hasResolver","Boolean","Parent","Parent_1","parent","Factory","Factory_1","fn","getResolver","NewInstance","dynamicDependencies","asKey","NewInstance_1","map","dependency","undefined","registerInstance","as","bind","apply","getDecoratorDependencies","lazy","keyValue","index","all","optional","checkParentOrTarget","factory","newInstance","asKeyOrTarget","currentContainer","validateKey","freeze","registration","invoker","resolverDecorates","decorates","InvocationHandler","dependencies","previousContainer","invokeWithDynamicDependencies","classInvoker","Type","deps","instances","dep","construct","staticDependencies","lookup","args","Container","configuration","_configuration","_onHandlerCreated","onHandlerCreated","_handlers","handlers","Map","_resolvers","root","makeGlobal","setHandlerCreatedCallback","registerResolver","registerSingleton","registerTransient","registerHandler","handler","registerAlias","originalKey","aliasKey","allResolvers","result","set","push","autoRegister","autoRegisterAll","fns","unregister","delete","has","_get","results","createChild","child","_createInvocationHandler","e","name","f","ctor","getPrototypeOf","resolve","keys","String","containerGetKey","define","invokeAsFactory","FactoryInvoker","TransientRegistration","keyOrRegisterInChild","registerInChild","SingletonRegistration","existingResolver","_registerInChild","targetContainer","exports","_aureliaDependencyInjection","_aureliaEventAggregator","_aureliaLogging","_deepmerge","Analytics","obj","LogManager","__esModule","newObj","default","_interopRequireWildcard","_deepmerge2","_class","_typeof","Symbol","iterator","constructor","criteria","isElement","HTMLElement","hasClass","cls","classList","contains","hasTrackingInfo","hasAttribute","isOfType","type","nodeName","toLowerCase","isAnchor","isButton","defaultOptions","logging","enabled","anonymizeIp","pageTracking","ignore","fragments","routes","routeNames","getTitle","payload","instruction","config","title","getUrl","fragment","clickTracking","filter","element","exceptionTracking","applicationName","applicationVersion","EventAggregator","_dec","eventAggregator","Constructor","TypeError","_classCallCheck","_eventAggregator","_initialized","_logger","getLogger","_options","_trackClick","_trackPage","attach","options","errorMessage","_log","_attachClickTracker","_attachPageTracker","_attachExceptionTracker","init","id","script","document","createElement","text","querySelector","appendChild","window","ga","q","Date","addEventListener","listener","evt","el","delegateTarget","parentNode","delegate","subscribe","some","includes","route","routeName","existingWindowErrorCallback","onerror","url","lineNumber","columnNumber","errorObject","exceptionDescription","message","exOptions","exDescription","exFatal","appName","appVersion","level","tracking","category","getAttribute","action","label","path","page","logger","Handler","messageType","callback","handle","invokeCallback","data","event","error","invokeHandler","eventLookup","messageHandlers","publish","subscribers","dispose","idx","indexOf","subscribeOnce","sub","a","b","includeEventsIn","ea","configure","aurelia","extPattern","runTasks","tasks","current","next","shift","Promise","then","loadResources","resourcesToLoad","appResources","viewEngine","n","load","moduleId","ext","getExt","isOtherResource","removeExt","loader","normalize","relativeTo","normalized","importId","addOriginalExt","_normalize","loads","names","importIds","forEach","importViewResources","replace","match","split","loadBehaviors","behaviorsToLoad","m","assertProcessed","plugins","processed","invalidConfigMsg","cfg","FrameworkConfiguration","info","preTasks","postTasks","configuredPlugins","preTask","bootstrapperName","postTask","resources","implementation","task","feature","plugin","hasIndex","test","resourcesRelativeTo","globalResources","resource","toAdd","isArray","ii","parent_1","grandParent","name_1","startsWith","meta","elementName","globalName","resourcePath","newName","pluginConfig","_addNormalizedPlugin","defaultBindingLanguage","router","history","defaultResources","basicConfiguration","standardConfiguration","developmentLogging","logLevel","debug","loadModule","ConsoleAppender","fwConfig","normalizedId","_loadPlugin","loadPlugin","Aurelia","Loader","use","hostConfigured","host","start","_started","tagName","preventDefault","createCustomEvent","bubbles","cancelable","dispatchEvent","enhance","bindingContext","applicationHost","_configureHost","querySelectorAll","engine","attached","_onAureliaComposed","setRoot","viewModel","deactivate","reset","initialComposition","configModuleId","childContainer","viewSlot","hostSlot","compose","getElementById","transformChildNodesIntoView","boundary","setTimeout","_analytics","configCallback","err","console","extendStatics","setPrototypeOf","__proto__","p","__extends","__","LinkHandler","activate","DefaultLinkHandler","_super","_a","getEventInfo","shouldHandleEvent","href","navigate","_hasPushState","removeEventListener","$event","anchor","findClosestAnchor","targetIsThisWindow","altKey","ctrlKey","metaKey","shiftKey","leftButtonClicked","which","isRelative","charAt","targetWindow","win","global","attr","BrowserHistory","linkHandler","_isActive","_checkUrlCallback","_checkUrl","location","$history","wantsPushState","pushState","eventName","normalizedOptions","assign","rootUrl","rootStripper","wantsHashChange","_wantsHashChange","hashChange","hasPushState","$location","atRoot","pathname","_getFragment","search","hash","_getHash","routeStripper","replaceState","silent","_loadUrl","getAbsoluteRoot","protocol","hostname","port","_b","_c","trigger","_d","absoluteUrl","updateHash","navigateBack","back","setTitle","setState","getState","getHistoryIndex","historyIndex","go","movement","substr","forcePushState","location_1","trailingSlash","fragmentOverride","routeHandler","$config","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","step","rejected","done","__generator","body","y","t","g","_","sent","trys","ops","verb","v","op","pop","I18N_EA_SIGNAL","I18N","signaler","globalVars","i18next","Intl","setup","skipTranslationOnMissingKey","compatibilityJSON","lng","attributes","fallbackLng","i18nextDeferred","i18nextReady","setLocale","locale","oldLocale","getLocale","changeLanguage","tr","oldValue","newValue","signal","language","nf","locales","NumberFormat","uf","numberLike","comparer","format","thousandSeparator","decimalSeparator","RegExp","df","DateTimeFormat","fullOptions","registerGlobalVariable","unregisterGlobalVariable","updateTranslations","selector","join","nodes","node","params","i2","l2","pname","au","updateValue","toString","re","exec","lastIndex","attrs","j","trim","_textContent","textContent","_innerHTML","innerHTML","attrCC","toUpperCase","reservedNames","i18nLogger","controller","warn","newChild","createTextNode","_newChild","removeChild","firstChild","prependParser","ni","childNodes","_prepended","pi","insertBefore","appendParser","_appended","setAttribute","TBindingBehavior","signalBindingBehavior","binding","source","sourceExpression","rewritten","expression","unbind","isInteger","isFinite","Math","floor","LazyOptional","LazyOptional_1","TParamsCustomAttribute","TParamsCustomAttribute_1","Element","configureAliases","aliases","getOrCreateOwn","valueChanged","TCustomAttribute","service","lazyParams","TCustomAttribute_1","newParams","oldParams","paramsChanged","subscription","TValueConverter","toView","NfBindingBehavior","NfValueConverter","nfOrOptions","DfBindingBehavior","DfValueConverter","dfOrOptions","isNaN","RtBindingBehavior","translations","translation","now","second_ago","second_ago_plural","second_in","second_in_plural","minute_ago","minute_ago_plural","minute_in","minute_in_plural","hour_ago","hour_ago_plural","hour_in","hour_in_plural","day_ago","day_ago_plural","day_in","day_in_plural","month_ago","month_ago_plural","month_in","month_in_plural","year_ago","year_ago_plural","year_in","year_in_plural","da","de","en","es","fi","fr","it","ja","lt","nl","nn","nb","pl","pt","sv","th","zh","RelativeTime","trans","alternateFb","baseLocale","substring","addTranslationResource","interpolation","prefix","suffix","subkey","addResources","defaultNS","getRelativeTime","time","diff","getTime","timeDiff","getTimeDiffDescription","unit","timeDivisor","unitAmount","parseInt","toFixed","count","context","abs","RtValueConverter","Backend","services","with","loadPath","addPath","allowMultiLoading","parse","JSON","readMulti","languages","namespaces","interpolator","interpolate","ns","loadUrl","read","namespace","response","ret","loadText","_languages","_namespace","_fallbackValue","frameworkConfig","cb","htmlBehaviorResource","htmlParamsResource","registerAttribute","mi","History","json","replacer","stringify","retryStrategy","defaultRetryConfig","maxRetries","interval","RetryInterceptor","retryConfig","request","$r","counter","requestClone","clone","responseError","httpClient","doRetry","minRandomInterval","maxRandomInterval","retryStrategies","calculateDelay","newRequest","beforeRetry","fetch","retryCount","pow","random","HttpClientConfiguration","baseUrl","defaults","interceptors","withBaseUrl","withDefaults","withInterceptor","interceptor","useStandardConfiguration","credentials","rejectErrorResponses","rejectOnError","withRetry","ok","HttpClient","activeRequestCount","isRequesting","isConfigured","normalizedConfig","isPrototypeOf","Headers","headers","x","retryInterceptorIndex","findIndex","input","client","evt_1","trackRequestStart","buildRequest","http","applyInterceptors","processRequest","Response","Request","processResponse","trackRequestEnd","requestContentType","parsedDefaultHeaders","parsedHeaders","parseHeaderValues","bodyObj","requestInit","absoluteUrlRegexp","getRequestUrl","str","isJSON","defaultHeaders","name_2","setDefaultHeaders","Blob","post","callFetch","put","patch","evt_2","successName","errorName","interceptorArgs","reduce","chain","successHandler","errorHandler","identity","reason","thrower","method"],"mappings":"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","file":"vendors~556c66f2.d5214075624dcaba33dc.chunk.js","sourcesContent":["import { metadata, protocol } from 'aurelia-metadata';\nimport { AggregateError } from 'aurelia-pal';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction isInjectable(potentialTarget) {\n    return !!potentialTarget;\n}\nfunction autoinject(potentialTarget) {\n    var deco = function (target) {\n        if (!target.hasOwnProperty('inject')) {\n            target.inject = (metadata.getOwn(metadata.paramTypes, target) ||\n                _emptyParameters).slice();\n            if (target.inject && target.inject.length > 0) {\n                if (target.inject[target.inject.length - 1] === Object) {\n                    target.inject.splice(-1, 1);\n                }\n            }\n        }\n    };\n    if (isInjectable(potentialTarget)) {\n        return deco(potentialTarget);\n    }\n    return deco;\n}\nfunction inject() {\n    var rest = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        rest[_i] = arguments[_i];\n    }\n    return function (target, _key, descriptor) {\n        if (typeof descriptor === 'number') {\n            autoinject(target);\n            if (rest.length === 1) {\n                target.inject[descriptor] = rest[0];\n            }\n            return;\n        }\n        if (descriptor) {\n            var fn = descriptor.value;\n            fn.inject = rest;\n        }\n        else {\n            target.inject = rest;\n        }\n    };\n}\n\nvar resolver = protocol.create('aurelia:resolver', function (target) {\n    if (!(typeof target.get === 'function')) {\n        return 'Resolvers must implement: get(container: Container, key: any): any';\n    }\n    return true;\n});\nvar Strategy;\n(function (Strategy) {\n    Strategy[Strategy[\"instance\"] = 0] = \"instance\";\n    Strategy[Strategy[\"singleton\"] = 1] = \"singleton\";\n    Strategy[Strategy[\"transient\"] = 2] = \"transient\";\n    Strategy[Strategy[\"function\"] = 3] = \"function\";\n    Strategy[Strategy[\"array\"] = 4] = \"array\";\n    Strategy[Strategy[\"alias\"] = 5] = \"alias\";\n})(Strategy || (Strategy = {}));\nfunction isStrategy(actual, expected, state) {\n    return actual === expected;\n}\nvar StrategyResolver = (function () {\n    function StrategyResolver(strategy, state) {\n        this.strategy = strategy;\n        this.state = state;\n    }\n    StrategyResolver.prototype.get = function (container, key) {\n        if (isStrategy(this.strategy, Strategy.instance, this.state)) {\n            return this.state;\n        }\n        if (isStrategy(this.strategy, Strategy.singleton, this.state)) {\n            var singleton = container.invoke(this.state);\n            this.state = singleton;\n            this.strategy = 0;\n            return singleton;\n        }\n        if (isStrategy(this.strategy, Strategy.transient, this.state)) {\n            return container.invoke(this.state);\n        }\n        if (isStrategy(this.strategy, Strategy.function, this.state)) {\n            return this.state(container, key, this);\n        }\n        if (isStrategy(this.strategy, Strategy.array, this.state)) {\n            return this.state[0].get(container, key);\n        }\n        if (isStrategy(this.strategy, Strategy.alias, this.state)) {\n            return container.get(this.state);\n        }\n        throw new Error('Invalid strategy: ' + this.strategy);\n    };\n    StrategyResolver = __decorate([\n        resolver(),\n        __metadata(\"design:paramtypes\", [Number, Object])\n    ], StrategyResolver);\n    return StrategyResolver;\n}());\nvar Lazy = (function () {\n    function Lazy(key) {\n        this._key = key;\n    }\n    Lazy_1 = Lazy;\n    Lazy.prototype.get = function (container) {\n        var _this = this;\n        return function () { return container.get(_this._key); };\n    };\n    Lazy.of = function (key) {\n        return new Lazy_1(key);\n    };\n    var Lazy_1;\n    Lazy = Lazy_1 = __decorate([\n        resolver(),\n        __metadata(\"design:paramtypes\", [Object])\n    ], Lazy);\n    return Lazy;\n}());\nvar All = (function () {\n    function All(key) {\n        this._key = key;\n    }\n    All_1 = All;\n    All.prototype.get = function (container) {\n        return container.getAll(this._key);\n    };\n    All.of = function (key) {\n        return new All_1(key);\n    };\n    var All_1;\n    All = All_1 = __decorate([\n        resolver(),\n        __metadata(\"design:paramtypes\", [Object])\n    ], All);\n    return All;\n}());\nvar Optional = (function () {\n    function Optional(key, checkParent) {\n        if (checkParent === void 0) { checkParent = true; }\n        this._key = key;\n        this._checkParent = checkParent;\n    }\n    Optional_1 = Optional;\n    Optional.prototype.get = function (container) {\n        if (container.hasResolver(this._key, this._checkParent)) {\n            return container.get(this._key);\n        }\n        return null;\n    };\n    Optional.of = function (key, checkParent) {\n        if (checkParent === void 0) { checkParent = true; }\n        return new Optional_1(key, checkParent);\n    };\n    var Optional_1;\n    Optional = Optional_1 = __decorate([\n        resolver(),\n        __metadata(\"design:paramtypes\", [Object, Boolean])\n    ], Optional);\n    return Optional;\n}());\nvar Parent = (function () {\n    function Parent(key) {\n        this._key = key;\n    }\n    Parent_1 = Parent;\n    Parent.prototype.get = function (container) {\n        return container.parent ? container.parent.get(this._key) : null;\n    };\n    Parent.of = function (key) {\n        return new Parent_1(key);\n    };\n    var Parent_1;\n    Parent = Parent_1 = __decorate([\n        resolver(),\n        __metadata(\"design:paramtypes\", [Object])\n    ], Parent);\n    return Parent;\n}());\nvar Factory = (function () {\n    function Factory(key) {\n        this._key = key;\n    }\n    Factory_1 = Factory;\n    Factory.prototype.get = function (container) {\n        var fn = this._key;\n        var resolver = container.getResolver(fn);\n        if (resolver && resolver.strategy === Strategy.function) {\n            fn = resolver.state;\n        }\n        return function () {\n            var rest = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                rest[_i] = arguments[_i];\n            }\n            return container.invoke(fn, rest);\n        };\n    };\n    Factory.of = function (key) {\n        return new Factory_1(key);\n    };\n    var Factory_1;\n    Factory = Factory_1 = __decorate([\n        resolver(),\n        __metadata(\"design:paramtypes\", [Object])\n    ], Factory);\n    return Factory;\n}());\nvar NewInstance = (function () {\n    function NewInstance(key) {\n        var dynamicDependencies = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            dynamicDependencies[_i - 1] = arguments[_i];\n        }\n        this.key = key;\n        this.asKey = key;\n        this.dynamicDependencies = dynamicDependencies;\n    }\n    NewInstance_1 = NewInstance;\n    NewInstance.prototype.get = function (container) {\n        var dynamicDependencies = this.dynamicDependencies.length > 0\n            ? this.dynamicDependencies.map(function (dependency) {\n                return dependency['protocol:aurelia:resolver']\n                    ? dependency.get(container)\n                    : container.get(dependency);\n            })\n            : undefined;\n        var fn = this.key;\n        var resolver = container.getResolver(fn);\n        if (resolver && resolver.strategy === 3) {\n            fn = resolver.state;\n        }\n        var instance = container.invoke(fn, dynamicDependencies);\n        container.registerInstance(this.asKey, instance);\n        return instance;\n    };\n    NewInstance.prototype.as = function (key) {\n        this.asKey = key;\n        return this;\n    };\n    NewInstance.of = function (key) {\n        var dynamicDependencies = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            dynamicDependencies[_i - 1] = arguments[_i];\n        }\n        return new (NewInstance_1.bind.apply(NewInstance_1, __spreadArray([void 0, key], dynamicDependencies, false)))();\n    };\n    var NewInstance_1;\n    NewInstance = NewInstance_1 = __decorate([\n        resolver(),\n        __metadata(\"design:paramtypes\", [Object, Object])\n    ], NewInstance);\n    return NewInstance;\n}());\nfunction getDecoratorDependencies(target) {\n    autoinject(target);\n    return target.inject;\n}\nfunction lazy(keyValue) {\n    return function (target, _key, index) {\n        var inject = getDecoratorDependencies(target);\n        inject[index] = Lazy.of(keyValue);\n    };\n}\nfunction all(keyValue) {\n    return function (target, _key, index) {\n        var inject = getDecoratorDependencies(target);\n        inject[index] = All.of(keyValue);\n    };\n}\nfunction optional(checkParentOrTarget) {\n    if (checkParentOrTarget === void 0) { checkParentOrTarget = true; }\n    var deco = function (checkParent) {\n        return function (target, _key, index) {\n            var inject = getDecoratorDependencies(target);\n            inject[index] = Optional.of(inject[index], checkParent);\n        };\n    };\n    if (typeof checkParentOrTarget === 'boolean') {\n        return deco(checkParentOrTarget);\n    }\n    return deco(true);\n}\nfunction parent(target, _key, index) {\n    var inject = getDecoratorDependencies(target);\n    inject[index] = Parent.of(inject[index]);\n}\nfunction factory(keyValue) {\n    return function (target, _key, index) {\n        var inject = getDecoratorDependencies(target);\n        inject[index] = Factory.of(keyValue);\n    };\n}\nfunction newInstance(asKeyOrTarget) {\n    var dynamicDependencies = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        dynamicDependencies[_i - 1] = arguments[_i];\n    }\n    var deco = function (asKey) {\n        return function (target, _key, index) {\n            var inject = getDecoratorDependencies(target);\n            inject[index] = NewInstance.of.apply(NewInstance, __spreadArray([inject[index]], dynamicDependencies, false));\n            if (!!asKey) {\n                inject[index].as(asKey);\n            }\n        };\n    };\n    if (arguments.length >= 1) {\n        return deco(asKeyOrTarget);\n    }\n    return deco();\n}\n\nvar currentContainer = null;\nfunction validateKey(key) {\n    if (key === null || key === undefined) {\n        throw new Error('key/value cannot be null or undefined. Are you trying to inject/register something that doesn\\'t exist with DI?');\n    }\n}\nvar _emptyParameters = Object.freeze([]);\nmetadata.registration = 'aurelia:registration';\nmetadata.invoker = 'aurelia:invoker';\nvar resolverDecorates = resolver.decorates;\nvar InvocationHandler = (function () {\n    function InvocationHandler(fn, invoker, dependencies) {\n        this.fn = fn;\n        this.invoker = invoker;\n        this.dependencies = dependencies;\n    }\n    InvocationHandler.prototype.invoke = function (container, dynamicDependencies) {\n        var previousContainer = currentContainer;\n        currentContainer = container;\n        try {\n            return dynamicDependencies !== undefined\n                ? this.invoker.invokeWithDynamicDependencies(container, this.fn, this.dependencies, dynamicDependencies)\n                : this.invoker.invoke(container, this.fn, this.dependencies);\n        }\n        finally {\n            currentContainer = previousContainer;\n        }\n    };\n    return InvocationHandler;\n}());\nfunction invokeWithDynamicDependencies(container, fn, staticDependencies, dynamicDependencies) {\n    var i = staticDependencies.length;\n    var args = new Array(i);\n    var lookup;\n    while (i--) {\n        lookup = staticDependencies[i];\n        if (lookup === null || lookup === undefined) {\n            throw new Error('Constructor Parameter with index ' +\n                i +\n                ' cannot be null or undefined. Are you trying to inject/register something that doesn\\'t exist with DI?');\n        }\n        else {\n            args[i] = container.get(lookup);\n        }\n    }\n    if (dynamicDependencies !== undefined) {\n        args = args.concat(dynamicDependencies);\n    }\n    return Reflect.construct(fn, args);\n}\nvar classInvoker = {\n    invoke: function (container, Type, deps) {\n        var instances = deps.map(function (dep) { return container.get(dep); });\n        return Reflect.construct(Type, instances);\n    },\n    invokeWithDynamicDependencies: invokeWithDynamicDependencies\n};\nfunction getDependencies(f) {\n    if (!f.hasOwnProperty('inject')) {\n        return [];\n    }\n    if (typeof f.inject === 'function') {\n        return f.inject();\n    }\n    return f.inject;\n}\nvar Container = (function () {\n    function Container(configuration) {\n        if (configuration === undefined) {\n            configuration = {};\n        }\n        this._configuration = configuration;\n        this._onHandlerCreated = configuration.onHandlerCreated;\n        this._handlers =\n            configuration.handlers || (configuration.handlers = new Map());\n        this._resolvers = new Map();\n        this.root = this;\n        this.parent = null;\n    }\n    Container.prototype.makeGlobal = function () {\n        Container.instance = this;\n        return this;\n    };\n    Container.prototype.setHandlerCreatedCallback = function (onHandlerCreated) {\n        this._onHandlerCreated = onHandlerCreated;\n        this._configuration.onHandlerCreated = onHandlerCreated;\n    };\n    Container.prototype.registerInstance = function (key, instance) {\n        return this.registerResolver(key, new StrategyResolver(0, instance === undefined ? key : instance));\n    };\n    Container.prototype.registerSingleton = function (key, fn) {\n        return this.registerResolver(key, new StrategyResolver(Strategy.singleton, fn === undefined ? key : fn));\n    };\n    Container.prototype.registerTransient = function (key, fn) {\n        return this.registerResolver(key, new StrategyResolver(2, fn === undefined ? key : fn));\n    };\n    Container.prototype.registerHandler = function (key, handler) {\n        return this.registerResolver(key, new StrategyResolver(Strategy.function, handler));\n    };\n    Container.prototype.registerAlias = function (originalKey, aliasKey) {\n        return this.registerResolver(aliasKey, new StrategyResolver(5, originalKey));\n    };\n    Container.prototype.registerResolver = function (key, resolver) {\n        validateKey(key);\n        var allResolvers = this._resolvers;\n        var result = allResolvers.get(key);\n        if (result === undefined) {\n            allResolvers.set(key, resolver);\n        }\n        else if (result.strategy === 4) {\n            result.state.push(resolver);\n        }\n        else {\n            allResolvers.set(key, new StrategyResolver(4, [result, resolver]));\n        }\n        return resolver;\n    };\n    Container.prototype.autoRegister = function (key, fn) {\n        fn = fn === undefined ? key : fn;\n        if (typeof fn === 'function') {\n            var registration = metadata.get(metadata.registration, fn);\n            if (registration === undefined) {\n                return this.registerResolver(key, new StrategyResolver(1, fn));\n            }\n            return registration.registerResolver(this, key, fn);\n        }\n        return this.registerResolver(key, new StrategyResolver(0, fn));\n    };\n    Container.prototype.autoRegisterAll = function (fns) {\n        var i = fns.length;\n        while (i--) {\n            this.autoRegister(fns[i]);\n        }\n    };\n    Container.prototype.unregister = function (key) {\n        this._resolvers.delete(key);\n    };\n    Container.prototype.hasResolver = function (key, checkParent) {\n        if (checkParent === void 0) { checkParent = false; }\n        validateKey(key);\n        return (this._resolvers.has(key) ||\n            (checkParent &&\n                this.parent !== null &&\n                this.parent.hasResolver(key, checkParent)));\n    };\n    Container.prototype.getResolver = function (key) {\n        return this._resolvers.get(key);\n    };\n    Container.prototype.get = function (key) {\n        validateKey(key);\n        if (key === Container) {\n            return this;\n        }\n        if (resolverDecorates(key)) {\n            return key.get(this, key);\n        }\n        var resolver = this._resolvers.get(key);\n        if (resolver === undefined) {\n            if (this.parent === null) {\n                return this.autoRegister(key).get(this, key);\n            }\n            var registration = metadata.get(metadata.registration, key);\n            if (registration === undefined) {\n                return this.parent._get(key);\n            }\n            return registration.registerResolver(this, key, key).get(this, key);\n        }\n        return resolver.get(this, key);\n    };\n    Container.prototype._get = function (key) {\n        var resolver = this._resolvers.get(key);\n        if (resolver === undefined) {\n            if (this.parent === null) {\n                return this.autoRegister(key).get(this, key);\n            }\n            return this.parent._get(key);\n        }\n        return resolver.get(this, key);\n    };\n    Container.prototype.getAll = function (key) {\n        validateKey(key);\n        var resolver = this._resolvers.get(key);\n        if (resolver === undefined) {\n            if (this.parent === null) {\n                return _emptyParameters;\n            }\n            return this.parent.getAll(key);\n        }\n        if (resolver.strategy === 4) {\n            var state = resolver.state;\n            var i = state.length;\n            var results = new Array(i);\n            while (i--) {\n                results[i] = state[i].get(this, key);\n            }\n            return results;\n        }\n        return [resolver.get(this, key)];\n    };\n    Container.prototype.createChild = function () {\n        var child = new Container(this._configuration);\n        child.root = this.root;\n        child.parent = this;\n        return child;\n    };\n    Container.prototype.invoke = function (fn, dynamicDependencies) {\n        try {\n            var handler = this._handlers.get(fn);\n            if (handler === undefined) {\n                handler = this._createInvocationHandler(fn);\n                this._handlers.set(fn, handler);\n            }\n            return handler.invoke(this, dynamicDependencies);\n        }\n        catch (e) {\n            throw new AggregateError(\"Error invoking \".concat(fn.name, \". Check the inner error for details.\"), e, true);\n        }\n    };\n    Container.prototype._createInvocationHandler = function (fn) {\n        var dependencies;\n        if (fn.inject === undefined) {\n            dependencies =\n                metadata.getOwn(metadata.paramTypes, fn) || _emptyParameters;\n        }\n        else {\n            dependencies = [];\n            var ctor = fn;\n            while (typeof ctor === 'function') {\n                dependencies.push.apply(dependencies, getDependencies(ctor));\n                ctor = Object.getPrototypeOf(ctor);\n            }\n        }\n        var invoker = metadata.getOwn(metadata.invoker, fn) || classInvoker;\n        var handler = new InvocationHandler(fn, invoker, dependencies);\n        return this._onHandlerCreated !== undefined\n            ? this._onHandlerCreated(handler)\n            : handler;\n    };\n    return Container;\n}());\nfunction resolve() {\n    var keys = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        keys[_i] = arguments[_i];\n    }\n    if (currentContainer == null) {\n        throw new Error(\"There is not a currently active container to resolve \\\"\".concat(String(keys), \"\\\". Are you trying to \\\"new SomeClass(...)\\\" that has a resolve(...) call?\"));\n    }\n    return keys.length === 1\n        ? currentContainer.get(keys[0])\n        : keys.map(containerGetKey, currentContainer);\n}\nfunction containerGetKey(key) {\n    return this.get(key);\n}\n\nfunction invoker(value) {\n    return function (target) {\n        metadata.define(metadata.invoker, value, target);\n    };\n}\nfunction invokeAsFactory(potentialTarget) {\n    var deco = function (target) {\n        metadata.define(metadata.invoker, FactoryInvoker.instance, target);\n    };\n    return potentialTarget ? deco(potentialTarget) : deco;\n}\nvar FactoryInvoker = (function () {\n    function FactoryInvoker() {\n    }\n    FactoryInvoker.prototype.invoke = function (container, fn, dependencies) {\n        var i = dependencies.length;\n        var args = new Array(i);\n        while (i--) {\n            args[i] = container.get(dependencies[i]);\n        }\n        return (fn.apply(undefined, args));\n    };\n    FactoryInvoker.prototype.invokeWithDynamicDependencies = function (container, fn, staticDependencies, dynamicDependencies) {\n        var i = staticDependencies.length;\n        var args = new Array(i);\n        while (i--) {\n            args[i] = container.get(staticDependencies[i]);\n        }\n        if (dynamicDependencies !== undefined) {\n            args = args.concat(dynamicDependencies);\n        }\n        return fn.apply(undefined, args);\n    };\n    return FactoryInvoker;\n}());\nFactoryInvoker.instance = new FactoryInvoker();\n\nfunction registration(value) {\n    return function (target) {\n        metadata.define(metadata.registration, value, target);\n    };\n}\nfunction transient(key) {\n    return registration(new TransientRegistration(key));\n}\nfunction singleton(keyOrRegisterInChild, registerInChild) {\n    if (registerInChild === void 0) { registerInChild = false; }\n    return registration(new SingletonRegistration(keyOrRegisterInChild, registerInChild));\n}\nvar TransientRegistration = (function () {\n    function TransientRegistration(key) {\n        this._key = key;\n    }\n    TransientRegistration.prototype.registerResolver = function (container, key, fn) {\n        var existingResolver = container.getResolver(this._key || key);\n        return existingResolver === undefined\n            ? container.registerTransient((this._key || key), fn)\n            : existingResolver;\n    };\n    return TransientRegistration;\n}());\nvar SingletonRegistration = (function () {\n    function SingletonRegistration(keyOrRegisterInChild, registerInChild) {\n        if (registerInChild === void 0) { registerInChild = false; }\n        if (typeof keyOrRegisterInChild === 'boolean') {\n            this._registerInChild = keyOrRegisterInChild;\n        }\n        else {\n            this._key = keyOrRegisterInChild;\n            this._registerInChild = registerInChild;\n        }\n    }\n    SingletonRegistration.prototype.registerResolver = function (container, key, fn) {\n        var targetContainer = this._registerInChild ? container : container.root;\n        var existingResolver = targetContainer.getResolver(this._key || key);\n        return existingResolver === undefined\n            ? targetContainer.registerSingleton(this._key || key, fn)\n            : existingResolver;\n    };\n    return SingletonRegistration;\n}());\n\nexport { All, Container, Factory, FactoryInvoker, InvocationHandler, Lazy, NewInstance, Optional, Parent, SingletonRegistration, Strategy, StrategyResolver, TransientRegistration, _emptyParameters, all, autoinject, factory, getDecoratorDependencies, inject, invokeAsFactory, invoker, lazy, newInstance, optional, parent, registration, resolve, resolver, singleton, transient };\n//# sourceMappingURL=aurelia-dependency-injection.js.map\n","define(['exports', 'aurelia-dependency-injection', 'aurelia-event-aggregator', 'aurelia-logging', 'deepmerge'], function (exports, _aureliaDependencyInjection, _aureliaEventAggregator, _aureliaLogging, _deepmerge) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.Analytics = undefined;\n\n\tvar LogManager = _interopRequireWildcard(_aureliaLogging);\n\n\tvar _deepmerge2 = _interopRequireDefault(_deepmerge);\n\n\tfunction _interopRequireDefault(obj) {\n\t\treturn obj && obj.__esModule ? obj : {\n\t\t\tdefault: obj\n\t\t};\n\t}\n\n\tfunction _interopRequireWildcard(obj) {\n\t\tif (obj && obj.__esModule) {\n\t\t\treturn obj;\n\t\t} else {\n\t\t\tvar newObj = {};\n\n\t\t\tif (obj != null) {\n\t\t\t\tfor (var key in obj) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnewObj.default = obj;\n\t\t\treturn newObj;\n\t\t}\n\t}\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n\t\treturn typeof obj;\n\t} : function (obj) {\n\t\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n\t};\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t\tif (!(instance instanceof Constructor)) {\n\t\t\tthrow new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t}\n\n\tvar _dec, _class;\n\n\tvar criteria = {\n\t\tisElement: function isElement(e) {\n\t\t\treturn e instanceof HTMLElement;\n\t\t},\n\t\thasClass: function hasClass(cls) {\n\t\t\treturn function (e) {\n\t\t\t\treturn criteria.isElement(e) && e.classList.contains(cls);\n\t\t\t};\n\t\t},\n\t\thasTrackingInfo: function hasTrackingInfo(e) {\n\t\t\treturn criteria.isElement(e) && e.hasAttribute('data-analytics-category') && e.hasAttribute('data-analytics-action');\n\t\t},\n\t\tisOfType: function isOfType(e, type) {\n\t\t\treturn criteria.isElement(e) && e.nodeName.toLowerCase() === type.toLowerCase();\n\t\t},\n\t\tisAnchor: function isAnchor(e) {\n\t\t\treturn criteria.isOfType(e, 'a');\n\t\t},\n\t\tisButton: function isButton(e) {\n\t\t\treturn criteria.isOfType(e, 'button');\n\t\t}\n\t};\n\n\tvar defaultOptions = {\n\t\tlogging: {\n\t\t\tenabled: true\n\t\t},\n\t\tanonymizeIp: {\n\t\t\tenabled: false\n\t\t},\n\t\tpageTracking: {\n\t\t\tenabled: false,\n\t\t\tignore: {\n\t\t\t\tfragments: [],\n\t\t\t\troutes: [],\n\t\t\t\trouteNames: []\n\t\t\t},\n\t\t\tgetTitle: function getTitle(payload) {\n\t\t\t\treturn payload.instruction.config.title;\n\t\t\t},\n\t\t\tgetUrl: function getUrl(payload) {\n\t\t\t\treturn payload.instruction.fragment;\n\t\t\t}\n\t\t},\n\t\tclickTracking: {\n\t\t\tenabled: false,\n\t\t\tfilter: function filter(element) {\n\t\t\t\treturn criteria.isAnchor(element) || criteria.isButton(element);\n\t\t\t}\n\t\t},\n\t\texceptionTracking: {\n\t\t\tenabled: true,\n\t\t\tapplicationName: undefined,\n\t\t\tapplicationVersion: undefined\n\t\t}\n\t};\n\n\tvar delegate = function delegate(criteria, listener) {\n\t\treturn function (evt) {\n\t\t\tvar el = evt.target;\n\t\t\tdo {\n\t\t\t\tif (criteria && !criteria(el)) continue;\n\t\t\t\tevt.delegateTarget = el;\n\t\t\t\tlistener.apply(this, arguments);\n\t\t\t\treturn;\n\t\t\t} while (el = el.parentNode);\n\t\t};\n\t};\n\n\tvar Analytics = exports.Analytics = (_dec = (0, _aureliaDependencyInjection.inject)(_aureliaEventAggregator.EventAggregator), _dec(_class = function () {\n\t\tfunction Analytics(eventAggregator) {\n\t\t\t_classCallCheck(this, Analytics);\n\n\t\t\tthis._eventAggregator = eventAggregator;\n\t\t\tthis._initialized = false;\n\t\t\tthis._logger = LogManager.getLogger('analytics-plugin');\n\t\t\tthis._options = defaultOptions;\n\n\t\t\tthis._trackClick = this._trackClick.bind(this);\n\t\t\tthis._trackPage = this._trackPage.bind(this);\n\t\t}\n\n\t\tAnalytics.prototype.attach = function attach() {\n\t\t\tvar options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultOptions;\n\n\t\t\tthis._options = (0, _deepmerge2.default)(defaultOptions, options);\n\t\t\tif (!this._initialized) {\n\t\t\t\tvar errorMessage = \"Analytics must be initialized before use.\";\n\t\t\t\tthis._log('error', errorMessage);\n\t\t\t\tthrow new Error(errorMessage);\n\t\t\t}\n\n\t\t\tthis._attachClickTracker();\n\t\t\tthis._attachPageTracker();\n\t\t\tthis._attachExceptionTracker();\n\t\t};\n\n\t\tAnalytics.prototype.init = function init(id) {\n\t\t\tvar script = document.createElement('script');\n\t\t\tscript.text = \"(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\" + \"(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\" + \"m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\" + \"})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\";\n\t\t\tdocument.querySelector('body').appendChild(script);\n\n\t\t\twindow.ga = window.ga || function () {\n\t\t\t\t(ga.q = ga.q || []).push(arguments);\n\t\t\t};\n\t\t\tga.l = +new Date();\n\t\t\tga('create', id, 'auto');\n\n\t\t\tthis._initialized = true;\n\t\t};\n\n\t\tAnalytics.prototype._attachClickTracker = function _attachClickTracker() {\n\t\t\tif (!this._options.clickTracking.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdocument.querySelector('body').addEventListener('click', delegate(this._options.clickTracking.filter, this._trackClick));\n\t\t};\n\n\t\tAnalytics.prototype._attachPageTracker = function _attachPageTracker() {\n\t\t\tvar _this = this;\n\n\t\t\tif (!this._options.pageTracking.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._eventAggregator.subscribe('router:navigation:success', function (payload) {\n\t\t\t\tif (_this._options.pageTracking.ignore.fragments.some(function (fragment) {\n\t\t\t\t\treturn payload.instruction.fragment.includes(fragment);\n\t\t\t\t}) || _this._options.pageTracking.ignore.routes.some(function (route) {\n\t\t\t\t\treturn payload.instruction.config.route === route;\n\t\t\t\t}) || _this._options.pageTracking.ignore.routeNames.some(function (routeName) {\n\t\t\t\t\treturn payload.instruction.config.name === routeName;\n\t\t\t\t})) return;\n\n\t\t\t\t_this._trackPage(_this._options.pageTracking.getUrl(payload), _this._options.pageTracking.getTitle(payload));\n\t\t\t});\n\t\t};\n\n\t\tAnalytics.prototype._attachExceptionTracker = function _attachExceptionTracker() {\n\t\t\tif (!this._options.exceptionTracking.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar options = this._options;\n\t\t\tvar existingWindowErrorCallback = window.onerror;\n\n\t\t\twindow.onerror = function (errorMessage, url, lineNumber, columnNumber, errorObject) {\n\t\t\t\tif (typeof ga === 'function') {\n\t\t\t\t\tvar exceptionDescription = void 0;\n\t\t\t\t\tif (errorObject != undefined && _typeof(errorObject.message) != undefined) {\n\t\t\t\t\t\texceptionDescription = errorObject.message;\n\t\t\t\t\t} else {\n\t\t\t\t\t\texceptionDescription = errorMessage;\n\t\t\t\t\t}\n\n\t\t\t\t\texceptionDescription += \" @ \" + url;\n\n\t\t\t\t\tif (lineNumber != undefined && columnNumber != undefined) {\n\t\t\t\t\t\texceptionDescription += \":\" + lineNumber + \":\" + columnNumber;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar exOptions = {\n\t\t\t\t\t\texDescription: exceptionDescription,\n\t\t\t\t\t\texFatal: false\n\t\t\t\t\t};\n\n\t\t\t\t\tif (options.exceptionTracking.applicationName != undefined) {\n\t\t\t\t\t\texOptions.appName = options.exceptionTracking.applicationName;\n\t\t\t\t\t}\n\t\t\t\t\tif (options.exceptionTracking.applicationVersion != undefined) {\n\t\t\t\t\t\texOptions.appVersion = options.exceptionTracking.applicationVersion;\n\t\t\t\t\t}\n\n\t\t\t\t\tga('send', 'exception', exOptions);\n\t\t\t\t}\n\n\t\t\t\tif (typeof existingWindowErrorCallback === 'function') {\n\t\t\t\t\treturn existingWindowErrorCallback(errorMessage, url, lineNumber, columnNumber, errorObject);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t};\n\n\t\tAnalytics.prototype._log = function _log(level, message) {\n\t\t\tif (!this._options.logging.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._logger[level](message);\n\t\t};\n\n\t\tAnalytics.prototype._trackClick = function _trackClick(evt) {\n\t\t\tif (!this._initialized) {\n\t\t\t\tthis._log('warn', \"The component has not been initialized. Please call 'init()' before calling 'attach()'.\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!evt || !evt.delegateTarget || !criteria.hasTrackingInfo(evt.delegateTarget)) {\n\t\t\t\treturn;\n\t\t\t};\n\n\t\t\tvar element = evt.delegateTarget;\n\t\t\tvar tracking = {\n\t\t\t\tcategory: element.getAttribute('data-analytics-category'),\n\t\t\t\taction: element.getAttribute('data-analytics-action'),\n\t\t\t\tlabel: element.getAttribute('data-analytics-label'),\n\t\t\t\tvalue: element.getAttribute('data-analytics-value')\n\t\t\t};\n\n\t\t\tthis._log('debug', 'click: category \\'' + tracking.category + '\\', action \\'' + tracking.action + '\\', label \\'' + tracking.label + '\\', value \\'' + tracking.value + '\\'');\n\t\t\tga('send', 'event', tracking.category, tracking.action, tracking.label, tracking.value);\n\t\t};\n\n\t\tAnalytics.prototype._trackPage = function _trackPage(path, title) {\n\t\t\tthis._log('debug', 'Tracking path = ' + path + ', title = ' + title);\n\t\t\tif (!this._initialized) {\n\t\t\t\tthis._log('warn', \"Try calling 'init()' before calling 'attach()'.\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tga('set', {\n\t\t\t\tpage: path,\n\t\t\t\ttitle: title,\n\t\t\t\tanonymizeIp: this._options.anonymizeIp.enabled\n\t\t\t});\n\t\t\tga('send', 'pageview');\n\t\t};\n\n\t\treturn Analytics;\n\t}()) || _class);\n});","\n\nimport * as LogManager from 'aurelia-logging';\n\nvar logger = LogManager.getLogger('event-aggregator');\n\nvar Handler = function () {\n  function Handler(messageType, callback) {\n    \n\n    this.messageType = messageType;\n    this.callback = callback;\n  }\n\n  Handler.prototype.handle = function handle(message) {\n    if (message instanceof this.messageType) {\n      this.callback.call(null, message);\n    }\n  };\n\n  return Handler;\n}();\n\nfunction invokeCallback(callback, data, event) {\n  try {\n    callback(data, event);\n  } catch (e) {\n    logger.error(e);\n  }\n}\n\nfunction invokeHandler(handler, data) {\n  try {\n    handler.handle(data);\n  } catch (e) {\n    logger.error(e);\n  }\n}\n\nexport var EventAggregator = function () {\n  function EventAggregator() {\n    \n\n    this.eventLookup = {};\n    this.messageHandlers = [];\n  }\n\n  EventAggregator.prototype.publish = function publish(event, data) {\n    var subscribers = void 0;\n    var i = void 0;\n\n    if (!event) {\n      throw new Error('Event was invalid.');\n    }\n\n    if (typeof event === 'string') {\n      subscribers = this.eventLookup[event];\n      if (subscribers) {\n        subscribers = subscribers.slice();\n        i = subscribers.length;\n\n        while (i--) {\n          invokeCallback(subscribers[i], data, event);\n        }\n      }\n    } else {\n      subscribers = this.messageHandlers.slice();\n      i = subscribers.length;\n\n      while (i--) {\n        invokeHandler(subscribers[i], event);\n      }\n    }\n  };\n\n  EventAggregator.prototype.subscribe = function subscribe(event, callback) {\n    var handler = void 0;\n    var subscribers = void 0;\n\n    if (!event) {\n      throw new Error('Event channel/type was invalid.');\n    }\n\n    if (typeof event === 'string') {\n      handler = callback;\n      subscribers = this.eventLookup[event] || (this.eventLookup[event] = []);\n    } else {\n      handler = new Handler(event, callback);\n      subscribers = this.messageHandlers;\n    }\n\n    subscribers.push(handler);\n\n    return {\n      dispose: function dispose() {\n        var idx = subscribers.indexOf(handler);\n        if (idx !== -1) {\n          subscribers.splice(idx, 1);\n        }\n      }\n    };\n  };\n\n  EventAggregator.prototype.subscribeOnce = function subscribeOnce(event, callback) {\n    var sub = this.subscribe(event, function (a, b) {\n      sub.dispose();\n      return callback(a, b);\n    });\n\n    return sub;\n  };\n\n  return EventAggregator;\n}();\n\nexport function includeEventsIn(obj) {\n  var ea = new EventAggregator();\n\n  obj.subscribeOnce = function (event, callback) {\n    return ea.subscribeOnce(event, callback);\n  };\n\n  obj.subscribe = function (event, callback) {\n    return ea.subscribe(event, callback);\n  };\n\n  obj.publish = function (event, data) {\n    ea.publish(event, data);\n  };\n\n  return ea;\n}\n\nexport function configure(config) {\n  config.instance(EventAggregator, includeEventsIn(config.aurelia));\n}","import { Container } from 'aurelia-dependency-injection';\nexport * from 'aurelia-dependency-injection';\nexport * from 'aurelia-binding';\nexport * from 'aurelia-metadata';\nimport { HtmlBehaviorResource, ViewEngine, BindingLanguage, TemplatingEngine, CompositionTransaction, ViewSlot, ViewResources } from 'aurelia-templating';\nexport * from 'aurelia-templating';\nimport { Loader } from 'aurelia-loader';\nexport * from 'aurelia-loader';\nexport * from 'aurelia-task-queue';\nimport { join, relativeToFile } from 'aurelia-path';\nexport * from 'aurelia-path';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nexport * from 'aurelia-pal';\nimport * as TheLogManager from 'aurelia-logging';\nexport { TheLogManager as LogManager };\n\nvar logger = TheLogManager.getLogger('aurelia');\r\nvar extPattern = /\\.[^/.]+$/;\r\nfunction runTasks(config, tasks) {\r\n    var current;\r\n    var next = function () {\r\n        current = tasks.shift();\r\n        if (current) {\r\n            return Promise.resolve(current(config)).then(next);\r\n        }\r\n        return Promise.resolve();\r\n    };\r\n    return next();\r\n}\r\nfunction loadPlugin(fwConfig, loader, info) {\r\n    logger.debug(\"Loading plugin \".concat(info.moduleId, \".\"));\r\n    if (typeof info.moduleId === 'string') {\r\n        fwConfig.resourcesRelativeTo = info.resourcesRelativeTo;\r\n        var id = info.moduleId;\r\n        if (info.resourcesRelativeTo.length > 1) {\r\n            return loader.normalize(info.moduleId, info.resourcesRelativeTo[1])\r\n                .then(function (normalizedId) { return _loadPlugin(normalizedId); });\r\n        }\r\n        return _loadPlugin(id);\r\n    }\r\n    else if (typeof info.configure === 'function') {\r\n        if (fwConfig.configuredPlugins.indexOf(info.configure) !== -1) {\r\n            return Promise.resolve();\r\n        }\r\n        fwConfig.configuredPlugins.push(info.configure);\r\n        return Promise.resolve(info.configure.call(null, fwConfig, info.config || {}));\r\n    }\r\n    throw new Error(invalidConfigMsg(info.moduleId || info.configure, 'plugin'));\r\n    function _loadPlugin(moduleId) {\r\n        return loader.loadModule(moduleId).then(function (m) {\r\n            if ('configure' in m) {\r\n                if (fwConfig.configuredPlugins.indexOf(m.configure) !== -1) {\r\n                    return Promise.resolve();\r\n                }\r\n                return Promise.resolve(m.configure(fwConfig, info.config || {})).then(function () {\r\n                    fwConfig.configuredPlugins.push(m.configure);\r\n                    fwConfig.resourcesRelativeTo = null;\r\n                    logger.debug(\"Configured plugin \".concat(info.moduleId, \".\"));\r\n                });\r\n            }\r\n            fwConfig.resourcesRelativeTo = null;\r\n            logger.debug(\"Loaded plugin \".concat(info.moduleId, \".\"));\r\n        });\r\n    }\r\n}\r\nfunction loadResources(aurelia, resourcesToLoad, appResources) {\r\n    if (Object.keys(resourcesToLoad).length === 0) {\r\n        return Promise.resolve();\r\n    }\r\n    var viewEngine = aurelia.container.get(ViewEngine);\r\n    return Promise.all(Object.keys(resourcesToLoad).map(function (n) { return _normalize(resourcesToLoad[n]); }))\r\n        .then(function (loads) {\r\n        var names = [];\r\n        var importIds = [];\r\n        loads.forEach(function (l) {\r\n            names.push(undefined);\r\n            importIds.push(l.importId);\r\n        });\r\n        return viewEngine.importViewResources(importIds, names, appResources);\r\n    });\r\n    function _normalize(load) {\r\n        var moduleId = load.moduleId;\r\n        var ext = getExt(moduleId);\r\n        if (isOtherResource(moduleId)) {\r\n            moduleId = removeExt(moduleId);\r\n        }\r\n        return aurelia.loader.normalize(moduleId, load.relativeTo)\r\n            .then(function (normalized) {\r\n            return {\r\n                name: load.moduleId,\r\n                importId: isOtherResource(load.moduleId) ? addOriginalExt(normalized, ext) : normalized\r\n            };\r\n        });\r\n    }\r\n    function isOtherResource(name) {\r\n        var ext = getExt(name);\r\n        if (!ext)\r\n            return false;\r\n        if (ext === '')\r\n            return false;\r\n        if (ext === '.js' || ext === '.ts')\r\n            return false;\r\n        return true;\r\n    }\r\n    function removeExt(name) {\r\n        return name.replace(extPattern, '');\r\n    }\r\n    function addOriginalExt(normalized, ext) {\r\n        return removeExt(normalized) + '.' + ext;\r\n    }\r\n}\r\nfunction getExt(name) {\r\n    var match = name.match(extPattern);\r\n    if (match && match.length > 0) {\r\n        return (match[0].split('.'))[1];\r\n    }\r\n}\r\nfunction loadBehaviors(config) {\r\n    return Promise.all(config.behaviorsToLoad.map(function (m) { return m.load(config.container, m.target); })).then(function () {\r\n        config.behaviorsToLoad = null;\r\n    });\r\n}\r\nfunction assertProcessed(plugins) {\r\n    if (plugins.processed) {\r\n        throw new Error('This config instance has already been applied. To load more plugins or global resources, create a new FrameworkConfiguration instance.');\r\n    }\r\n}\r\nfunction invalidConfigMsg(cfg, type) {\r\n    return \"Invalid \".concat(type, \" [\").concat(cfg, \"], \").concat(type, \" must be specified as functions or relative module IDs.\");\r\n}\r\nvar FrameworkConfiguration = (function () {\r\n    function FrameworkConfiguration(aurelia) {\r\n        var _this = this;\r\n        this.aurelia = aurelia;\r\n        this.container = aurelia.container;\r\n        this.info = [];\r\n        this.processed = false;\r\n        this.preTasks = [];\r\n        this.postTasks = [];\r\n        this.behaviorsToLoad = [];\r\n        this.configuredPlugins = [];\r\n        this.resourcesToLoad = {};\r\n        this.preTask(function () { return aurelia.loader.normalize('aurelia-bootstrapper', undefined)\r\n            .then(function (name) { return _this.bootstrapperName = name; }); });\r\n        this.postTask(function () { return loadResources(aurelia, _this.resourcesToLoad, aurelia.resources); });\r\n    }\r\n    FrameworkConfiguration.prototype.instance = function (type, instance) {\r\n        this.container.registerInstance(type, instance);\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.singleton = function (type, implementation) {\r\n        this.container.registerSingleton(type, implementation);\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.transient = function (type, implementation) {\r\n        this.container.registerTransient(type, implementation);\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.preTask = function (task) {\r\n        assertProcessed(this);\r\n        this.preTasks.push(task);\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.postTask = function (task) {\r\n        assertProcessed(this);\r\n        this.postTasks.push(task);\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.feature = function (plugin, config) {\r\n        if (config === void 0) { config = {}; }\r\n        switch (typeof plugin) {\r\n            case 'string':\r\n                var hasIndex = /\\/index$/i.test(plugin);\r\n                var moduleId = hasIndex || getExt(plugin) ? plugin : plugin + '/index';\r\n                var root = hasIndex ? plugin.slice(0, -6) : plugin;\r\n                this.info.push({ moduleId: moduleId, resourcesRelativeTo: [root, ''], config: config });\r\n                break;\r\n            case 'function':\r\n                this.info.push({ configure: plugin, config: config || {} });\r\n                break;\r\n            default:\r\n                throw new Error(invalidConfigMsg(plugin, 'feature'));\r\n        }\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.globalResources = function (resources) {\r\n        var _this = this;\r\n        assertProcessed(this);\r\n        var toAdd = Array.isArray(resources) ? resources : arguments;\r\n        var resource;\r\n        var resourcesRelativeTo = this.resourcesRelativeTo || ['', ''];\r\n        for (var i = 0, ii = toAdd.length; i < ii; ++i) {\r\n            resource = toAdd[i];\r\n            switch (typeof resource) {\r\n                case 'string':\r\n                    var parent_1 = resourcesRelativeTo[0];\r\n                    var grandParent = resourcesRelativeTo[1];\r\n                    var name_1 = resource;\r\n                    if ((resource.startsWith('./') || resource.startsWith('../')) && parent_1 !== '') {\r\n                        name_1 = join(parent_1, resource);\r\n                    }\r\n                    this.resourcesToLoad[name_1] = { moduleId: name_1, relativeTo: grandParent };\r\n                    break;\r\n                case 'function':\r\n                    var meta = this.aurelia.resources.autoRegister(this.container, resource);\r\n                    if (meta instanceof HtmlBehaviorResource && meta.elementName !== null) {\r\n                        if (this.behaviorsToLoad.push(meta) === 1) {\r\n                            this.postTask(function () { return loadBehaviors(_this); });\r\n                        }\r\n                    }\r\n                    break;\r\n                default:\r\n                    throw new Error(invalidConfigMsg(resource, 'resource'));\r\n            }\r\n        }\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.globalName = function (resourcePath, newName) {\r\n        assertProcessed(this);\r\n        this.resourcesToLoad[resourcePath] = { moduleId: newName, relativeTo: '' };\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.plugin = function (plugin, pluginConfig) {\r\n        assertProcessed(this);\r\n        var info;\r\n        switch (typeof plugin) {\r\n            case 'string':\r\n                info = { moduleId: plugin, resourcesRelativeTo: [plugin, ''], config: pluginConfig || {} };\r\n                break;\r\n            case 'function':\r\n                info = { configure: plugin, config: pluginConfig || {} };\r\n                break;\r\n            default:\r\n                throw new Error(invalidConfigMsg(plugin, 'plugin'));\r\n        }\r\n        this.info.push(info);\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype._addNormalizedPlugin = function (name, config) {\r\n        var _this = this;\r\n        var plugin = { moduleId: name, resourcesRelativeTo: [name, ''], config: config || {} };\r\n        this.info.push(plugin);\r\n        this.preTask(function () {\r\n            var relativeTo = [name, _this.bootstrapperName];\r\n            plugin.moduleId = name;\r\n            plugin.resourcesRelativeTo = relativeTo;\r\n            return Promise.resolve();\r\n        });\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.defaultBindingLanguage = function () {\r\n        return this._addNormalizedPlugin('aurelia-templating-binding');\r\n    };\r\n    FrameworkConfiguration.prototype.router = function () {\r\n        return this._addNormalizedPlugin('aurelia-templating-router');\r\n    };\r\n    FrameworkConfiguration.prototype.history = function () {\r\n        return this._addNormalizedPlugin('aurelia-history-browser');\r\n    };\r\n    FrameworkConfiguration.prototype.defaultResources = function () {\r\n        return this._addNormalizedPlugin('aurelia-templating-resources');\r\n    };\r\n    FrameworkConfiguration.prototype.eventAggregator = function () {\r\n        return this._addNormalizedPlugin('aurelia-event-aggregator');\r\n    };\r\n    FrameworkConfiguration.prototype.basicConfiguration = function () {\r\n        return this.defaultBindingLanguage().defaultResources().eventAggregator();\r\n    };\r\n    FrameworkConfiguration.prototype.standardConfiguration = function () {\r\n        return this.basicConfiguration().history().router();\r\n    };\r\n    FrameworkConfiguration.prototype.developmentLogging = function (level) {\r\n        var _this = this;\r\n        var logLevel = level ? TheLogManager.logLevel[level] : undefined;\r\n        if (logLevel === undefined) {\r\n            logLevel = TheLogManager.logLevel.debug;\r\n        }\r\n        this.preTask(function () {\r\n            return _this.aurelia.loader.normalize('aurelia-logging-console', _this.bootstrapperName).then(function (name) {\r\n                return _this.aurelia.loader.loadModule(name).then(function (m) {\r\n                    TheLogManager.addAppender(new m.ConsoleAppender());\r\n                    TheLogManager.setLevel(logLevel);\r\n                });\r\n            });\r\n        });\r\n        return this;\r\n    };\r\n    FrameworkConfiguration.prototype.apply = function () {\r\n        var _this = this;\r\n        if (this.processed) {\r\n            return Promise.resolve();\r\n        }\r\n        return runTasks(this, this.preTasks).then(function () {\r\n            var loader = _this.aurelia.loader;\r\n            var info = _this.info;\r\n            var current;\r\n            var next = function () {\r\n                current = info.shift();\r\n                if (current) {\r\n                    return loadPlugin(_this, loader, current).then(next);\r\n                }\r\n                _this.processed = true;\r\n                _this.configuredPlugins = null;\r\n                return Promise.resolve();\r\n            };\r\n            return next().then(function () { return runTasks(_this, _this.postTasks); });\r\n        });\r\n    };\r\n    return FrameworkConfiguration;\r\n}());\n\nfunction preventActionlessFormSubmit() {\r\n    DOM.addEventListener('submit', function (evt) {\r\n        var target = evt.target;\r\n        var action = target.action;\r\n        if (target.tagName.toLowerCase() === 'form' && !action) {\r\n            evt.preventDefault();\r\n        }\r\n    }, false);\r\n}\r\nvar Aurelia = (function () {\r\n    function Aurelia(loader, container, resources) {\r\n        this.loader = loader || new PLATFORM.Loader();\r\n        this.container = container || (new Container()).makeGlobal();\r\n        this.resources = resources || new ViewResources();\r\n        this.use = new FrameworkConfiguration(this);\r\n        this.logger = TheLogManager.getLogger('aurelia');\r\n        this.hostConfigured = false;\r\n        this.host = null;\r\n        this.use.instance(Aurelia, this);\r\n        this.use.instance(Loader, this.loader);\r\n        this.use.instance(ViewResources, this.resources);\r\n    }\r\n    Aurelia.prototype.start = function () {\r\n        var _this = this;\r\n        if (this._started) {\r\n            return this._started;\r\n        }\r\n        this.logger.info('Aurelia Starting');\r\n        return this._started = this.use.apply().then(function () {\r\n            preventActionlessFormSubmit();\r\n            if (!_this.container.hasResolver(BindingLanguage)) {\r\n                var message = 'You must configure Aurelia with a BindingLanguage implementation.';\r\n                _this.logger.error(message);\r\n                throw new Error(message);\r\n            }\r\n            _this.logger.info('Aurelia Started');\r\n            var evt = DOM.createCustomEvent('aurelia-started', { bubbles: true, cancelable: true });\r\n            DOM.dispatchEvent(evt);\r\n            return _this;\r\n        });\r\n    };\r\n    Aurelia.prototype.enhance = function (bindingContext, applicationHost) {\r\n        var _this = this;\r\n        if (bindingContext === void 0) { bindingContext = {}; }\r\n        if (applicationHost === void 0) { applicationHost = null; }\r\n        this._configureHost(applicationHost || DOM.querySelectorAll('body')[0]);\r\n        return new Promise(function (resolve) {\r\n            var engine = _this.container.get(TemplatingEngine);\r\n            _this.root = engine.enhance({ container: _this.container, element: _this.host, resources: _this.resources, bindingContext: bindingContext });\r\n            _this.root.attached();\r\n            _this._onAureliaComposed();\r\n            resolve(_this);\r\n        });\r\n    };\r\n    Aurelia.prototype.setRoot = function (root, applicationHost) {\r\n        var _this = this;\r\n        if (root === void 0) { root = null; }\r\n        if (applicationHost === void 0) { applicationHost = null; }\r\n        var instruction = {};\r\n        if (this.root && this.root.viewModel && this.root.viewModel.router) {\r\n            this.root.viewModel.router.deactivate();\r\n            this.root.viewModel.router.reset();\r\n        }\r\n        this._configureHost(applicationHost);\r\n        var engine = this.container.get(TemplatingEngine);\r\n        var transaction = this.container.get(CompositionTransaction);\r\n        delete transaction.initialComposition;\r\n        if (!root) {\r\n            if (this.configModuleId) {\r\n                root = relativeToFile('./app', this.configModuleId);\r\n            }\r\n            else {\r\n                root = 'app';\r\n            }\r\n        }\r\n        instruction.viewModel = root;\r\n        instruction.container = instruction.childContainer = this.container;\r\n        instruction.viewSlot = this.hostSlot;\r\n        instruction.host = this.host;\r\n        return engine.compose(instruction).then(function (r) {\r\n            _this.root = r;\r\n            instruction.viewSlot.attached();\r\n            _this._onAureliaComposed();\r\n            return _this;\r\n        });\r\n    };\r\n    Aurelia.prototype._configureHost = function (applicationHost) {\r\n        if (this.hostConfigured) {\r\n            return;\r\n        }\r\n        applicationHost = applicationHost || this.host;\r\n        if (!applicationHost || typeof applicationHost === 'string') {\r\n            this.host = DOM.getElementById(applicationHost || 'applicationHost');\r\n        }\r\n        else {\r\n            this.host = applicationHost;\r\n        }\r\n        if (!this.host) {\r\n            throw new Error('No applicationHost was specified.');\r\n        }\r\n        this.hostConfigured = true;\r\n        this.host.aurelia = this;\r\n        this.hostSlot = new ViewSlot(this.host, true);\r\n        this.hostSlot.transformChildNodesIntoView();\r\n        this.container.registerInstance(DOM.boundary, this.host);\r\n    };\r\n    Aurelia.prototype._onAureliaComposed = function () {\r\n        var evt = DOM.createCustomEvent('aurelia-composed', { bubbles: true, cancelable: true });\r\n        setTimeout(function () { return DOM.dispatchEvent(evt); }, 1);\r\n    };\r\n    return Aurelia;\r\n}());\n\nexport { Aurelia, FrameworkConfiguration };\n//# sourceMappingURL=aurelia-framework.js.map\n","define(['exports', './analytics'], function (exports, _analytics) {\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.configure = configure;\n\tfunction configure(aurelia, configCallback) {\n\t\ttry {\n\t\t\tvar instance = aurelia.container.get(_analytics.Analytics);\n\t\t\tif (configCallback !== undefined && typeof configCallback === 'function') {\n\t\t\t\tconfigCallback(instance);\n\t\t\t}\n\n\t\t\taurelia.singleton(instance);\n\t\t} catch (err) {\n\t\t\tconsole.error(\"configure: %o\", err);\n\t\t}\n\t}\n});","import { History } from 'aurelia-history';\nimport { DOM, PLATFORM } from 'aurelia-pal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\nvar LinkHandler = (function () {\r\n    function LinkHandler() {\r\n    }\r\n    LinkHandler.prototype.activate = function (history) { };\r\n    LinkHandler.prototype.deactivate = function () { };\r\n    return LinkHandler;\r\n}());\r\nvar DefaultLinkHandler = (function (_super) {\r\n    __extends(DefaultLinkHandler, _super);\r\n    function DefaultLinkHandler() {\r\n        var _this = _super.call(this) || this;\r\n        _this.handler = function (e) {\r\n            var _a = DefaultLinkHandler.getEventInfo(e), shouldHandleEvent = _a.shouldHandleEvent, href = _a.href;\r\n            if (shouldHandleEvent) {\r\n                e.preventDefault();\r\n                _this.history.navigate(href);\r\n            }\r\n        };\r\n        return _this;\r\n    }\r\n    DefaultLinkHandler.prototype.activate = function (history) {\r\n        if (history._hasPushState) {\r\n            this.history = history;\r\n            DOM.addEventListener('click', this.handler, true);\r\n        }\r\n    };\r\n    DefaultLinkHandler.prototype.deactivate = function () {\r\n        DOM.removeEventListener('click', this.handler, true);\r\n    };\r\n    DefaultLinkHandler.getEventInfo = function (event) {\r\n        var $event = event;\r\n        var info = {\r\n            shouldHandleEvent: false,\r\n            href: null,\r\n            anchor: null\r\n        };\r\n        var target = DefaultLinkHandler.findClosestAnchor($event.target);\r\n        if (!target || !DefaultLinkHandler.targetIsThisWindow(target)) {\r\n            return info;\r\n        }\r\n        if (hasAttribute(target, 'download')\r\n            || hasAttribute(target, 'router-ignore')\r\n            || hasAttribute(target, 'data-router-ignore')) {\r\n            return info;\r\n        }\r\n        if ($event.altKey || $event.ctrlKey || $event.metaKey || $event.shiftKey) {\r\n            return info;\r\n        }\r\n        var href = target.getAttribute('href');\r\n        info.anchor = target;\r\n        info.href = href;\r\n        var leftButtonClicked = $event.which === 1;\r\n        var isRelative = href && !(href.charAt(0) === '#' || (/^[a-z]+:/i).test(href));\r\n        info.shouldHandleEvent = leftButtonClicked && isRelative;\r\n        return info;\r\n    };\r\n    DefaultLinkHandler.findClosestAnchor = function (el) {\r\n        while (el) {\r\n            if (el.tagName === 'A') {\r\n                return el;\r\n            }\r\n            el = el.parentNode;\r\n        }\r\n    };\r\n    DefaultLinkHandler.targetIsThisWindow = function (target) {\r\n        var targetWindow = target.getAttribute('target');\r\n        var win = PLATFORM.global;\r\n        return !targetWindow ||\r\n            targetWindow === win.name ||\r\n            targetWindow === '_self';\r\n    };\r\n    return DefaultLinkHandler;\r\n}(LinkHandler));\r\nvar hasAttribute = function (el, attr) { return el.hasAttribute(attr); };\n\nvar BrowserHistory = (function (_super) {\r\n    __extends(BrowserHistory, _super);\r\n    function BrowserHistory(linkHandler) {\r\n        var _this = _super.call(this) || this;\r\n        _this._isActive = false;\r\n        _this._checkUrlCallback = _this._checkUrl.bind(_this);\r\n        _this.location = PLATFORM.location;\r\n        _this.history = PLATFORM.history;\r\n        _this.linkHandler = linkHandler;\r\n        return _this;\r\n    }\r\n    BrowserHistory.prototype.activate = function (options) {\r\n        if (this._isActive) {\r\n            throw new Error('History has already been activated.');\r\n        }\r\n        var $history = this.history;\r\n        var wantsPushState = !!options.pushState;\r\n        this._isActive = true;\r\n        var normalizedOptions = this.options = Object.assign({}, { root: '/' }, this.options, options);\r\n        var rootUrl = this.root = ('/' + normalizedOptions.root + '/').replace(rootStripper, '/');\r\n        var wantsHashChange = this._wantsHashChange = normalizedOptions.hashChange !== false;\r\n        var hasPushState = this._hasPushState = !!(normalizedOptions.pushState && $history && $history.pushState);\r\n        var eventName;\r\n        if (hasPushState) {\r\n            eventName = 'popstate';\r\n        }\r\n        else if (wantsHashChange) {\r\n            eventName = 'hashchange';\r\n        }\r\n        PLATFORM.addEventListener(eventName, this._checkUrlCallback);\r\n        if (wantsHashChange && wantsPushState) {\r\n            var $location = this.location;\r\n            var atRoot = $location.pathname.replace(/[^\\/]$/, '$&/') === rootUrl;\r\n            if (!hasPushState && !atRoot) {\r\n                var fragment = this.fragment = this._getFragment(null, true);\r\n                $location.replace(rootUrl + $location.search + '#' + fragment);\r\n                return true;\r\n            }\r\n            else if (hasPushState && atRoot && $location.hash) {\r\n                var fragment = this.fragment = this._getHash().replace(routeStripper, '');\r\n                $history.replaceState({}, DOM.title, rootUrl + fragment + $location.search);\r\n            }\r\n        }\r\n        if (!this.fragment) {\r\n            this.fragment = this._getFragment('');\r\n        }\r\n        this.linkHandler.activate(this);\r\n        if (!normalizedOptions.silent) {\r\n            return this._loadUrl('');\r\n        }\r\n    };\r\n    BrowserHistory.prototype.deactivate = function () {\r\n        var handler = this._checkUrlCallback;\r\n        PLATFORM.removeEventListener('popstate', handler);\r\n        PLATFORM.removeEventListener('hashchange', handler);\r\n        this._isActive = false;\r\n        this.linkHandler.deactivate();\r\n    };\r\n    BrowserHistory.prototype.getAbsoluteRoot = function () {\r\n        var $location = this.location;\r\n        var origin = createOrigin($location.protocol, $location.hostname, $location.port);\r\n        return \"\" + origin + this.root;\r\n    };\r\n    BrowserHistory.prototype.navigate = function (fragment, _a) {\r\n        var _b = _a === void 0 ? {} : _a, _c = _b.trigger, trigger = _c === void 0 ? true : _c, _d = _b.replace, replace = _d === void 0 ? false : _d;\r\n        var location = this.location;\r\n        if (fragment && absoluteUrl.test(fragment)) {\r\n            location.href = fragment;\r\n            return true;\r\n        }\r\n        if (!this._isActive) {\r\n            return false;\r\n        }\r\n        fragment = this._getFragment(fragment || '');\r\n        if (this.fragment === fragment && !replace) {\r\n            return false;\r\n        }\r\n        this.fragment = fragment;\r\n        var url = this.root + fragment;\r\n        if (fragment === '' && url !== '/') {\r\n            url = url.slice(0, -1);\r\n        }\r\n        if (this._hasPushState) {\r\n            url = url.replace('//', '/');\r\n            this.history[replace ? 'replaceState' : 'pushState']({}, DOM.title, url);\r\n        }\r\n        else if (this._wantsHashChange) {\r\n            updateHash(location, fragment, replace);\r\n        }\r\n        else {\r\n            location.assign(url);\r\n        }\r\n        if (trigger) {\r\n            return this._loadUrl(fragment);\r\n        }\r\n        return true;\r\n    };\r\n    BrowserHistory.prototype.navigateBack = function () {\r\n        this.history.back();\r\n    };\r\n    BrowserHistory.prototype.setTitle = function (title) {\r\n        DOM.title = title;\r\n    };\r\n    BrowserHistory.prototype.setState = function (key, value) {\r\n        var $history = this.history;\r\n        var state = Object.assign({}, $history.state);\r\n        var _a = this.location, pathname = _a.pathname, search = _a.search, hash = _a.hash;\r\n        state[key] = value;\r\n        $history.replaceState(state, null, \"\" + pathname + search + hash);\r\n    };\r\n    BrowserHistory.prototype.getState = function (key) {\r\n        var state = Object.assign({}, this.history.state);\r\n        return state[key];\r\n    };\r\n    BrowserHistory.prototype.getHistoryIndex = function () {\r\n        var historyIndex = this.getState('HistoryIndex');\r\n        if (historyIndex === undefined) {\r\n            historyIndex = this.history.length - 1;\r\n            this.setState('HistoryIndex', historyIndex);\r\n        }\r\n        return historyIndex;\r\n    };\r\n    BrowserHistory.prototype.go = function (movement) {\r\n        this.history.go(movement);\r\n    };\r\n    BrowserHistory.prototype._getHash = function () {\r\n        return this.location.hash.substr(1);\r\n    };\r\n    BrowserHistory.prototype._getFragment = function (fragment, forcePushState) {\r\n        var rootUrl;\r\n        if (!fragment) {\r\n            if (this._hasPushState || !this._wantsHashChange || forcePushState) {\r\n                var location_1 = this.location;\r\n                fragment = location_1.pathname + location_1.search;\r\n                rootUrl = this.root.replace(trailingSlash, '');\r\n                if (!fragment.indexOf(rootUrl)) {\r\n                    fragment = fragment.substr(rootUrl.length);\r\n                }\r\n            }\r\n            else {\r\n                fragment = this._getHash();\r\n            }\r\n        }\r\n        return '/' + fragment.replace(routeStripper, '');\r\n    };\r\n    BrowserHistory.prototype._checkUrl = function () {\r\n        var current = this._getFragment('');\r\n        if (current !== this.fragment) {\r\n            this._loadUrl('');\r\n        }\r\n    };\r\n    BrowserHistory.prototype._loadUrl = function (fragmentOverride) {\r\n        var fragment = this.fragment = this._getFragment(fragmentOverride);\r\n        return this.options.routeHandler ?\r\n            this.options.routeHandler(fragment) :\r\n            false;\r\n    };\r\n    BrowserHistory.inject = [LinkHandler];\r\n    return BrowserHistory;\r\n}(History));\r\nvar routeStripper = /^#?\\/*|\\s+$/g;\r\nvar rootStripper = /^\\/+|\\/+$/g;\r\nvar trailingSlash = /\\/$/;\r\nvar absoluteUrl = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\r\nfunction updateHash($location, fragment, replace) {\r\n    if (replace) {\r\n        var href = $location.href.replace(/(javascript:|#).*$/, '');\r\n        $location.replace(href + '#' + fragment);\r\n    }\r\n    else {\r\n        $location.hash = '#' + fragment;\r\n    }\r\n}\r\nfunction createOrigin(protocol, hostname, port) {\r\n    return protocol + \"//\" + hostname + (port ? ':' + port : '');\r\n}\n\nfunction configure(config) {\r\n    var $config = config;\r\n    $config.singleton(History, BrowserHistory);\r\n    $config.transient(LinkHandler, DefaultLinkHandler);\r\n}\n\nexport { BrowserHistory, DefaultLinkHandler, LinkHandler, configure };\n//# sourceMappingURL=aurelia-history-browser.js.map\n","import i18next from 'i18next';\nimport { getLogger } from 'aurelia-logging';\nimport { resolver } from 'aurelia-dependency-injection';\nimport { customAttribute, HtmlBehaviorResource, ViewResources } from 'aurelia-templating';\nimport { metadata } from 'aurelia-metadata';\nimport { DOM, PLATFORM } from 'aurelia-pal';\nimport { valueConverter } from 'aurelia-framework';\nimport { BindingSignaler, SignalBindingBehavior } from 'aurelia-templating-resources';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { ValueConverter, bindingBehavior, valueConverter as valueConverter$1 } from 'aurelia-binding';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\n\nvar I18N_EA_SIGNAL = \"i18n:locale:changed\";\nvar I18N = /** @class */ (function () {\n    function I18N(ea, signaler) {\n        this.ea = ea;\n        this.signaler = signaler;\n        this.globalVars = {};\n        this.i18next = i18next;\n        this.Intl = PLATFORM.global.Intl;\n    }\n    I18N.inject = function () { return [EventAggregator, BindingSignaler]; };\n    I18N.prototype.setup = function (options) {\n        return __awaiter(this, void 0, void 0, function () {\n            var defaultOptions;\n            var _this = this;\n            return __generator(this, function (_a) {\n                defaultOptions = {\n                    skipTranslationOnMissingKey: false,\n                    compatibilityJSON: \"v1\",\n                    lng: \"en\",\n                    attributes: [\"t\", \"i18n\"],\n                    fallbackLng: \"en\",\n                    debug: false\n                };\n                this.i18nextDeferred = new Promise(function (resolve, reject) {\n                    _this.i18next.init(options || defaultOptions, function (err) {\n                        if (err && !Array.isArray(err)) {\n                            reject(err);\n                        }\n                        // make sure attributes is an array in case a string was provided\n                        if (_this.i18next.options.attributes instanceof String) {\n                            _this.i18next.options.attributes = [_this.i18next.options.attributes];\n                        }\n                        resolve(_this.i18next);\n                    });\n                });\n                return [2 /*return*/, this.i18nextDeferred];\n            });\n        });\n    };\n    I18N.prototype.i18nextReady = function () {\n        return this.i18nextDeferred;\n    };\n    I18N.prototype.setLocale = function (locale) {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            var oldLocale = _this.getLocale();\n            _this.i18next.changeLanguage(locale, function (err, tr) {\n                if (err) {\n                    reject(err);\n                }\n                _this.ea.publish(I18N_EA_SIGNAL, { oldValue: oldLocale, newValue: locale });\n                _this.signaler.signal(\"aurelia-translation-signal\");\n                resolve(tr);\n            });\n        });\n    };\n    I18N.prototype.getLocale = function () {\n        return this.i18next.language;\n    };\n    I18N.prototype.nf = function (options, locales) {\n        return new this.Intl.NumberFormat(locales || this.getLocale(), options || {});\n    };\n    I18N.prototype.uf = function (numberLike, locale) {\n        var nf = this.nf({}, locale || this.getLocale());\n        var comparer = nf.format(10000 / 3);\n        var thousandSeparator = comparer[1];\n        var decimalSeparator = comparer[5];\n        if (thousandSeparator === \".\") {\n            thousandSeparator = \"\\\\.\";\n        }\n        // remove all thousand seperators\n        var result = numberLike.replace(new RegExp(thousandSeparator, \"g\"), \"\")\n            // remove non-numeric signs except -> , .\n            .replace(/[^\\d.,-]/g, \"\")\n            // replace original decimalSeparator with english one\n            .replace(decimalSeparator, \".\");\n        // return real number\n        return Number(result);\n    };\n    I18N.prototype.df = function (options, locales) {\n        return new this.Intl.DateTimeFormat(locales || this.getLocale(), options);\n    };\n    I18N.prototype.tr = function (key, options) {\n        var fullOptions = this.globalVars;\n        if (options !== undefined) {\n            fullOptions = Object.assign(Object.assign({}, this.globalVars), options);\n        }\n        return this.i18next.t(key, fullOptions);\n    };\n    I18N.prototype.registerGlobalVariable = function (key, value) {\n        this.globalVars[key] = value;\n    };\n    I18N.prototype.unregisterGlobalVariable = function (key) {\n        delete this.globalVars[key];\n    };\n    /**\n     * Scans an element for children that have a translation attribute and\n     * updates their innerHTML with the current translation values.\n     *\n     * If an image is encountered the translated value will be applied to the src attribute.\n     *\n     * @param el    HTMLElement to search within\n     */\n    I18N.prototype.updateTranslations = function (el) {\n        if (!el || !el.querySelectorAll) {\n            return;\n        }\n        var i;\n        var l;\n        // create a selector from the specified attributes to look for\n        // var selector = [].concat(this.i18next.options.attributes);\n        var attributes = this.i18next.options.attributes;\n        var selector = [].concat(attributes);\n        for (i = 0, l = selector.length; i < l; i++) {\n            selector[i] = \"[\" + selector[i] + \"]\";\n        }\n        selector = selector.join(\",\");\n        // get the nodes\n        var nodes = el.querySelectorAll(selector);\n        for (i = 0, l = nodes.length; i < l; i++) {\n            var node = nodes[i];\n            var keys = void 0;\n            var params = void 0;\n            // test every attribute and get the first one that has a value\n            for (var i2 = 0, l2 = attributes.length; i2 < l2; i2++) {\n                keys = node.getAttribute(attributes[i2]);\n                var pname = attributes[i2] + \"-params\";\n                if (pname && node.au && node.au[pname]) {\n                    params = node.au[pname].viewModel.value;\n                }\n                if (keys) {\n                    break;\n                }\n            }\n            // skip if nothing was found\n            if (!keys) {\n                continue;\n            }\n            // split the keys into multiple keys separated by a ;\n            this.updateValue(node, keys, params);\n        }\n    };\n    I18N.prototype.updateValue = function (node, value, params) {\n        if (value === null || value === undefined) {\n            value = \"\";\n        }\n        var keys = value.toString().split(\";\");\n        var i = keys.length;\n        while (i--) {\n            var key = keys[i];\n            // remove the optional attribute\n            var re = /\\[([a-z\\-, ]*)\\]/ig;\n            var m = void 0;\n            var attr = \"text\";\n            // set default attribute to src if this is an image node\n            if (node.nodeName === \"IMG\") {\n                attr = \"src\";\n            }\n            // check if a attribute was specified in the key\n            // tslint:disable-next-line:no-conditional-assignment\n            while ((m = re.exec(key)) !== null) {\n                if (m.index === re.lastIndex) {\n                    re.lastIndex++;\n                }\n                if (m) {\n                    key = key.replace(m[0], \"\");\n                    attr = m[1];\n                }\n            }\n            var attrs = attr.split(\",\");\n            var j = attrs.length;\n            while (j--) {\n                attr = attrs[j].trim();\n                if (!node._textContent) {\n                    node._textContent = node.textContent;\n                }\n                if (!node._innerHTML) {\n                    node._innerHTML = node.innerHTML;\n                }\n                // convert to camelCase\n                // tslint:disable-next-line:only-arrow-functions\n                var attrCC = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n                var reservedNames = [\"prepend\", \"append\", \"text\", \"html\"];\n                var i18nLogger = getLogger(\"i18n\");\n                if (reservedNames.indexOf(attr) > -1 &&\n                    node.au &&\n                    node.au.controller &&\n                    node.au.controller.viewModel &&\n                    attrCC in node.au.controller.viewModel) {\n                    i18nLogger.warn(\"Aurelia I18N reserved attribute name\\n\\n  [\" + reservedNames.join(\", \") + \"]\\n\\n  Your custom element has a bindable named \" + attr + \" which is a reserved word.\\n\\n  If you'd like Aurelia I18N to translate your bindable instead, please consider giving it another name.\");\n                }\n                if (this.i18next.options.skipTranslationOnMissingKey &&\n                    this.tr(key, params) === key) {\n                    i18nLogger.warn(\"Couldn't find translation for key: \" + key);\n                    return;\n                }\n                // handle various attributes\n                // anything other than text,prepend,append or html will be added as an attribute on the element.\n                switch (attr) {\n                    case \"text\":\n                        var newChild = DOM.createTextNode(this.tr(key, params));\n                        if (node._newChild && node._newChild.parentNode === node) {\n                            node.removeChild(node._newChild);\n                        }\n                        node._newChild = newChild;\n                        while (node.firstChild) {\n                            node.removeChild(node.firstChild);\n                        }\n                        node.appendChild(node._newChild);\n                        break;\n                    case \"prepend\":\n                        var prependParser = DOM.createElement(\"div\");\n                        prependParser.innerHTML = this.tr(key, params);\n                        for (var ni = node.childNodes.length - 1; ni >= 0; ni--) {\n                            if (node.childNodes[ni]._prepended) {\n                                node.removeChild(node.childNodes[ni]);\n                            }\n                        }\n                        for (var pi = prependParser.childNodes.length - 1; pi >= 0; pi--) {\n                            prependParser.childNodes[pi]._prepended = true;\n                            if (node.firstChild) {\n                                node.insertBefore(prependParser.childNodes[pi], node.firstChild);\n                            }\n                            else {\n                                node.appendChild(prependParser.childNodes[pi]);\n                            }\n                        }\n                        break;\n                    case \"append\":\n                        var appendParser = DOM.createElement(\"div\");\n                        appendParser.innerHTML = this.tr(key, params);\n                        for (var ni = node.childNodes.length - 1; ni >= 0; ni--) {\n                            if (node.childNodes[ni]._appended) {\n                                node.removeChild(node.childNodes[ni]);\n                            }\n                        }\n                        while (appendParser.firstChild) {\n                            appendParser.firstChild._appended = true;\n                            node.appendChild(appendParser.firstChild);\n                        }\n                        break;\n                    case \"html\":\n                        node.innerHTML = this.tr(key, params);\n                        break;\n                    default: // normal html attribute\n                        if (node.au &&\n                            node.au.controller &&\n                            node.au.controller.viewModel &&\n                            attrCC in node.au.controller.viewModel) {\n                            node.au.controller.viewModel[attrCC] = this.tr(key, params);\n                        }\n                        else {\n                            node.setAttribute(attr, this.tr(key, params));\n                        }\n                        break;\n                }\n            }\n        }\n    };\n    return I18N;\n}());\n\nvar TBindingBehavior = /** @class */ (function () {\n    function TBindingBehavior(signalBindingBehavior) {\n        this.signalBindingBehavior = signalBindingBehavior;\n    }\n    TBindingBehavior.inject = function () { return [SignalBindingBehavior]; };\n    TBindingBehavior.prototype.bind = function (binding, source) {\n        // bind the signal behavior\n        this.signalBindingBehavior.bind(binding, source, \"aurelia-translation-signal\");\n        // rewrite the expression to use the TValueConverter.\n        // pass through any args to the binding behavior to the TValueConverter\n        var sourceExpression = binding.sourceExpression;\n        // do create the sourceExpression only once\n        if (sourceExpression.rewritten) {\n            return;\n        }\n        sourceExpression.rewritten = true;\n        var expression = sourceExpression.expression;\n        sourceExpression.expression = new ValueConverter(expression, \"t\", sourceExpression.args, [expression].concat(sourceExpression.args));\n    };\n    TBindingBehavior.prototype.unbind = function (binding, source) {\n        // unbind the signal behavior\n        this.signalBindingBehavior.unbind(binding, source);\n    };\n    TBindingBehavior = __decorate([\n        bindingBehavior(\"t\")\n    ], TBindingBehavior);\n    return TBindingBehavior;\n}());\n\n// tslint:disable-next-line:only-arrow-functions\nvar isInteger = Number.isInteger || function (value) {\n    return typeof value === \"number\" &&\n        isFinite(value) &&\n        Math.floor(value) === value;\n};\nvar LazyOptional = /** @class */ (function () {\n    function LazyOptional(key) {\n        this.key = key;\n    }\n    LazyOptional_1 = LazyOptional;\n    LazyOptional.of = function (key) {\n        return new LazyOptional_1(key);\n    };\n    LazyOptional.prototype.get = function (container) {\n        var _this = this;\n        return function () {\n            if (container.hasResolver(_this.key, false)) {\n                return container.get(_this.key);\n            }\n            return null;\n        };\n    };\n    var LazyOptional_1;\n    LazyOptional = LazyOptional_1 = __decorate([\n        resolver()\n    ], LazyOptional);\n    return LazyOptional;\n}());\n\nvar TParamsCustomAttribute = /** @class */ (function () {\n    function TParamsCustomAttribute(element) {\n        this.element = element;\n    }\n    TParamsCustomAttribute_1 = TParamsCustomAttribute;\n    TParamsCustomAttribute.inject = function () {\n        return [DOM.Element];\n    };\n    TParamsCustomAttribute.configureAliases = function (aliases) {\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, TParamsCustomAttribute_1);\n        r.aliases = aliases;\n    };\n    TParamsCustomAttribute.prototype.valueChanged = function () { };\n    var TParamsCustomAttribute_1;\n    TParamsCustomAttribute = TParamsCustomAttribute_1 = __decorate([\n        customAttribute(\"t-params\")\n    ], TParamsCustomAttribute);\n    return TParamsCustomAttribute;\n}());\n\nvar TCustomAttribute = /** @class */ (function () {\n    function TCustomAttribute(element, service, ea, p) {\n        this.element = element;\n        this.service = service;\n        this.ea = ea;\n        this.lazyParams = p;\n    }\n    TCustomAttribute_1 = TCustomAttribute;\n    TCustomAttribute.inject = function () {\n        return [DOM.Element, I18N, EventAggregator, LazyOptional.of(TParamsCustomAttribute)];\n    };\n    TCustomAttribute.configureAliases = function (aliases) {\n        var r = metadata.getOrCreateOwn(metadata.resource, HtmlBehaviorResource, TCustomAttribute_1);\n        r.aliases = aliases;\n    };\n    TCustomAttribute.prototype.bind = function () {\n        var _this = this;\n        this.params = this.lazyParams();\n        if (this.params) {\n            this.params.valueChanged = function (newParams, oldParams) {\n                _this.paramsChanged(_this.value, newParams, oldParams);\n            };\n        }\n        var p = this.params !== null ? this.params.value : undefined;\n        this.subscription = this.ea.subscribe(I18N_EA_SIGNAL, function () {\n            _this.service.updateValue(_this.element, _this.value, _this.params !== null ? _this.params.value : undefined);\n        });\n        this.service.updateValue(this.element, this.value, p);\n    };\n    TCustomAttribute.prototype.paramsChanged = function (newValue, newParams) {\n        this.service.updateValue(this.element, newValue, newParams);\n    };\n    TCustomAttribute.prototype.valueChanged = function (newValue) {\n        var p = this.params !== null ? this.params.value : undefined;\n        this.service.updateValue(this.element, newValue, p);\n    };\n    TCustomAttribute.prototype.unbind = function () {\n        // If unbind is called before timeout for subscription is triggered, subscription will be undefined\n        if (this.subscription) {\n            this.subscription.dispose();\n        }\n    };\n    var TCustomAttribute_1;\n    TCustomAttribute = TCustomAttribute_1 = __decorate([\n        customAttribute(\"t\")\n    ], TCustomAttribute);\n    return TCustomAttribute;\n}());\n\nvar TValueConverter = /** @class */ (function () {\n    function TValueConverter(service) {\n        this.service = service;\n    }\n    TValueConverter.inject = function () { return [I18N]; };\n    TValueConverter.prototype.toView = function (value, options) {\n        return this.service.tr(value, options);\n    };\n    TValueConverter = __decorate([\n        valueConverter(\"t\")\n    ], TValueConverter);\n    return TValueConverter;\n}());\n\nvar NfBindingBehavior = /** @class */ (function () {\n    function NfBindingBehavior(signalBindingBehavior) {\n        this.signalBindingBehavior = signalBindingBehavior;\n    }\n    NfBindingBehavior.inject = function () { return [SignalBindingBehavior]; };\n    NfBindingBehavior.prototype.bind = function (binding, source) {\n        // bind the signal behavior\n        this.signalBindingBehavior.bind(binding, source, \"aurelia-translation-signal\");\n        // rewrite the expression to use the NfValueConverter.\n        // pass through any args to the binding behavior to the NfValueConverter\n        var sourceExpression = binding.sourceExpression;\n        // do create the sourceExpression only once\n        if (sourceExpression.rewritten) {\n            return;\n        }\n        sourceExpression.rewritten = true;\n        var expression = sourceExpression.expression;\n        sourceExpression.expression = new ValueConverter(expression, \"nf\", sourceExpression.args, [expression].concat(sourceExpression.args));\n    };\n    NfBindingBehavior.prototype.unbind = function (binding, source) {\n        // unbind the signal behavior\n        this.signalBindingBehavior.unbind(binding, source);\n    };\n    NfBindingBehavior = __decorate([\n        bindingBehavior(\"nf\")\n    ], NfBindingBehavior);\n    return NfBindingBehavior;\n}());\n\nvar NfValueConverter = /** @class */ (function () {\n    function NfValueConverter(service) {\n        this.service = service;\n    }\n    NfValueConverter.inject = function () { return [I18N]; };\n    NfValueConverter.prototype.toView = function (value, nfOrOptions, locale) {\n        if (value === null\n            || typeof value === \"undefined\"\n            || (typeof value === \"string\" && value.trim() === \"\")) {\n            return value;\n        }\n        if (nfOrOptions && (nfOrOptions instanceof Intl.NumberFormat && typeof nfOrOptions.format === \"function\")) {\n            return nfOrOptions.format(value);\n        }\n        var nf = this.service.nf(nfOrOptions, locale || this.service.getLocale());\n        return nf.format(value);\n    };\n    NfValueConverter = __decorate([\n        valueConverter$1(\"nf\")\n    ], NfValueConverter);\n    return NfValueConverter;\n}());\n\nvar DfBindingBehavior = /** @class */ (function () {\n    function DfBindingBehavior(signalBindingBehavior) {\n        this.signalBindingBehavior = signalBindingBehavior;\n    }\n    DfBindingBehavior.inject = function () { return [SignalBindingBehavior]; };\n    DfBindingBehavior.prototype.bind = function (binding, source) {\n        // bind the signal behavior\n        this.signalBindingBehavior.bind(binding, source, \"aurelia-translation-signal\");\n        // rewrite the expression to use the DfValueConverter.\n        // pass through any args to the binding behavior to the DfValueConverter\n        var sourceExpression = binding.sourceExpression;\n        // do create the sourceExpression only once\n        if (sourceExpression.rewritten) {\n            return;\n        }\n        sourceExpression.rewritten = true;\n        var expression = sourceExpression.expression;\n        sourceExpression.expression = new ValueConverter(expression, \"df\", sourceExpression.args, [expression].concat(sourceExpression.args));\n    };\n    DfBindingBehavior.prototype.unbind = function (binding, source) {\n        // unbind the signal behavior\n        this.signalBindingBehavior.unbind(binding, source);\n    };\n    DfBindingBehavior = __decorate([\n        bindingBehavior(\"df\")\n    ], DfBindingBehavior);\n    return DfBindingBehavior;\n}());\n\nvar DfValueConverter = /** @class */ (function () {\n    function DfValueConverter(service) {\n        this.service = service;\n    }\n    DfValueConverter.inject = function () { return [I18N]; };\n    DfValueConverter.prototype.toView = function (value, dfOrOptions, locale) {\n        if (value === null\n            || typeof value === \"undefined\"\n            || (typeof value === \"string\" && value.trim() === \"\")) {\n            return value;\n        }\n        if (typeof value === \"string\" && isNaN(value) && !isInteger(value)) {\n            value = new Date(value);\n        }\n        if (dfOrOptions && (dfOrOptions instanceof Intl.DateTimeFormat && typeof dfOrOptions.format === \"function\")) {\n            return dfOrOptions.format(value);\n        }\n        var df = this.service.df(dfOrOptions, locale || this.service.getLocale());\n        return df.format(value);\n    };\n    DfValueConverter = __decorate([\n        valueConverter$1(\"df\")\n    ], DfValueConverter);\n    return DfValueConverter;\n}());\n\nvar RtBindingBehavior = /** @class */ (function () {\n    function RtBindingBehavior(signalBindingBehavior) {\n        this.signalBindingBehavior = signalBindingBehavior;\n    }\n    RtBindingBehavior.inject = function () { return [SignalBindingBehavior]; };\n    RtBindingBehavior.prototype.bind = function (binding, source) {\n        // bind the signal behavior\n        this.signalBindingBehavior.bind(binding, source, \"aurelia-translation-signal\", \"aurelia-relativetime-signal\");\n        // rewrite the expression to use the RtValueConverter.\n        // pass through any args to the binding behavior to the RtValueConverter\n        var sourceExpression = binding.sourceExpression;\n        // do create the sourceExpression only once\n        if (sourceExpression.rewritten) {\n            return;\n        }\n        sourceExpression.rewritten = true;\n        var expression = sourceExpression.expression;\n        sourceExpression.expression = new ValueConverter(expression, \"rt\", sourceExpression.args, [expression].concat(sourceExpression.args));\n    };\n    RtBindingBehavior.prototype.unbind = function (binding, source) {\n        // unbind the signal behavior\n        this.signalBindingBehavior.unbind(binding, source);\n    };\n    RtBindingBehavior = __decorate([\n        bindingBehavior(\"rt\")\n    ], RtBindingBehavior);\n    return RtBindingBehavior;\n}());\n\nvar translations = {\n    ar: {\n        translation: {\n            now: 'الآن',\n            second_ago: 'قبل ثانية واحدة',\n            second_ago_plural: 'قبل __count__ ثانية',\n            second_in: 'خلال ثانية واحدة',\n            second_in_plural: 'خلال __count__ ثانية',\n            minute_ago: 'قبل دقيقة واحدة',\n            minute_ago_plural: 'قبل __count__ دقيقة',\n            minute_in: 'خلال دقيقة واحدة',\n            minute_in_plural: 'خلال __count__ دقيقة',\n            hour_ago: 'قبل ساعة واحدة',\n            hour_ago_plural: 'قبل __count__ ساعة',\n            hour_in: 'خلال ساعة واحدة',\n            hour_in_plural: 'خلال __count__ ساعة',\n            day_ago: 'قبل يوم واحد',\n            day_ago_plural: 'قبل __count__ يومًا',\n            day_in: 'خلال يوم واحد',\n            day_in_plural: 'خلال __count__ يومًا',\n            month_ago: 'قبل شهر واحد',\n            month_ago_plural: 'قبل __count__ شهرًا',\n            month_in: 'خلال شهر واحد',\n            month_in_plural: 'خلال __count__ شهرًا',\n            year_ago: 'قبل سنة واحدة',\n            year_ago_plural: 'قبل __count__ سنة',\n            year_in: 'خلال سنة واحدة',\n            year_in_plural: 'خلال __count__ سنة'\n        }\n    },\n    da: {\n        translation: {\n            now: 'nu',\n            second_ago: 'for __count__ sekund siden',\n            second_ago_plural: 'for __count__ sekunder siden',\n            second_in: 'om __count__ sekund',\n            second_in_plural: 'om __count__ sekunder',\n            minute_ago: 'for __count__ minut siden',\n            minute_ago_plural: 'for __count__ minutter siden',\n            minute_in: 'om __count__ minut',\n            minute_in_plural: 'om __count__ minutter',\n            hour_ago: 'for __count__ time siden',\n            hour_ago_plural: 'for __count__ timer siden',\n            hour_in: 'om __count__ time',\n            hour_in_plural: 'om __count__ timer',\n            day_ago: 'for __count__ dag siden',\n            day_ago_plural: 'for __count__ dage siden',\n            day_in: 'om __count__ dag',\n            day_in_plural: 'om __count__ dage',\n            month_ago: 'for __count__ måned siden',\n            month_ago_plural: 'for __count__ måneder siden',\n            month_in: 'om __count__ måned',\n            month_in_plural: 'om __count__ måneder',\n            year_ago: 'for __count__ år siden',\n            year_ago_plural: 'for __count__ år siden',\n            year_in: 'om __count__ år',\n            year_in_plural: 'om __count__ år'\n        }\n    },\n    de: {\n        translation: {\n            now: 'jetzt',\n            second_ago: 'vor __count__ Sekunde',\n            second_ago_plural: 'vor __count__ Sekunden',\n            second_in: 'in __count__ Sekunde',\n            second_in_plural: 'in __count__ Sekunden',\n            minute_ago: 'vor __count__ Minute',\n            minute_ago_plural: 'vor __count__ Minuten',\n            minute_in: 'in __count__ Minute',\n            minute_in_plural: 'in __count__ Minuten',\n            hour_ago: 'vor __count__ Stunde',\n            hour_ago_plural: 'vor __count__ Stunden',\n            hour_in: 'in __count__ Stunde',\n            hour_in_plural: 'in __count__ Stunden',\n            day_ago: 'vor __count__ Tag',\n            day_ago_plural: 'vor __count__ Tagen',\n            day_in: 'in __count__ Tag',\n            day_in_plural: 'in __count__ Tagen',\n            month_ago: 'vor __count__ Monat',\n            month_ago_plural: 'vor __count__ Monaten',\n            month_in: 'in __count__ Monat',\n            month_in_plural: 'in __count__ Monaten',\n            year_ago: 'vor __count__ Jahr',\n            year_ago_plural: 'vor __count__ Jahren',\n            year_in: 'in __count__ Jahr',\n            year_in_plural: 'in __count__ Jahren'\n        }\n    },\n    en: {\n        translation: {\n            now: 'now',\n            second_ago: '__count__ second ago',\n            second_ago_plural: '__count__ seconds ago',\n            second_in: 'in __count__ second',\n            second_in_plural: 'in __count__ seconds',\n            minute_ago: '__count__ minute ago',\n            minute_ago_plural: '__count__ minutes ago',\n            minute_in: 'in __count__ minute',\n            minute_in_plural: 'in __count__ minutes',\n            hour_ago: '__count__ hour ago',\n            hour_ago_plural: '__count__ hours ago',\n            hour_in: 'in __count__ hour',\n            hour_in_plural: 'in __count__ hours',\n            day_ago: '__count__ day ago',\n            day_ago_plural: '__count__ days ago',\n            day_in: 'in __count__ day',\n            day_in_plural: 'in __count__ days',\n            month_ago: '__count__ month ago',\n            month_ago_plural: '__count__ months ago',\n            month_in: 'in __count__ month',\n            month_in_plural: 'in __count__ months',\n            year_ago: '__count__ year ago',\n            year_ago_plural: '__count__ years ago',\n            year_in: 'in __count__ year',\n            year_in_plural: 'in __count__ years'\n        }\n    },\n    es: {\n        translation: {\n            now: 'ahora',\n            second_ago: 'hace __count__ segundo',\n            second_ago_plural: 'hace __count__ segundos',\n            second_in: 'dentro de __count__ segundo',\n            second_in_plural: 'dentro de __count__ segundos',\n            minute_ago: 'hace __count__ minuto',\n            minute_ago_plural: 'hace __count__ minutos',\n            minute_in: 'dentro de __count__ minuto',\n            minute_in_plural: 'dentro de __count__ minutos',\n            hour_ago: 'hace __count__ hora',\n            hour_ago_plural: 'hace __count__ horas',\n            hour_in: 'dentro de __count__ hora',\n            hour_in_plural: 'dentro de __count__ horas',\n            day_ago: 'hace __count__ día',\n            day_ago_plural: 'hace __count__ días',\n            day_in: 'dentro de __count__ día',\n            day_in_plural: 'dentro de __count__ días',\n            month_ago: 'hace __count__ mes',\n            month_ago_plural: 'hace __count__ meses',\n            month_in: 'dentro de __count__ mes',\n            month_in_plural: 'dentro de __count__ meses',\n            year_ago: 'hace __count__ año',\n            year_ago_plural: 'hace __count__ años',\n            year_in: 'dentro de __count__ año',\n            year_in_plural: 'dentro de __count__ años'\n        }\n    },\n    fi: {\n        translation: {\n            now: 'nyt',\n            second_ago: '__count__ sekunti sitten',\n            second_ago_plural: '__count__ sekuntia sitten',\n            second_in: '__count__ sekunnin päästä',\n            second_in_plural: '__count__ sekunnin päästä',\n            minute_ago: '__count__ minuutti sitten',\n            minute_ago_plural: '__count__ minuuttia sitten',\n            minute_in: '__count__ minuutin päästä',\n            minute_in_plural: '__count__ minuutin päästä',\n            hour_ago: '__count__ tunti sitten',\n            hour_ago_plural: '__count__ tuntia sitten',\n            hour_in: '__count__ tunnin päästä',\n            hour_in_plural: '__count__ tunnin päästä',\n            day_ago: '__count__ päivä sitten',\n            day_ago_plural: '__count__ päivää sitten',\n            day_in: '__count__ päivän päästä',\n            day_in_plural: '__count__ päivän päästä',\n            month_ago: '__count__ kuukausi sitten',\n            month_ago_plural: '__count__ kuukautta sitten',\n            month_in: '__count__ kuukauden päästä',\n            month_in_plural: '__count__ kuukauden päästä',\n            year_ago: '__count__ vuosi sitten',\n            year_ago_plural: '__count__ vuotta sitten',\n            year_in: '__count__ vuoden päästä',\n            year_in_plural: '__count__ vuoden päästä'\n        }\n    },\n    fr: {\n        translation: {\n            now: 'maintenant',\n            second_ago: 'il y a __count__ seconde',\n            second_ago_plural: 'il y a __count__ secondes',\n            second_in: 'dans __count__ seconde',\n            second_in_plural: 'dans __count__ secondes',\n            minute_ago: 'il y a __count__ minute',\n            minute_ago_plural: 'il y a __count__ minutes',\n            minute_in: 'dans __count__ minute',\n            minute_in_plural: 'dans __count__ minutes',\n            hour_ago: 'il y a __count__ heure',\n            hour_ago_plural: 'il y a __count__ heures',\n            hour_in: 'dans __count__ heure',\n            hour_in_plural: 'dans __count__ heures',\n            day_ago: 'il y a __count__ jour',\n            day_ago_plural: 'il y a __count__ jours',\n            day_in: 'dans __count__ jour',\n            day_in_plural: 'dans __count__ jours',\n            month_ago: 'il y a __count__ mois',\n            month_ago_plural: 'il y a __count__ mois',\n            month_in: 'dans __count__ mois',\n            month_in_plural: 'dans __count__ mois',\n            year_ago: 'il y a __count__ an',\n            year_ago_plural: 'il y a __count__ ans',\n            year_in: 'dans __count__ an',\n            year_in_plural: 'dans __count__ ans'\n        }\n    },\n    it: {\n        translation: {\n            now: 'ora',\n            second_ago: '__count__ secondo fa',\n            second_ago_plural: '__count__ secondi fa',\n            second_in: 'tra __count__ secondo',\n            second_in_plural: 'tra __count__ secondi',\n            minute_ago: '__count__ minuto fa',\n            minute_ago_plural: '__count__ minuti fa',\n            minute_in: 'tra __count__ minuto',\n            minute_in_plural: 'tra __count__ minuti',\n            hour_ago: '__count__ ora fa',\n            hour_ago_plural: '__count__ ore fa',\n            hour_in: 'tra __count__ ora',\n            hour_in_plural: 'tra __count__ ore',\n            day_ago: '__count__ giorno fa',\n            day_ago_plural: '__count__ giorni fa',\n            day_in: 'tra __count__ giorno',\n            day_in_plural: 'tra __count__ giorni',\n            month_ago: '__count__ mese fa',\n            month_ago_plural: '__count__ mesi fa',\n            month_in: 'tra __count__ mese',\n            month_in_plural: 'tra __count__ mesi',\n            year_ago: '__count__ anno fa',\n            year_ago_plural: '__count__ anni fa',\n            year_in: 'tra __count__ anno',\n            year_in_plural: 'tra __count__ anni'\n        }\n    },\n    ja: {\n        translation: {\n            now: '今',\n            second_ago: '__count__ 秒前',\n            second_ago_plural: '__count__ 秒前',\n            second_in: '__count__ 秒後',\n            second_in_plural: '__count__ 秒後',\n            minute_ago: '__count__ 分前',\n            minute_ago_plural: '__count__ 分前',\n            minute_in: '__count__ 分後',\n            minute_in_plural: '__count__ 分後',\n            hour_ago: '__count__ 時間前',\n            hour_ago_plural: '__count__ 時間前',\n            hour_in: '__count__ 時間後',\n            hour_in_plural: '__count__ 時間後',\n            day_ago: '__count__ 日前',\n            day_ago_plural: '__count__ 日前',\n            day_in: '__count__ 日後',\n            day_in_plural: '__count__ 日後',\n            month_ago: '__count__ か月前',\n            month_ago_plural: '__count__ か月前',\n            month_in: '__count__ か月後',\n            month_in_plural: '__count__ か月後',\n            year_ago: '__count__ 年前',\n            year_ago_plural: '__count__ 年前',\n            year_in: '__count__ 年後',\n            year_in_plural: '__count__ 年後'\n        }\n    },\n    lt: {\n        translation: {\n            now: 'dabar',\n            second_ago: 'prieš __count__ sekundę',\n            second_ago_plural: 'prieš __count__ sekundes',\n            second_in: 'po __count__ sekundės',\n            second_in_plural: 'po __count__ sekundžių',\n            minute_ago: 'prieš __count__ minutę',\n            minute_ago_plural: 'prieš __count__ minutes',\n            minute_in: 'po __count__ minutės',\n            minute_in_plural: 'po __count__ minučių',\n            hour_ago: 'prieš __count__ valandą',\n            hour_ago_plural: 'prieš __count__ valandas',\n            hour_in: 'po __count__ valandos',\n            hour_in_plural: 'po __count__ valandų',\n            day_ago: 'prieš __count__ dieną',\n            day_ago_plural: 'prieš __count__ dienas',\n            day_in: 'po __count__ dienos',\n            day_in_plural: 'po __count__ dienų',\n            month_ago: 'prieš __count__ mėnesį',\n            month_ago_plural: 'prieš __count__ mėnesius',\n            month_in: 'po __count__ mėnesio',\n            month_in_plural: 'po __count__ mėnesių',\n            year_ago: 'prieš __count__ metus',\n            year_ago_plural: 'prieš __count__ metus',\n            year_in: 'po __count__ metų',\n            year_in_plural: 'po __count__ metų'\n        }\n    },\n    nl: {\n        translation: {\n            now: 'nu',\n            second_ago: '__count__ seconde geleden',\n            second_ago_plural: '__count__ seconden geleden',\n            second_in: 'over __count__ seconde',\n            second_in_plural: 'over __count__ seconden',\n            minute_ago: '__count__ minuut geleden',\n            minute_ago_plural: '__count__ minuten geleden',\n            minute_in: 'over __count__ minuut',\n            minute_in_plural: 'over __count__ minuten',\n            hour_ago: '__count__ uur geleden',\n            hour_ago_plural: '__count__ uur geleden',\n            hour_in: 'over __count__ uur',\n            hour_in_plural: 'over __count__ uur',\n            day_ago: '__count__ dag geleden',\n            day_ago_plural: '__count__ dagen geleden',\n            day_in: 'over __count__ dag',\n            day_in_plural: 'over __count__ dagen',\n            month_ago: '__count__ maand geleden',\n            month_ago_plural: '__count__ maanden geleden',\n            month_in: 'over __count__ maand',\n            month_in_plural: 'over __count__ maanden',\n            year_ago: '__count__ jaar geleden',\n            year_ago_plural: '__count__ jaar geleden',\n            year_in: 'over __count__ jaar',\n            year_in_plural: 'over __count__ jaar'\n        }\n    },\n    nn: {\n        translation: {\n            now: 'no',\n            second_ago: 'for __count__ sekund sidan',\n            second_ago_plural: 'for __count__ sekund sidan',\n            second_in: 'om __count__ sekund',\n            second_in_plural: 'om __count__ sekund',\n            minute_ago: 'for __count__ minutt sidan',\n            minute_ago_plural: 'for __count__ minutt sidan',\n            minute_in: 'om __count__ minutt',\n            minute_in_plural: 'om __count__ minutt',\n            hour_ago: 'for __count__ time sidan',\n            hour_ago_plural: 'for __count__ timar sidan',\n            hour_in: 'om __count__ time',\n            hour_in_plural: 'om __count__ timar',\n            day_ago: 'for __count__ døgn sidan',\n            day_ago_plural: 'for __count__ døgn sidan',\n            day_in: 'om __count__ døgn',\n            day_in_plural: 'om __count__ døgn',\n            month_ago: 'for __count__ månad sidan',\n            month_ago_plural: 'for __count__ månadar sidan',\n            month_in: 'om __count__ månad',\n            month_in_plural: 'om __count__ månadar',\n            year_ago: 'for __count__ år sidan',\n            year_ago_plural: 'for __count__ år sidan',\n            year_in: 'om __count__ år',\n            year_in_plural: 'om __count__ år'\n        }\n    },\n    nb: {\n        translation: {\n            now: 'nå',\n            second_ago: 'for __count__ sekund siden',\n            second_ago_plural: 'for __count__ sekunder siden',\n            second_in: 'om __count__ sekund',\n            second_in_plural: 'om __count__ sekunder',\n            minute_ago: 'for __count__ minutt siden',\n            minute_ago_plural: 'for __count__ minutter siden',\n            minute_in: 'om __count__ minutt',\n            minute_in_plural: 'om __count__ minutter',\n            hour_ago: 'for __count__ time siden',\n            hour_ago_plural: 'for __count__ timer siden',\n            hour_in: 'om __count__ time',\n            hour_in_plural: 'om __count__ timer',\n            day_ago: 'for __count__ døgn siden',\n            day_ago_plural: 'for __count__ døgn siden',\n            day_in: 'om __count__ døgn',\n            day_in_plural: 'om __count__ døgn',\n            month_ago: 'for __count__ måned siden',\n            month_ago_plural: 'for __count__ måneder siden',\n            month_in: 'om __count__ måned',\n            month_in_plural: 'om __count__ måneder',\n            year_ago: 'for __count__ år siden',\n            year_ago_plural: 'for __count__ år siden',\n            year_in: 'om __count__ år',\n            year_in_plural: 'om __count__ år'\n        }\n    },\n    pl: {\n        translation: {\n            now: 'teraz',\n            second_ago: '__count__ sekundę temu',\n            second_ago_plural: '__count__ sekundy temu',\n            second_in: 'za __count__ sekundę',\n            second_in_plural: 'za __count__ sekundy',\n            minute_ago: '__count__ minutę temu',\n            minute_ago_plural: '__count__ minuty temu',\n            minute_in: 'za __count__ minutę',\n            minute_in_plural: 'za __count__ minuty',\n            hour_ago: '__count__ godzinę temu',\n            hour_ago_plural: '__count__ godziny temu',\n            hour_in: 'za __count__ godzinę',\n            hour_in_plural: 'za __count__ godziny',\n            day_ago: '__count__ dzień temu',\n            day_ago_plural: '__count__ dni temu',\n            day_in: 'za __count__ dzień',\n            day_in_plural: 'za __count__ dni',\n            month_ago: '__count__ miesiąc temu',\n            month_ago_plural: '__count__ miesiące temu',\n            month_in: 'za __count__ miesiąc',\n            month_in_plural: 'za __count__ miesiące',\n            year_ago: '__count__ rok temu',\n            year_ago_plural: '__count__ lata temu',\n            year_in: 'za __count__ rok',\n            year_in_plural: 'za __count__ lata'\n        }\n    },\n    pt: {\n        translation: {\n            now: 'agora',\n            second_ago: 'há __count__ segundo',\n            second_ago_plural: 'há __count__ segundos',\n            second_in: 'em __count__ segundo',\n            second_in_plural: 'em __count__ segundos',\n            minute_ago: 'há __count__ minuto',\n            minute_ago_plural: 'há __count__ minutos',\n            minute_in: 'em __count__ minuto',\n            minute_in_plural: 'em __count__ minutos',\n            hour_ago: 'há __count__ hora',\n            hour_ago_plural: 'há __count__ horas',\n            hour_in: 'em __count__ hora',\n            hour_in_plural: 'em __count__ horas',\n            day_ago: 'há __count__ dia',\n            day_ago_plural: 'há __count__ dias',\n            day_in: 'em __count__ dia',\n            day_in_plural: 'em __count__ dias',\n            month_ago: 'há __count__ mês',\n            month_ago_plural: 'há __count__ meses',\n            month_in: 'em __count__ mês',\n            month_in_plural: 'em __count__ meses',\n            year_ago: 'há __count__ ano',\n            year_ago_plural: 'há __count__ anos',\n            year_in: 'em __count__ ano',\n            year_in_plural: 'em __count__ anos'\n        }\n    },\n    sv: {\n        translation: {\n            now: 'nu',\n            second_ago: 'för __count__ sekund sedan',\n            second_ago_plural: 'för __count__ sekunder sedan',\n            second_in: 'om __count__ sekund',\n            second_in_plural: 'om __count__ sekunder',\n            minute_ago: 'för __count__ minut sedan',\n            minute_ago_plural: 'för __count__ minuter sedan',\n            minute_in: 'om __count__ minut',\n            minute_in_plural: 'om __count__ minuter',\n            hour_ago: 'för __count__ timme sedan',\n            hour_ago_plural: 'för __count__ timmar sedan',\n            hour_in: 'om __count__ timme',\n            hour_in_plural: 'om __count__ timmar',\n            day_ago: 'för __count__ dag sedan',\n            day_ago_plural: 'för __count__ dagar sedan',\n            day_in: 'om __count__ dag',\n            day_in_plural: 'om __count__ dagar',\n            month_ago: 'för __count__ månad sedan',\n            month_ago_plural: 'för __count__ månader sedan',\n            month_in: 'om __count__ månad',\n            month_in_plural: 'om __count__ månader',\n            year_ago: 'för __count__ år sedan',\n            year_ago_plural: 'för __count__ år sedan',\n            year_in: 'om __count__ år',\n            year_in_plural: 'om __count__ år'\n        }\n    },\n    th: {\n        translation: {\n            now: 'ขณะนี้',\n            second_ago: '__count__ วินาทีที่ผ่านมา',\n            second_ago_plural: '__count__ วินาทีที่ผ่านมา',\n            second_in: 'ในอีก __count__ วินาที',\n            second_in_plural: 'ในอีก __count__ วินาที',\n            minute_ago: '__count__ นาทีที่ผ่านมา',\n            minute_ago_plural: '__count__ นาทีที่ผ่านมา',\n            minute_in: 'ในอีก __count__ นาที',\n            minute_in_plural: 'ในอีก __count__ นาที',\n            hour_ago: '__count__ ชั่วโมงที่ผ่านมา',\n            hour_ago_plural: '__count__ ชั่วโมงที่ผ่านมา',\n            hour_in: 'ในอีก __count__ ชั่วโมง',\n            hour_in_plural: 'ในอีก __count__ ชั่วโมง',\n            day_ago: '__count__ วันที่ผ่านมา',\n            day_ago_plural: '__count__ วันที่ผ่านมา',\n            day_in: 'ในอีก __count__ วัน',\n            day_in_plural: 'ในอีก __count__ วัน',\n            month_ago: '__count__ เดือนที่ผ่านมา',\n            month_ago_plural: '__count__ เดือนที่ผ่านมา',\n            month_in: 'ในอีก __count__ เดือน',\n            month_in_plural: 'ในอีก __count__ เดือน',\n            year_ago: '__count__ ปีที่แล้ว',\n            year_ago_plural: '__count__ ปีที่แล้ว',\n            year_in: 'ในอีก __count__ ปี',\n            year_in_plural: 'ในอีก __count__ ปี'\n        }\n    },\n    zh: {\n        translation: {\n            now: '现在',\n            second_ago: '__count__秒钟前',\n            second_ago_plural: '__count__秒钟前',\n            second_in: '__count__秒钟后',\n            second_in_plural: '__count__秒钟后',\n            minute_ago: '__count__分钟前',\n            minute_ago_plural: '__count__分钟前',\n            minute_in: '__count__分钟后',\n            minute_in_plural: '__count__分钟后',\n            hour_ago: '__count__小时前',\n            hour_ago_plural: '__count__小时前',\n            hour_in: '__count__小时后',\n            hour_in_plural: '__count__小时后',\n            day_ago: '__count__天前',\n            day_ago_plural: '__count__天前',\n            day_in: '__count__天后',\n            day_in_plural: '__count__天后',\n            month_ago: '__count__个月前',\n            month_ago_plural: '__count__个月前',\n            month_in: '__count__个月后',\n            month_in_plural: '__count__个月后',\n            year_ago: '__count__年前',\n            year_ago_plural: '__count__年前',\n            year_in: '__count__年后',\n            year_in_plural: '__count__年后'\n        }\n    },\n    'zh-HK': {\n        translation: {\n            now: '現在',\n            second_ago: '__count__ 秒前',\n            second_ago_plural: '__count__ 秒前',\n            second_in: '__count__ 秒後',\n            second_in_plural: '__count__ 秒後',\n            minute_ago: '__count__ 分鐘前',\n            minute_ago_plural: '__count__ 分鐘前',\n            minute_in: '__count__ 分鐘後',\n            minute_in_plural: '__count__ 分鐘後',\n            hour_ago: '__count__ 小時前',\n            hour_ago_plural: '__count__ 小時前',\n            hour_in: '__count__ 小時後',\n            hour_in_plural: '__count__ 小時後',\n            day_ago: '__count__ 日前',\n            day_ago_plural: '__count__ 日前',\n            day_in: '__count__ 日後',\n            day_in_plural: '__count__ 日後',\n            month_ago: '__count__ 個月前',\n            month_ago_plural: '__count__ 個月前',\n            month_in: '__count__ 個月後',\n            month_in_plural: '__count__ 個月後',\n            year_ago: '__count__ 年前',\n            year_ago_plural: '__count__ 年前',\n            year_in: '__count__ 年後',\n            year_in_plural: '__count__ 年後'\n        },\n    },\n    'zh-TW': {\n        translation: {\n            now: '剛才',\n            second_ago: '__count__ 秒鐘前',\n            second_ago_plural: '__count__ 秒鐘前',\n            second_in: '__count__ 秒內',\n            second_in_plural: '__count__ 秒內',\n            minute_ago: '__count__ 分鐘前',\n            minute_ago_plural: '__count__ 分鐘前',\n            minute_in: '__count__ 分鐘內',\n            minute_in_plural: '__count__ 分鐘內',\n            hour_ago: '__count__ 小時前',\n            hour_ago_plural: '__count__ 小時前',\n            hour_in: '__count__ 小時內',\n            hour_in_plural: '__count__ 小時內',\n            day_ago: '__count__ 天前',\n            day_ago_plural: '__count__ 天前',\n            day_in: '__count__ 天內',\n            day_in_plural: '__count__ 天內',\n            month_ago: '__count__ 月前',\n            month_ago_plural: '__count__ 月前',\n            month_in: '__count__ 月內',\n            month_in_plural: '__count__ 月內',\n            year_ago: '__count__ 年前',\n            year_ago_plural: '__count__ 年前',\n            year_in: '__count__ 年內',\n            year_in_plural: '__count__ 年內'\n        }\n    }\n};\n// tslint:enable\n\nvar RelativeTime = /** @class */ (function () {\n    function RelativeTime(service, ea) {\n        var _this = this;\n        this.service = service;\n        this.ea = ea;\n        this.service.i18nextReady().then(function () {\n            _this.setup();\n        });\n        this.ea.subscribe(I18N_EA_SIGNAL, function (locales) {\n            _this.setup(locales);\n        });\n    }\n    RelativeTime.inject = function () { return [I18N, EventAggregator]; };\n    RelativeTime.prototype.setup = function (locales) {\n        var trans = translations;\n        var fallbackLng = this.service.i18next.fallbackLng;\n        var alternateFb = fallbackLng || this.service.i18next.options.fallbackLng;\n        if (Array.isArray(alternateFb) && alternateFb.length > 0) {\n            alternateFb = alternateFb[0];\n        }\n        var key = ((locales && locales.newValue)\n            ? locales.newValue\n            : this.service.getLocale()) || alternateFb;\n        var index = 0;\n        // tslint:disable-next-line:no-conditional-assignment\n        if ((index = key.indexOf(\"-\")) >= 0) {\n            var baseLocale = key.substring(0, index);\n            if (trans[baseLocale]) {\n                this.addTranslationResource(baseLocale, trans[baseLocale].translation);\n            }\n        }\n        if (trans[key]) {\n            this.addTranslationResource(key, trans[key].translation);\n        }\n        if (trans[fallbackLng]) {\n            this.addTranslationResource(key, trans[fallbackLng].translation);\n        }\n    };\n    RelativeTime.prototype.addTranslationResource = function (key, translation) {\n        var options = this.service.i18next.options;\n        if (options.interpolation && (options.interpolation.prefix !== \"__\" || options.interpolation.suffix !== \"__\")) {\n            // tslint:disable-next-line:forin\n            for (var subkey in translation) {\n                translation[subkey] = translation[subkey]\n                    .replace(\"__count__\", (options.interpolation.prefix || \"{{\") + \"count\" + (options.interpolation.suffix || \"}}\"));\n            }\n        }\n        this.service.i18next.addResources(key, options.defaultNS || \"translation\", translation);\n    };\n    RelativeTime.prototype.getRelativeTime = function (time) {\n        var now = new Date();\n        var diff = now.getTime() - time.getTime();\n        var timeDiff = this.getTimeDiffDescription(diff, \"year\", 31104000000);\n        if (!timeDiff) {\n            timeDiff = this.getTimeDiffDescription(diff, \"month\", 2592000000);\n            if (!timeDiff) {\n                timeDiff = this.getTimeDiffDescription(diff, \"day\", 86400000);\n                if (!timeDiff) {\n                    timeDiff = this.getTimeDiffDescription(diff, \"hour\", 3600000);\n                    if (!timeDiff) {\n                        timeDiff = this.getTimeDiffDescription(diff, \"minute\", 60000);\n                        if (!timeDiff) {\n                            timeDiff = this.getTimeDiffDescription(diff, \"second\", 1000);\n                            if (!timeDiff) {\n                                timeDiff = this.service.tr(\"now\");\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        return timeDiff;\n    };\n    RelativeTime.prototype.getTimeDiffDescription = function (diff, unit, timeDivisor) {\n        var unitAmount = parseInt((diff / timeDivisor).toFixed(0), 10);\n        if (unitAmount > 0) {\n            return this.service.tr(unit, { count: unitAmount, context: \"ago\" });\n        }\n        else if (unitAmount < 0) {\n            var abs = Math.abs(unitAmount);\n            return this.service.tr(unit, { count: abs, context: \"in\" });\n        }\n        return null;\n    };\n    return RelativeTime;\n}());\n\nvar RtValueConverter = /** @class */ (function () {\n    function RtValueConverter(service) {\n        this.service = service;\n    }\n    RtValueConverter.inject = function () { return [RelativeTime]; };\n    RtValueConverter.prototype.toView = function (value) {\n        if (value === null\n            || typeof value === \"undefined\"\n            || (typeof value === \"string\" && value.trim() === \"\")) {\n            return value;\n        }\n        if (typeof value === \"string\" && isNaN(value) && !Number.isInteger(value)) {\n            value = new Date(value);\n        }\n        return this.service.getRelativeTime(value);\n    };\n    RtValueConverter = __decorate([\n        valueConverter$1(\"rt\")\n    ], RtValueConverter);\n    return RtValueConverter;\n}());\n\nvar Backend = /** @class */ (function () {\n    function Backend(services, options) {\n        if (options === void 0) { options = {}; }\n        this.services = services;\n        this.options = options;\n        this.type = \"backend\";\n        this.init(services, options);\n    }\n    Backend.with = function (loader) {\n        this.loader = loader;\n        return this;\n    };\n    Backend.prototype.init = function (services, options) {\n        if (options === void 0) { options = {}; }\n        this.services = services;\n        this.options = Object.assign({}, {\n            loadPath: \"/locales/{{lng}}/{{ns}}.json\",\n            addPath: \"locales/add/{{lng}}/{{ns}}\",\n            allowMultiLoading: false,\n            parse: JSON.parse\n        }, options);\n    };\n    Backend.prototype.readMulti = function (languages, namespaces, callback) {\n        var loadPath = this.options.loadPath;\n        if (typeof this.options.loadPath === \"function\") {\n            loadPath = this.options.loadPath(languages, namespaces);\n        }\n        var url = this.services\n            .interpolator\n            .interpolate(loadPath, { lng: languages.join(\"+\"), ns: namespaces.join(\"+\") });\n        this.loadUrl(url, callback);\n    };\n    Backend.prototype.read = function (language, namespace, callback) {\n        var loadPath = this.options.loadPath;\n        if (typeof this.options.loadPath === \"function\") {\n            loadPath = this.options.loadPath([language], [namespace]);\n        }\n        var url = this.services.interpolator.interpolate(loadPath, { lng: language, ns: namespace });\n        this.loadUrl(url, callback);\n    };\n    Backend.prototype.loadUrl = function (url, callback) {\n        return __awaiter(this, void 0, void 0, function () {\n            var response, ret, err, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        _b.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, Backend.loader.loadText(url)];\n                    case 1:\n                        response = _b.sent();\n                        ret = void 0;\n                        err = void 0;\n                        try {\n                            ret = (response instanceof Object) ? response : this.options.parse(response, url);\n                        }\n                        catch (e) {\n                            err = \"failed parsing \" + url + \" to json\";\n                        }\n                        if (err) {\n                            return [2 /*return*/, callback(err, false)];\n                        }\n                        callback(null, ret);\n                        return [3 /*break*/, 3];\n                    case 2:\n                        _a = _b.sent();\n                        callback(\"failed loading \" + url, false /* no retry */);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    // tslint:disable-next-line:variable-name\n    Backend.prototype.create = function (_languages, _namespace, _key, _fallbackValue) {\n        // not supported\n    };\n    Backend.type = \"backend\";\n    return Backend;\n}());\n\nfunction configure(frameworkConfig, cb) {\n    if (typeof cb !== \"function\") {\n        var errorMsg = \"You need to provide a callback method to properly configure the library\";\n        throw errorMsg;\n    }\n    var instance = frameworkConfig.container.get(I18N);\n    var ret = cb(instance);\n    frameworkConfig.globalResources([\n        TValueConverter,\n        TBindingBehavior,\n        TCustomAttribute,\n        TParamsCustomAttribute,\n        NfValueConverter,\n        NfBindingBehavior,\n        DfValueConverter,\n        DfBindingBehavior,\n        RtValueConverter,\n        RtBindingBehavior\n    ]);\n    frameworkConfig.postTask(function () {\n        var resources = frameworkConfig.container.get(ViewResources);\n        var htmlBehaviorResource = resources.getAttribute(\"t\");\n        var htmlParamsResource = resources.getAttribute(\"t-params\");\n        var attributes = instance.i18next.options.attributes;\n        // Register default attributes if none provided\n        if (!attributes) {\n            attributes = [\"t\", \"i18n\"];\n        }\n        attributes.forEach(function (alias) { return resources.registerAttribute(alias, htmlBehaviorResource, \"t\"); });\n        attributes.forEach(function (alias) { return resources.registerAttribute(alias + \"-params\", htmlParamsResource, \"t-params\"); });\n    });\n    return ret;\n}\n\nexport { configure, DfValueConverter, DfBindingBehavior, NfValueConverter, NfBindingBehavior, RtValueConverter, RtBindingBehavior, TValueConverter, TBindingBehavior, TCustomAttribute, TParamsCustomAttribute, I18N_EA_SIGNAL, I18N, RelativeTime, Backend };\n","\n\nfunction mi(name) {\n  throw new Error('History must implement ' + name + '().');\n}\n\nexport var History = function () {\n  function History() {\n    \n  }\n\n  History.prototype.activate = function activate(options) {\n    mi('activate');\n  };\n\n  History.prototype.deactivate = function deactivate() {\n    mi('deactivate');\n  };\n\n  History.prototype.getAbsoluteRoot = function getAbsoluteRoot() {\n    mi('getAbsoluteRoot');\n  };\n\n  History.prototype.navigate = function navigate(fragment, options) {\n    mi('navigate');\n  };\n\n  History.prototype.navigateBack = function navigateBack() {\n    mi('navigateBack');\n  };\n\n  History.prototype.setTitle = function setTitle(title) {\n    mi('setTitle');\n  };\n\n  History.prototype.setState = function setState(key, value) {\n    mi('setState');\n  };\n\n  History.prototype.getState = function getState(key) {\n    mi('getState');\n  };\n\n  History.prototype.getHistoryIndex = function getHistoryIndex() {\n    mi('getHistoryIndex');\n  };\n\n  History.prototype.go = function go(movement) {\n    mi('go');\n  };\n\n  return History;\n}();","import { PLATFORM, DOM } from 'aurelia-pal';\n\nfunction json(body, replacer) {\r\n    return JSON.stringify((body !== undefined ? body : {}), replacer);\r\n}\n\nvar retryStrategy = {\r\n    fixed: 0,\r\n    incremental: 1,\r\n    exponential: 2,\r\n    random: 3\r\n};\r\nvar defaultRetryConfig = {\r\n    maxRetries: 3,\r\n    interval: 1000,\r\n    strategy: retryStrategy.fixed\r\n};\r\nvar RetryInterceptor = (function () {\r\n    function RetryInterceptor(retryConfig) {\r\n        this.retryConfig = Object.assign({}, defaultRetryConfig, retryConfig || {});\r\n        if (this.retryConfig.strategy === retryStrategy.exponential &&\r\n            this.retryConfig.interval <= 1000) {\r\n            throw new Error('An interval less than or equal to 1 second is not allowed when using the exponential retry strategy');\r\n        }\r\n    }\r\n    RetryInterceptor.prototype.request = function (request) {\r\n        var $r = request;\r\n        if (!$r.retryConfig) {\r\n            $r.retryConfig = Object.assign({}, this.retryConfig);\r\n            $r.retryConfig.counter = 0;\r\n        }\r\n        $r.retryConfig.requestClone = request.clone();\r\n        return request;\r\n    };\r\n    RetryInterceptor.prototype.response = function (response, request) {\r\n        delete request.retryConfig;\r\n        return response;\r\n    };\r\n    RetryInterceptor.prototype.responseError = function (error, request, httpClient) {\r\n        var retryConfig = request.retryConfig;\r\n        var requestClone = retryConfig.requestClone;\r\n        return Promise.resolve().then(function () {\r\n            if (retryConfig.counter < retryConfig.maxRetries) {\r\n                var result = retryConfig.doRetry ? retryConfig.doRetry(error, request) : true;\r\n                return Promise.resolve(result).then(function (doRetry) {\r\n                    if (doRetry) {\r\n                        retryConfig.counter++;\r\n                        return new Promise(function (resolve) { return PLATFORM.global.setTimeout(resolve, calculateDelay(retryConfig) || 0); })\r\n                            .then(function () {\r\n                            var newRequest = requestClone.clone();\r\n                            if (typeof (retryConfig.beforeRetry) === 'function') {\r\n                                return retryConfig.beforeRetry(newRequest, httpClient);\r\n                            }\r\n                            return newRequest;\r\n                        })\r\n                            .then(function (newRequest) {\r\n                            return httpClient.fetch(Object.assign(newRequest, { retryConfig: retryConfig }));\r\n                        });\r\n                    }\r\n                    delete request.retryConfig;\r\n                    throw error;\r\n                });\r\n            }\r\n            delete request.retryConfig;\r\n            throw error;\r\n        });\r\n    };\r\n    return RetryInterceptor;\r\n}());\r\nfunction calculateDelay(retryConfig) {\r\n    var interval = retryConfig.interval, strategy = retryConfig.strategy, minRandomInterval = retryConfig.minRandomInterval, maxRandomInterval = retryConfig.maxRandomInterval, counter = retryConfig.counter;\r\n    if (typeof (strategy) === 'function') {\r\n        return retryConfig.strategy(counter);\r\n    }\r\n    switch (strategy) {\r\n        case (retryStrategy.fixed):\r\n            return retryStrategies[retryStrategy.fixed](interval);\r\n        case (retryStrategy.incremental):\r\n            return retryStrategies[retryStrategy.incremental](counter, interval);\r\n        case (retryStrategy.exponential):\r\n            return retryStrategies[retryStrategy.exponential](counter, interval);\r\n        case (retryStrategy.random):\r\n            return retryStrategies[retryStrategy.random](counter, interval, minRandomInterval, maxRandomInterval);\r\n        default:\r\n            throw new Error('Unrecognized retry strategy');\r\n    }\r\n}\r\nvar retryStrategies = [\r\n    function (interval) { return interval; },\r\n    function (retryCount, interval) { return interval * retryCount; },\r\n    function (retryCount, interval) { return retryCount === 1 ? interval : Math.pow(interval, retryCount) / 1000; },\r\n    function (retryCount, interval, minRandomInterval, maxRandomInterval) {\r\n        if (minRandomInterval === void 0) { minRandomInterval = 0; }\r\n        if (maxRandomInterval === void 0) { maxRandomInterval = 60000; }\r\n        return Math.random() * (maxRandomInterval - minRandomInterval) + minRandomInterval;\r\n    }\r\n];\n\nvar HttpClientConfiguration = (function () {\r\n    function HttpClientConfiguration() {\r\n        this.baseUrl = '';\r\n        this.defaults = {};\r\n        this.interceptors = [];\r\n    }\r\n    HttpClientConfiguration.prototype.withBaseUrl = function (baseUrl) {\r\n        this.baseUrl = baseUrl;\r\n        return this;\r\n    };\r\n    HttpClientConfiguration.prototype.withDefaults = function (defaults) {\r\n        this.defaults = defaults;\r\n        return this;\r\n    };\r\n    HttpClientConfiguration.prototype.withInterceptor = function (interceptor) {\r\n        this.interceptors.push(interceptor);\r\n        return this;\r\n    };\r\n    HttpClientConfiguration.prototype.useStandardConfiguration = function () {\r\n        var standardConfig = { credentials: 'same-origin' };\r\n        Object.assign(this.defaults, standardConfig, this.defaults);\r\n        return this.rejectErrorResponses();\r\n    };\r\n    HttpClientConfiguration.prototype.rejectErrorResponses = function () {\r\n        return this.withInterceptor({ response: rejectOnError });\r\n    };\r\n    HttpClientConfiguration.prototype.withRetry = function (config) {\r\n        var interceptor = new RetryInterceptor(config);\r\n        return this.withInterceptor(interceptor);\r\n    };\r\n    return HttpClientConfiguration;\r\n}());\r\nfunction rejectOnError(response) {\r\n    if (!response.ok) {\r\n        throw response;\r\n    }\r\n    return response;\r\n}\n\nvar HttpClient = (function () {\r\n    function HttpClient() {\r\n        this.activeRequestCount = 0;\r\n        this.isRequesting = false;\r\n        this.isConfigured = false;\r\n        this.baseUrl = '';\r\n        this.defaults = null;\r\n        this.interceptors = [];\r\n        if (typeof fetch === 'undefined') {\r\n            throw new Error('HttpClient requires a Fetch API implementation, but the current environment doesn\\'t support it. You may need to load a polyfill such as https://github.com/github/fetch');\r\n        }\r\n    }\r\n    HttpClient.prototype.configure = function (config) {\r\n        var normalizedConfig;\r\n        if (typeof config === 'object') {\r\n            normalizedConfig = { defaults: config };\r\n        }\r\n        else if (typeof config === 'function') {\r\n            normalizedConfig = new HttpClientConfiguration();\r\n            normalizedConfig.baseUrl = this.baseUrl;\r\n            normalizedConfig.defaults = Object.assign({}, this.defaults);\r\n            normalizedConfig.interceptors = this.interceptors;\r\n            var c = config(normalizedConfig);\r\n            if (HttpClientConfiguration.prototype.isPrototypeOf(c)) {\r\n                normalizedConfig = c;\r\n            }\r\n        }\r\n        else {\r\n            throw new Error('invalid config');\r\n        }\r\n        var defaults = normalizedConfig.defaults;\r\n        if (defaults && Headers.prototype.isPrototypeOf(defaults.headers)) {\r\n            throw new Error('Default headers must be a plain object.');\r\n        }\r\n        var interceptors = normalizedConfig.interceptors;\r\n        if (interceptors && interceptors.length) {\r\n            if (interceptors.filter(function (x) { return RetryInterceptor.prototype.isPrototypeOf(x); }).length > 1) {\r\n                throw new Error('Only one RetryInterceptor is allowed.');\r\n            }\r\n            var retryInterceptorIndex = interceptors.findIndex(function (x) { return RetryInterceptor.prototype.isPrototypeOf(x); });\r\n            if (retryInterceptorIndex >= 0 && retryInterceptorIndex !== interceptors.length - 1) {\r\n                throw new Error('The retry interceptor must be the last interceptor defined.');\r\n            }\r\n        }\r\n        this.baseUrl = normalizedConfig.baseUrl;\r\n        this.defaults = defaults;\r\n        this.interceptors = normalizedConfig.interceptors || [];\r\n        this.isConfigured = true;\r\n        return this;\r\n    };\r\n    HttpClient.prototype.fetch = function (input, init) {\r\n        var _this = this;\r\n        trackRequestStart(this);\r\n        var request = this.buildRequest(input, init);\r\n        return processRequest(request, this.interceptors, this).then(function (result) {\r\n            var response = null;\r\n            if (Response.prototype.isPrototypeOf(result)) {\r\n                response = Promise.resolve(result);\r\n            }\r\n            else if (Request.prototype.isPrototypeOf(result)) {\r\n                request = result;\r\n                response = fetch(result);\r\n            }\r\n            else {\r\n                throw new Error(\"An invalid result was returned by the interceptor chain. Expected a Request or Response instance, but got [\" + result + \"]\");\r\n            }\r\n            return processResponse(response, _this.interceptors, request, _this);\r\n        })\r\n            .then(function (result) {\r\n            if (Request.prototype.isPrototypeOf(result)) {\r\n                return _this.fetch(result);\r\n            }\r\n            return result;\r\n        })\r\n            .then(function (result) {\r\n            trackRequestEnd(_this);\r\n            return result;\r\n        }, function (error) {\r\n            trackRequestEnd(_this);\r\n            throw error;\r\n        });\r\n    };\r\n    HttpClient.prototype.buildRequest = function (input, init) {\r\n        var defaults = this.defaults || {};\r\n        var request;\r\n        var body;\r\n        var requestContentType;\r\n        var parsedDefaultHeaders = parseHeaderValues(defaults.headers);\r\n        if (Request.prototype.isPrototypeOf(input)) {\r\n            request = input;\r\n            requestContentType = new Headers(request.headers).get('Content-Type');\r\n        }\r\n        else {\r\n            if (!init) {\r\n                init = {};\r\n            }\r\n            body = init.body;\r\n            var bodyObj = body ? { body: body } : null;\r\n            var requestInit = Object.assign({}, defaults, { headers: {} }, init, bodyObj);\r\n            requestContentType = new Headers(requestInit.headers).get('Content-Type');\r\n            request = new Request(getRequestUrl(this.baseUrl, input), requestInit);\r\n        }\r\n        if (!requestContentType) {\r\n            if (new Headers(parsedDefaultHeaders).has('content-type')) {\r\n                request.headers.set('Content-Type', new Headers(parsedDefaultHeaders).get('content-type'));\r\n            }\r\n            else if (body && isJSON(body)) {\r\n                request.headers.set('Content-Type', 'application/json');\r\n            }\r\n        }\r\n        setDefaultHeaders(request.headers, parsedDefaultHeaders);\r\n        if (body && Blob.prototype.isPrototypeOf(body) && body.type) {\r\n            request.headers.set('Content-Type', body.type);\r\n        }\r\n        return request;\r\n    };\r\n    HttpClient.prototype.get = function (input, init) {\r\n        return this.fetch(input, init);\r\n    };\r\n    HttpClient.prototype.post = function (input, body, init) {\r\n        return callFetch(this, input, body, init, 'POST');\r\n    };\r\n    HttpClient.prototype.put = function (input, body, init) {\r\n        return callFetch(this, input, body, init, 'PUT');\r\n    };\r\n    HttpClient.prototype.patch = function (input, body, init) {\r\n        return callFetch(this, input, body, init, 'PATCH');\r\n    };\r\n    HttpClient.prototype.delete = function (input, body, init) {\r\n        return callFetch(this, input, body, init, 'DELETE');\r\n    };\r\n    return HttpClient;\r\n}());\r\nvar absoluteUrlRegexp = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\r\nfunction trackRequestStart(client) {\r\n    client.isRequesting = !!(++client.activeRequestCount);\r\n    if (client.isRequesting) {\r\n        var evt_1 = DOM.createCustomEvent('aurelia-fetch-client-request-started', { bubbles: true, cancelable: true });\r\n        setTimeout(function () { return DOM.dispatchEvent(evt_1); }, 1);\r\n    }\r\n}\r\nfunction trackRequestEnd(client) {\r\n    client.isRequesting = !!(--client.activeRequestCount);\r\n    if (!client.isRequesting) {\r\n        var evt_2 = DOM.createCustomEvent('aurelia-fetch-client-requests-drained', { bubbles: true, cancelable: true });\r\n        setTimeout(function () { return DOM.dispatchEvent(evt_2); }, 1);\r\n    }\r\n}\r\nfunction parseHeaderValues(headers) {\r\n    var parsedHeaders = {};\r\n    for (var name_1 in headers || {}) {\r\n        if (headers.hasOwnProperty(name_1)) {\r\n            parsedHeaders[name_1] = (typeof headers[name_1] === 'function') ? headers[name_1]() : headers[name_1];\r\n        }\r\n    }\r\n    return parsedHeaders;\r\n}\r\nfunction getRequestUrl(baseUrl, url) {\r\n    if (absoluteUrlRegexp.test(url)) {\r\n        return url;\r\n    }\r\n    return (baseUrl || '') + url;\r\n}\r\nfunction setDefaultHeaders(headers, defaultHeaders) {\r\n    for (var name_2 in defaultHeaders || {}) {\r\n        if (defaultHeaders.hasOwnProperty(name_2) && !headers.has(name_2)) {\r\n            headers.set(name_2, defaultHeaders[name_2]);\r\n        }\r\n    }\r\n}\r\nfunction processRequest(request, interceptors, http) {\r\n    return applyInterceptors(request, interceptors, 'request', 'requestError', http);\r\n}\r\nfunction processResponse(response, interceptors, request, http) {\r\n    return applyInterceptors(response, interceptors, 'response', 'responseError', request, http);\r\n}\r\nfunction applyInterceptors(input, interceptors, successName, errorName) {\r\n    var interceptorArgs = [];\r\n    for (var _i = 4; _i < arguments.length; _i++) {\r\n        interceptorArgs[_i - 4] = arguments[_i];\r\n    }\r\n    return (interceptors || [])\r\n        .reduce(function (chain, interceptor) {\r\n        var successHandler = interceptor[successName];\r\n        var errorHandler = interceptor[errorName];\r\n        return chain.then(successHandler && (function (value) { return successHandler.call.apply(successHandler, [interceptor, value].concat(interceptorArgs)); }) || identity, errorHandler && (function (reason) { return errorHandler.call.apply(errorHandler, [interceptor, reason].concat(interceptorArgs)); }) || thrower);\r\n    }, Promise.resolve(input));\r\n}\r\nfunction isJSON(str) {\r\n    try {\r\n        JSON.parse(str);\r\n    }\r\n    catch (err) {\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\nfunction identity(x) {\r\n    return x;\r\n}\r\nfunction thrower(x) {\r\n    throw x;\r\n}\r\nfunction callFetch(client, input, body, init, method) {\r\n    if (!init) {\r\n        init = {};\r\n    }\r\n    init.method = method;\r\n    if (body) {\r\n        init.body = body;\r\n    }\r\n    return client.fetch(input, init);\r\n}\n\nexport { json, retryStrategy, RetryInterceptor, HttpClientConfiguration, HttpClient };\n"],"sourceRoot":""}