diff --git a/dist/redux-little-router.js b/dist/redux-little-router.js
index b6a55519..680cc3fd 100644
--- a/dist/redux-little-router.js
+++ b/dist/redux-little-router.js
@@ -197,7 +197,7 @@ return /******/ (function(modules) { // webpackBootstrap
var pathname = _ref3.pathname;
var query = _ref3.query;
var _ref3$basename = _ref3.basename;
- var basename = _ref3$basename === undefined ? '/' : _ref3$basename;
+ var basename = _ref3$basename === undefined ? '' : _ref3$basename;
var _ref3$forServerRender = _ref3.forServerRender;
var forServerRender = _ref3$forServerRender === undefined ? false : _ref3$forServerRender;
var _ref3$createMatcher = _ref3.createMatcher;
diff --git a/dist/redux-little-router.js.map b/dist/redux-little-router.js.map
index 9b1d439a..16998369 100644
--- a/dist/redux-little-router.js.map
+++ b/dist/redux-little-router.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 4b63a2177b62e015d4e7","webpack:///./index.js","webpack:///./store-enhancer.js","webpack:///../~/history/lib/createBrowserHistory.js","webpack:///../~/process/browser.js","webpack:///../~/invariant/browser.js","webpack:///../~/history/lib/ExecutionEnvironment.js","webpack:///../~/history/lib/BrowserProtocol.js","webpack:///../~/history/lib/LocationUtils.js","webpack:///../~/history/lib/PathUtils.js","webpack:///../~/warning/browser.js","webpack:///../~/history/lib/Actions.js","webpack:///../~/history/lib/DOMUtils.js","webpack:///../~/history/lib/DOMStateStorage.js","webpack:///../~/history/lib/RefreshProtocol.js","webpack:///../~/history/lib/createHistory.js","webpack:///../~/history/lib/AsyncUtils.js","webpack:///../~/history/lib/runTransitionHook.js","webpack:///../~/history/lib/createMemoryHistory.js","webpack:///../~/history/lib/useBasename.js","webpack:///../~/history/lib/useQueries.js","webpack:///../~/query-string/index.js","webpack:///../~/strict-uri-encode/index.js","webpack:///../~/object-assign/index.js","webpack:///./action-types.js","webpack:///./create-matcher.js","webpack:///../~/url-pattern/lib/url-pattern.js","webpack:///../~/webpack/buildin/amd-options.js","webpack:///./reducer.js","webpack:///./initial-router-state.js","webpack:///./provider.js","webpack:///external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack:///./link.js","webpack:///./fragment.js"],"names":[],"mappings":"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CAAP;AApBJ;AAsBD,QAvBD;;AAyBA,2BAAW,KAAX,IAAkB,kBAAlB,EAA4B,gBAA5B,EAAqC,sBAArC;AACD,MAxEM;AAAA,IAAP;AAyED,E;;;;;;ACrID;;AAEA;AACA;AACA,EAAC;;AAED,oDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,sBAAsB,eAAe,EAAE;;AAE3Q,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,qBAAqB;AACxC;AACA;AACA,yEAAwE;;AAExE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAoB;AACpB;AACA;AACA,IAAG;AACH;;AAEA,wC;;;;;;;AC9FA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU;;;;;;;AC7FtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,2CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA,2BAA0B;AAC1B;AACA;AACA;;AAEA;;;;;;;;AClDA;;AAEA;AACA;AACA,EAAC;AACD,2H;;;;;;ACLA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA,gBAAe,WAAW;AAC1B;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA,G;;;;;;ACrFA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA,qGAAoG,mBAAmB,EAAE,mBAAmB,kGAAkG;;AAE9O,oDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,G;;;;;;;ACnFA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,G;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;;;;;;;;AC3DA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+B;;;;;;ACvBA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACjCA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F,wEAAuE;;;AAGvE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2GAA0G;AAC1G;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,6GAA4G;;AAE5G;AACA;;AAEA;AACA;AACA,6GAA4G;;AAE5G;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,6GAA4G;;AAE5G;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,G;;;;;;;AChFA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA,gBAAe;AACf,G;;;;;;ACtCA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F,mCAAkC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAEjM;AACA,yEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,MAAK;AACL;;AAEA;AACA,oMAAmM;;AAEnM;;AAEA;AACA,oDAAmD;;AAEnD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA,6EAA4E;AAC5E;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;ACnLA;;AAEA;AACA;AACA,EAAC;;AAED,mCAAkC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAEjM;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oEAAmE,aAAa;AAChF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,wBAAuB;;AAEvB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,G;;;;;;AC5DA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,iKAAgK;AAChK;AACA;;AAEA,qC;;;;;;;ACxBA;;AAEA;AACA;AACA,EAAC;;AAED,oDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG,IAAI;AACP;;AAEA;AACA,yEAAwE;;AAExE;AACA,gBAAe;AACf,IAAG;AACH,gBAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0DAAyD,SAAS,eAAe;AACjF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAoC,oBAAoB,uBAAuB;AAC/E;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yDAAwD;AACxD;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;;AAGA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uC;;;;;;;AC3IA;;AAEA;AACA;AACA,EAAC;;AAED,oDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA,2EAA0E;;AAE1E;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yBAAwB;AACxB;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yFAAwF,aAAa;AACrG;AACA;;AAEA;AACA;;AAEA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA,+B;;;;;;AC9GA;;AAEA;AACA;AACA,EAAC;;AAED,oDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA0E;;AAE1E;AACA;AACA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAwB;AACxB;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yFAAwF,aAAa;AACrG;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA,8B;;;;;;AC1HA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA,KAAI;;AAEJ;AACA;;AAEA;AACA,GAAE;AACF;AACA,GAAE;AACF;;;;;;;ACjGA;AACA;AACA;AACA;AACA,GAAE;AACF;;;;;;;ACLA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,mCAAkC;AAClC;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AClFO,KAAM,8CAAmB,yBAAzB;AACA,KAAM,sBAAO,aAAb;AACA,KAAM,4BAAU,gBAAhB;AACA,KAAM,kBAAK,WAAX;AACA,KAAM,4BAAU,gBAAhB;AACA,KAAM,kCAAa,mBAAnB,C;;;;;;;;;;;;ACLP;;;;;;mBAEe,kBAAU;AACvB,OAAM,kBAAkB,OAAO,IAAP,CAAY,MAAZ,EAAoB,GAApB,CAAwB;AAAA,YAAU;AACxD,mBADwD;AAExD,gBAAS,yBAAe,KAAf,CAF+C;AAGxD,eAAQ,OAAO,KAAP;AAHgD,MAAV;AAAA,IAAxB,CAAxB;;AAMA,UAAO,uBAAe;;AAEpB,SAAM,QAAQ,YAAY,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAd,C;;;AAGA,UAAK,IAAM,GAAX,IAAkB,eAAlB,EAAmC;AACjC,WAAI,gBAAgB,cAAhB,CAA+B,GAA/B,CAAJ,EAAyC;AACvC,aAAM,cAAc,gBAAgB,GAAhB,CAApB;AACA,aAAM,QAAQ,YAAY,OAAZ,CAAoB,KAApB,CAA0B,KAA1B,CAAd;;AAEA,aAAI,KAAJ,EAAW;;AAET,kBAAO;AACL,oBAAO,YAAY,KADd;AAEL,qBAAQ,KAFH;AAGL,qBAAQ,YAAY;AAHf,YAAP;AAKD;AACF;AACF;;AAED,YAAO,IAAP;AACD,IAtBD;AAuBD,E;;;;;;AChCD;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA,EAAC;AACD;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACnbD;;;;;;;;;;;;;;;;ACAA;;mBAEe,YAAwB;AAAA,OAAvB,KAAuB,yDAAf,EAAe;AAAA,OAAX,MAAW;;AACrC,OAAI,OAAO,IAAP,kCAAJ,EAAsC;;AAEpC,SAAI,SAAS,MAAM,QAAN,KAAmB,OAAO,OAAP,CAAe,QAA/C,EAAyD;AACvD,cAAO,KAAP;AACD;;AAED,yBACK,OAAO,OADZ;AAEE,iBAAU,MAAM;AAFlB;AAID;AACD,UAAO,KAAP;AACD,E;;;;;;;;;;;;;;ACfD;;;;;;mBAEe;AAAA,4BACb,QADa;AAAA,OACb,QADa,iCACF,GADE;AAAA,yBAEb,KAFa;AAAA,OAEb,KAFa,8BAEL,EAFK;AAAA,OAGb,MAHa,QAGb,MAHa;AAAA,OAIb,OAJa,QAIb,OAJa;AAAA,uBAMV,QAAQ,cAAR,CAAuB;AACxB,uBADwB;AAExB;AAFwB,IAAvB,CANU,EAUV,6BAAc,MAAd,EAAsB,QAAtB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","file":"redux-little-router.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReduxLittleRouter\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"ReduxLittleRouter\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_30__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 4b63a2177b62e015d4e7\n **/","import createStoreWithRouter, {\n locationDidChange,\n initializeCurrentLocation\n} from './store-enhancer';\n\nimport provideRouter from './provider';\nimport { Link, PersistentQueryLink } from './link';\nimport Fragment from './fragment';\n\nimport routerReducer from './reducer';\nimport createMatcher from './create-matcher';\n\nimport {\n LOCATION_CHANGED,\n PUSH,\n REPLACE,\n GO,\n GO_FORWARD,\n GO_BACK\n} from './action-types';\n\nexport {\n // High-level Redux API\n createStoreWithRouter,\n initializeCurrentLocation,\n\n // React API\n provideRouter,\n Link,\n PersistentQueryLink,\n Fragment,\n\n // Public action types\n LOCATION_CHANGED,\n PUSH,\n REPLACE,\n GO,\n GO_FORWARD,\n GO_BACK,\n\n // Low-level Redux utilities\n routerReducer,\n locationDidChange,\n createMatcher\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./index.js\n **/","import createBrowserHistory from 'history/lib/createBrowserHistory';\nimport createMemoryHistory from 'history/lib/createMemoryHistory';\nimport useBasename from 'history/lib/useBasename';\nimport useQueries from 'history/lib/useQueries';\n\nimport {\n LOCATION_CHANGED,\n PUSH, REPLACE, GO,\n GO_BACK, GO_FORWARD\n} from './action-types';\n\nimport { default as matcherFactory } from './create-matcher';\nimport routerReducer from './reducer';\nimport initialRouterState from './initial-router-state';\n\nexport const locationDidChange = ({ location, matchRoute }) => {\n // Extract the pathname so that we don't match against the basename.\n // This avoids requiring basename-hardcoded routes.\n const { pathname } = location;\n\n return {\n type: LOCATION_CHANGED,\n payload: {\n ...location,\n ...matchRoute(pathname)\n }\n };\n};\n\nexport const initializeCurrentLocation = location => ({\n type: LOCATION_CHANGED,\n payload: location\n});\n\nconst resolveHistory = ({\n basename,\n forServerRender\n}) => {\n const historyFactory = forServerRender\n ? createMemoryHistory\n : createBrowserHistory;\n\n return useBasename(useQueries(historyFactory))({\n basename\n });\n};\n\nexport default ({\n routes,\n pathname,\n query,\n basename = '/',\n forServerRender = false,\n createMatcher = matcherFactory,\n history: userHistory\n}) => {\n const history = userHistory || resolveHistory({\n basename, forServerRender\n });\n\n return createStore => (reducer, initialState, enhancer) => {\n const enhancedReducer = (state, action) => {\n const vanillaState = {...state};\n delete vanillaState.router;\n\n const newState = reducer(vanillaState, action);\n\n // Support redux-loop\n if (Array.isArray(newState)) {\n const nextState = newState[0]; // eslint-disable-line no-magic-numbers\n const nextEffects = newState[1]; // eslint-disable-line no-magic-numbers\n return [\n {\n ...nextState,\n router: routerReducer(state.router, action)\n },\n nextEffects\n ];\n }\n\n return {\n ...reducer(vanillaState, action),\n router: routerReducer(state.router, action)\n };\n };\n\n const store = createStore(\n enhancedReducer,\n pathname || query ? {\n ...initialState,\n router: initialRouterState({\n pathname, query, routes, history\n }\n )} : initialState,\n enhancer\n );\n\n const matchRoute = createMatcher(routes);\n history.listen(location => {\n if (location) {\n store.dispatch(locationDidChange({\n location, matchRoute\n }));\n }\n });\n\n const dispatch = action => {\n switch (action.type) {\n case PUSH:\n history.push(action.payload);\n return null;\n case REPLACE:\n history.replace(action.payload);\n return null;\n case GO:\n history.go(action.payload);\n return null;\n case GO_BACK:\n history.goBack();\n return null;\n case GO_FORWARD:\n history.goForward();\n return null;\n default:\n // We return the result of dispatch here\n // to retain compatibility with enhancers\n // that return a promise from dispatch.\n return store.dispatch(action);\n }\n };\n\n return {...store, dispatch, history, matchRoute};\n };\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./store-enhancer.js\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nvar BrowserProtocol = _interopRequireWildcard(_BrowserProtocol);\n\nvar _RefreshProtocol = require('./RefreshProtocol');\n\nvar RefreshProtocol = _interopRequireWildcard(_RefreshProtocol);\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve clean URLs. You can force this\n * behavior using { forceRefresh: true } in options.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Browser history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\n var useRefresh = options.forceRefresh || !(0, _DOMUtils.supportsHistory)();\n var Protocol = useRefresh ? RefreshProtocol : BrowserProtocol;\n\n var getUserConfirmation = Protocol.getUserConfirmation;\n var getCurrentLocation = Protocol.getCurrentLocation;\n var pushLocation = Protocol.pushLocation;\n var replaceLocation = Protocol.replaceLocation;\n var go = Protocol.go;\n\n\n var history = (0, _createHistory2.default)(_extends({\n getUserConfirmation: getUserConfirmation }, options, {\n getCurrentLocation: getCurrentLocation,\n pushLocation: pushLocation,\n replaceLocation: replaceLocation,\n go: go\n }));\n\n var listenerCount = 0,\n stopListener = void 0;\n\n var startListener = function startListener(listener, before) {\n if (++listenerCount === 1) stopListener = BrowserProtocol.startListener(history.transitionTo);\n\n var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopListener();\n };\n };\n\n var listenBefore = function listenBefore(listener) {\n return startListener(listener, true);\n };\n\n var listen = function listen(listener) {\n return startListener(listener, false);\n };\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen\n });\n};\n\nexports.default = createBrowserHistory;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/createBrowserHistory.js\n ** module id = 2\n ** module chunks = 0\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/process/browser.js\n ** module id = 3\n ** module chunks = 0\n **/","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/invariant/browser.js\n ** module id = 4\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/ExecutionEnvironment.js\n ** module id = 5\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.go = exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getUserConfirmation = exports.getCurrentLocation = undefined;\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _PathUtils = require('./PathUtils');\n\n/* eslint-disable no-alert */\n\n\nvar PopStateEvent = 'popstate';\n\nvar _createLocation = function _createLocation(historyState) {\n var key = historyState && historyState.key;\n\n return (0, _LocationUtils.createLocation)({\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash,\n state: key ? (0, _DOMStateStorage.readState)(key) : undefined\n }, undefined, key);\n};\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n var historyState = void 0;\n try {\n historyState = window.history.state || {};\n } catch (error) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/mjackson/history/pull/289\n historyState = {};\n }\n\n return _createLocation(historyState);\n};\n\nvar getUserConfirmation = exports.getUserConfirmation = function getUserConfirmation(message, callback) {\n return callback(window.confirm(message));\n};\n\nvar startListener = exports.startListener = function startListener(listener) {\n var handlePopState = function handlePopState(event) {\n if (event.state !== undefined) // Ignore extraneous popstate events in WebKit\n listener(_createLocation(event.state));\n };\n\n (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);\n\n return function () {\n return (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);\n };\n};\n\nvar updateLocation = function updateLocation(location, updateState) {\n var state = location.state;\n var key = location.key;\n\n\n if (state !== undefined) (0, _DOMStateStorage.saveState)(key, state);\n\n updateState({ key: key }, (0, _PathUtils.createPath)(location));\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location) {\n return updateLocation(location, function (state, path) {\n return window.history.pushState(state, null, path);\n });\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n return updateLocation(location, function (state, path) {\n return window.history.replaceState(state, null, path);\n });\n};\n\nvar go = exports.go = function go(n) {\n if (n) window.history.go(n);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/BrowserProtocol.js\n ** module id = 6\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.locationsAreEqual = exports.statesAreEqual = exports.createLocation = exports.createQuery = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _Actions = require('./Actions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createQuery = exports.createQuery = function createQuery(props) {\n return _extends(Object.create(null), props);\n};\n\nvar createLocation = exports.createLocation = function createLocation() {\n var input = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n var object = typeof input === 'string' ? (0, _PathUtils.parsePath)(input) : input;\n\n var pathname = object.pathname || '/';\n var search = object.search || '';\n var hash = object.hash || '';\n var state = object.state;\n\n return {\n pathname: pathname,\n search: search,\n hash: hash,\n state: state,\n action: action,\n key: key\n };\n};\n\nvar isDate = function isDate(object) {\n return Object.prototype.toString.call(object) === '[object Date]';\n};\n\nvar statesAreEqual = exports.statesAreEqual = function statesAreEqual(a, b) {\n if (a === b) return true;\n\n var typeofA = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var typeofB = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (typeofA !== typeofB) return false;\n\n !(typeofA !== 'function') ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store functions in location state') : (0, _invariant2.default)(false) : void 0;\n\n // Not the same object, but same type.\n if (typeofA === 'object') {\n !!(isDate(a) && isDate(b)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store Date objects in location state') : (0, _invariant2.default)(false) : void 0;\n\n if (!Array.isArray(a)) return Object.keys(a).every(function (key) {\n return statesAreEqual(a[key], b[key]);\n });\n\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return statesAreEqual(item, b[index]);\n });\n }\n\n // All other serializable types (string, number, boolean)\n // should be strict equal.\n return false;\n};\n\nvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n return a.key === b.key &&\n // a.action === b.action && // Different action !== location change.\n a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && statesAreEqual(a.state, b.state);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/LocationUtils.js\n ** module id = 7\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createPath = exports.parsePath = exports.getQueryStringValueFromPath = exports.stripQueryStringValueFromPath = exports.addQueryStringValueToPath = exports.isAbsolutePath = undefined;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isAbsolutePath = exports.isAbsolutePath = function isAbsolutePath(path) {\n return typeof path === 'string' && path.charAt(0) === '/';\n};\n\nvar addQueryStringValueToPath = exports.addQueryStringValueToPath = function addQueryStringValueToPath(path, key, value) {\n var _parsePath = parsePath(path);\n\n var pathname = _parsePath.pathname;\n var search = _parsePath.search;\n var hash = _parsePath.hash;\n\n\n return createPath({\n pathname: pathname,\n search: search + (search.indexOf('?') === -1 ? '?' : '&') + key + '=' + value,\n hash: hash\n });\n};\n\nvar stripQueryStringValueFromPath = exports.stripQueryStringValueFromPath = function stripQueryStringValueFromPath(path, key) {\n var _parsePath2 = parsePath(path);\n\n var pathname = _parsePath2.pathname;\n var search = _parsePath2.search;\n var hash = _parsePath2.hash;\n\n\n return createPath({\n pathname: pathname,\n search: search.replace(new RegExp('([?&])' + key + '=[a-zA-Z0-9]+(&?)'), function (match, prefix, suffix) {\n return prefix === '?' ? prefix : suffix;\n }),\n hash: hash\n });\n};\n\nvar getQueryStringValueFromPath = exports.getQueryStringValueFromPath = function getQueryStringValueFromPath(path, key) {\n var _parsePath3 = parsePath(path);\n\n var search = _parsePath3.search;\n\n var match = search.match(new RegExp('[?&]' + key + '=([a-zA-Z0-9]+)'));\n return match && match[1];\n};\n\nvar extractPath = function extractPath(string) {\n var match = string.match(/^(https?:)?\\/\\/[^\\/]*/);\n return match == null ? string : string.substring(match[0].length);\n};\n\nvar parsePath = exports.parsePath = function parsePath(path) {\n var pathname = extractPath(path);\n var search = '';\n var hash = '';\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(path === pathname, 'A path must be pathname + search + hash only, not a full URL like \"%s\"', path) : void 0;\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substring(hashIndex);\n pathname = pathname.substring(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substring(searchIndex);\n pathname = pathname.substring(0, searchIndex);\n }\n\n if (pathname === '') pathname = '/';\n\n return {\n pathname: pathname,\n search: search,\n hash: hash\n };\n};\n\nvar createPath = exports.createPath = function createPath(location) {\n if (location == null || typeof location === 'string') return location;\n\n var basename = location.basename;\n var pathname = location.pathname;\n var search = location.search;\n var hash = location.hash;\n\n var path = (basename || '') + pathname;\n\n if (search && search !== '?') path += search;\n\n if (hash) path += hash;\n\n return path;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/PathUtils.js\n ** module id = 8\n ** module chunks = 0\n **/","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/warning/browser.js\n ** module id = 9\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * Indicates that navigation was caused by a call to history.push.\n */\nvar PUSH = exports.PUSH = 'PUSH';\n\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = exports.REPLACE = 'REPLACE';\n\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = exports.POP = 'POP';\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/Actions.js\n ** module id = 10\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar addEventListener = exports.addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nvar removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nvar supportsHistory = exports.supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nvar supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/DOMUtils.js\n ** module id = 11\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.readState = exports.saveState = undefined;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar QuotaExceededErrors = ['QuotaExceededError', 'QUOTA_EXCEEDED_ERR']; /* eslint-disable no-empty */\n\n\nvar SecurityError = 'SecurityError';\nvar KeyPrefix = '@@History/';\n\nvar createKey = function createKey(key) {\n return KeyPrefix + key;\n};\n\nvar saveState = exports.saveState = function saveState(key, state) {\n if (!window.sessionStorage) {\n // Session storage is not available or hidden.\n // sessionStorage is undefined in Internet Explorer when served via file protocol.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available') : void 0;\n return;\n }\n\n try {\n if (state == null) {\n window.sessionStorage.removeItem(createKey(key));\n } else {\n window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n }\n } catch (error) {\n if (error.name === SecurityError) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available due to security settings') : void 0;\n\n return;\n }\n\n if (QuotaExceededErrors.indexOf(error.name) >= 0 && window.sessionStorage.length === 0) {\n // Safari \"private mode\" throws QuotaExceededError.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : void 0;\n\n return;\n }\n\n throw error;\n }\n};\n\nvar readState = exports.readState = function readState(key) {\n var json = void 0;\n try {\n json = window.sessionStorage.getItem(createKey(key));\n } catch (error) {\n if (error.name === SecurityError) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to read state; sessionStorage is not available due to security settings') : void 0;\n\n return undefined;\n }\n }\n\n if (json) {\n try {\n return JSON.parse(json);\n } catch (error) {\n // Ignore invalid JSON.\n }\n }\n\n return undefined;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/DOMStateStorage.js\n ** module id = 12\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.replaceLocation = exports.pushLocation = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nObject.defineProperty(exports, 'getUserConfirmation', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.getUserConfirmation;\n }\n});\nObject.defineProperty(exports, 'go', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.go;\n }\n});\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n return (0, _LocationUtils.createLocation)(window.location);\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location) {\n window.location.href = (0, _PathUtils.createPath)(location);\n return false; // Don't update location\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n window.location.replace((0, _PathUtils.createPath)(location));\n return false; // Don't update location\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/RefreshProtocol.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _Actions = require('./Actions');\n\nvar _LocationUtils = require('./LocationUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar createHistory = function createHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var getCurrentLocation = options.getCurrentLocation;\n var getUserConfirmation = options.getUserConfirmation;\n var pushLocation = options.pushLocation;\n var replaceLocation = options.replaceLocation;\n var go = options.go;\n var keyLength = options.keyLength;\n\n\n var currentLocation = void 0;\n var pendingLocation = void 0;\n var beforeListeners = [];\n var listeners = [];\n var allKeys = [];\n\n var getCurrentIndex = function getCurrentIndex() {\n if (pendingLocation && pendingLocation.action === _Actions.POP) return allKeys.indexOf(pendingLocation.key);\n\n if (currentLocation) return allKeys.indexOf(currentLocation.key);\n\n return -1;\n };\n\n var updateLocation = function updateLocation(nextLocation) {\n currentLocation = nextLocation;\n\n var currentIndex = getCurrentIndex();\n\n if (currentLocation.action === _Actions.PUSH) {\n allKeys = [].concat(_toConsumableArray(allKeys.slice(0, currentIndex + 1)), [currentLocation.key]);\n } else if (currentLocation.action === _Actions.REPLACE) {\n allKeys[currentIndex] = currentLocation.key;\n }\n\n listeners.forEach(function (listener) {\n return listener(currentLocation);\n });\n };\n\n var listenBefore = function listenBefore(listener) {\n beforeListeners.push(listener);\n\n return function () {\n return beforeListeners = beforeListeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var listen = function listen(listener) {\n listeners.push(listener);\n\n return function () {\n return listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, callback) {\n (0, _AsyncUtils.loopAsync)(beforeListeners.length, function (index, next, done) {\n (0, _runTransitionHook2.default)(beforeListeners[index], location, function (result) {\n return result != null ? done(result) : next();\n });\n }, function (message) {\n if (getUserConfirmation && typeof message === 'string') {\n getUserConfirmation(message, function (ok) {\n return callback(ok !== false);\n });\n } else {\n callback(message !== false);\n }\n });\n };\n\n var transitionTo = function transitionTo(nextLocation) {\n if (currentLocation && (0, _LocationUtils.locationsAreEqual)(currentLocation, nextLocation) || pendingLocation && (0, _LocationUtils.locationsAreEqual)(pendingLocation, nextLocation)) return; // Nothing to do\n\n pendingLocation = nextLocation;\n\n confirmTransitionTo(nextLocation, function (ok) {\n if (pendingLocation !== nextLocation) return; // Transition was interrupted during confirmation\n\n pendingLocation = null;\n\n if (ok) {\n // Treat PUSH to same path like REPLACE to be consistent with browsers\n if (nextLocation.action === _Actions.PUSH) {\n var prevPath = (0, _PathUtils.createPath)(currentLocation);\n var nextPath = (0, _PathUtils.createPath)(nextLocation);\n\n if (nextPath === prevPath && (0, _LocationUtils.statesAreEqual)(currentLocation.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;\n }\n\n if (nextLocation.action === _Actions.POP) {\n updateLocation(nextLocation);\n } else if (nextLocation.action === _Actions.PUSH) {\n if (pushLocation(nextLocation) !== false) updateLocation(nextLocation);\n } else if (nextLocation.action === _Actions.REPLACE) {\n if (replaceLocation(nextLocation) !== false) updateLocation(nextLocation);\n }\n } else if (currentLocation && nextLocation.action === _Actions.POP) {\n var prevIndex = allKeys.indexOf(currentLocation.key);\n var nextIndex = allKeys.indexOf(nextLocation.key);\n\n if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL\n }\n });\n };\n\n var push = function push(input) {\n return transitionTo(createLocation(input, _Actions.PUSH));\n };\n\n var replace = function replace(input) {\n return transitionTo(createLocation(input, _Actions.REPLACE));\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength || 6);\n };\n\n var createHref = function createHref(location) {\n return (0, _PathUtils.createPath)(location);\n };\n\n var createLocation = function createLocation(location, action) {\n var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n return (0, _LocationUtils.createLocation)(location, action, key);\n };\n\n return {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n transitionTo: transitionTo,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n createKey: createKey,\n createPath: _PathUtils.createPath,\n createHref: createHref,\n createLocation: createLocation\n };\n};\n\nexports.default = createHistory;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/createHistory.js\n ** module id = 14\n ** module chunks = 0\n **/","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar loopAsync = exports.loopAsync = function loopAsync(turns, work, callback) {\n var currentTurn = 0,\n isDone = false;\n var isSync = false,\n hasNext = false,\n doneArgs = void 0;\n\n var done = function done() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n isDone = true;\n\n if (isSync) {\n // Iterate instead of recursing if possible.\n doneArgs = args;\n return;\n }\n\n callback.apply(undefined, args);\n };\n\n var next = function next() {\n if (isDone) return;\n\n hasNext = true;\n\n if (isSync) return; // Iterate instead of recursing if possible.\n\n isSync = true;\n\n while (!isDone && currentTurn < turns && hasNext) {\n hasNext = false;\n work(currentTurn++, next, done);\n }\n\n isSync = false;\n\n if (isDone) {\n // This means the loop finished synchronously.\n callback.apply(undefined, _toConsumableArray(doneArgs));\n return;\n }\n\n if (currentTurn >= turns && hasNext) {\n isDone = true;\n callback();\n }\n };\n\n next();\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/AsyncUtils.js\n ** module id = 15\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar runTransitionHook = function runTransitionHook(hook, location, callback) {\n var result = hook(location, callback);\n\n if (hook.length < 2) {\n // Assume the hook runs synchronously and automatically\n // call the callback with the return value.\n callback(result);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(result === undefined, 'You should not \"return\" in a transition hook with a callback argument; ' + 'call the callback instead') : void 0;\n }\n};\n\nexports.default = runTransitionHook;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/runTransitionHook.js\n ** module id = 16\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nvar _Actions = require('./Actions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createStateStorage = function createStateStorage(entries) {\n return entries.filter(function (entry) {\n return entry.state;\n }).reduce(function (memo, entry) {\n memo[entry.key] = entry.state;\n return memo;\n }, {});\n};\n\nvar createMemoryHistory = function createMemoryHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n if (Array.isArray(options)) {\n options = { entries: options };\n } else if (typeof options === 'string') {\n options = { entries: [options] };\n }\n\n var getCurrentLocation = function getCurrentLocation() {\n var entry = entries[current];\n var path = (0, _PathUtils.createPath)(entry);\n\n var key = void 0,\n state = void 0;\n if (entry.key) {\n key = entry.key;\n state = readState(key);\n }\n\n var init = (0, _PathUtils.parsePath)(path);\n\n return (0, _LocationUtils.createLocation)(_extends({}, init, { state: state }), undefined, key);\n };\n\n var canGo = function canGo(n) {\n var index = current + n;\n return index >= 0 && index < entries.length;\n };\n\n var go = function go(n) {\n if (!n) return;\n\n if (!canGo(n)) {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Cannot go(%s) there is not enough history', n) : void 0;\n\n return;\n }\n\n current += n;\n var currentLocation = getCurrentLocation();\n\n // Change action to POP\n history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n };\n\n var pushLocation = function pushLocation(location) {\n current += 1;\n\n if (current < entries.length) entries.splice(current);\n\n entries.push(location);\n\n saveState(location.key, location.state);\n };\n\n var replaceLocation = function replaceLocation(location) {\n entries[current] = location;\n saveState(location.key, location.state);\n };\n\n var history = (0, _createHistory2.default)(_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n pushLocation: pushLocation,\n replaceLocation: replaceLocation,\n go: go\n }));\n\n var _options = options;\n var entries = _options.entries;\n var current = _options.current;\n\n\n if (typeof entries === 'string') {\n entries = [entries];\n } else if (!Array.isArray(entries)) {\n entries = ['/'];\n }\n\n entries = entries.map(function (entry) {\n return (0, _LocationUtils.createLocation)(entry);\n });\n\n if (current == null) {\n current = entries.length - 1;\n } else {\n !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : (0, _invariant2.default)(false) : void 0;\n }\n\n var storage = createStateStorage(entries);\n\n var saveState = function saveState(key, state) {\n return storage[key] = state;\n };\n\n var readState = function readState(key) {\n return storage[key];\n };\n\n return history;\n};\n\nexports.default = createMemoryHistory;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/createMemoryHistory.js\n ** module id = 17\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar useBasename = function useBasename(createHistory) {\n return function () {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var history = createHistory(options);\n var basename = options.basename;\n\n\n var addBasename = function addBasename(location) {\n if (!location) return location;\n\n if (basename && location.basename == null) {\n if (location.pathname.indexOf(basename) === 0) {\n location.pathname = location.pathname.substring(basename.length);\n location.basename = basename;\n\n if (location.pathname === '') location.pathname = '/';\n } else {\n location.basename = '';\n }\n }\n\n return location;\n };\n\n var prependBasename = function prependBasename(location) {\n if (!basename) return location;\n\n var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n var pname = object.pathname;\n var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n var pathname = normalizedBasename + normalizedPathname;\n\n return _extends({}, location, {\n pathname: pathname\n });\n };\n\n // Override all read methods with basename-aware versions.\n var getCurrentLocation = function getCurrentLocation() {\n return addBasename(history.getCurrentLocation());\n };\n\n var listenBefore = function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n return (0, _runTransitionHook2.default)(hook, addBasename(location), callback);\n });\n };\n\n var listen = function listen(listener) {\n return history.listen(function (location) {\n return listener(addBasename(location));\n });\n };\n\n // Override all write methods with basename-aware versions.\n var push = function push(location) {\n return history.push(prependBasename(location));\n };\n\n var replace = function replace(location) {\n return history.replace(prependBasename(location));\n };\n\n var createPath = function createPath(location) {\n return history.createPath(prependBasename(location));\n };\n\n var createHref = function createHref(location) {\n return history.createHref(prependBasename(location));\n };\n\n var createLocation = function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));\n };\n\n return _extends({}, history, {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation\n });\n };\n};\n\nexports.default = useBasename;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/useBasename.js\n ** module id = 18\n ** module chunks = 0\n **/","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _queryString = require('query-string');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultStringifyQuery = function defaultStringifyQuery(query) {\n return (0, _queryString.stringify)(query).replace(/%20/g, '+');\n};\n\nvar defaultParseQueryString = _queryString.parse;\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know how to handle URL queries.\n */\nvar useQueries = function useQueries(createHistory) {\n return function () {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var history = createHistory(options);\n var stringifyQuery = options.stringifyQuery;\n var parseQueryString = options.parseQueryString;\n\n\n if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\n if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\n var decodeQuery = function decodeQuery(location) {\n if (!location) return location;\n\n if (location.query == null) location.query = parseQueryString(location.search.substring(1));\n\n return location;\n };\n\n var encodeQuery = function encodeQuery(location, query) {\n if (query == null) return location;\n\n var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n var queryString = stringifyQuery(query);\n var search = queryString ? '?' + queryString : '';\n\n return _extends({}, object, {\n search: search\n });\n };\n\n // Override all read methods with query-aware versions.\n var getCurrentLocation = function getCurrentLocation() {\n return decodeQuery(history.getCurrentLocation());\n };\n\n var listenBefore = function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n return (0, _runTransitionHook2.default)(hook, decodeQuery(location), callback);\n });\n };\n\n var listen = function listen(listener) {\n return history.listen(function (location) {\n return listener(decodeQuery(location));\n });\n };\n\n // Override all write methods with query-aware versions.\n var push = function push(location) {\n return history.push(encodeQuery(location, location.query));\n };\n\n var replace = function replace(location) {\n return history.replace(encodeQuery(location, location.query));\n };\n\n var createPath = function createPath(location) {\n return history.createPath(encodeQuery(location, location.query));\n };\n\n var createHref = function createHref(location) {\n return history.createHref(encodeQuery(location, location.query));\n };\n\n var createLocation = function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var newLocation = history.createLocation.apply(history, [encodeQuery(location, location.query)].concat(args));\n\n if (location.query) newLocation.query = (0, _LocationUtils.createQuery)(location.query);\n\n return decodeQuery(newLocation);\n };\n\n return _extends({}, history, {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation\n });\n };\n};\n\nexports.default = useQueries;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/history/lib/useQueries.js\n ** module id = 19\n ** module chunks = 0\n **/","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str) {\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\tkey = decodeURIComponent(key);\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tif (ret[key] === undefined) {\n\t\t\tret[key] = val;\n\t\t} else if (Array.isArray(ret[key])) {\n\t\t\tret[key].push(val);\n\t\t} else {\n\t\t\tret[key] = [ret[key], val];\n\t\t}\n\t});\n\n\treturn ret;\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn key;\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().sort().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (val2 === null) {\n\t\t\t\t\tresult.push(encode(key, opts));\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(encode(key, opts) + '=' + encode(val2, opts));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/query-string/index.js\n ** module id = 20\n ** module chunks = 0\n **/","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/strict-uri-encode/index.js\n ** module id = 21\n ** module chunks = 0\n **/","'use strict';\n/* eslint-disable no-unused-vars */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (e) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/object-assign/index.js\n ** module id = 22\n ** module chunks = 0\n **/","export const LOCATION_CHANGED = 'ROUTER_LOCATION_CHANGED';\nexport const PUSH = 'ROUTER_PUSH';\nexport const REPLACE = 'ROUTER_REPLACE';\nexport const GO = 'ROUTER_GO';\nexport const GO_BACK = 'ROUTER_GO_BACK';\nexport const GO_FORWARD = 'ROUTER_GO_FORWARD';\n\n\n\n/** WEBPACK FOOTER **\n ** ./action-types.js\n **/","import UrlPattern from 'url-pattern';\n\nexport default routes => {\n const routeDictionary = Object.keys(routes).map(route => ({\n route,\n pattern: new UrlPattern(route),\n result: routes[route]\n }));\n\n return incomingUrl => {\n // Discard query strings\n const route = incomingUrl.split('?')[0]; // eslint-disable-line no-magic-numbers\n\n // Find the route that matches the URL\n for (const key in routeDictionary) {\n if (routeDictionary.hasOwnProperty(key)) {\n const storedRoute = routeDictionary[key];\n const match = storedRoute.pattern.match(route);\n\n if (match) {\n // Return the matched params and user-defined result object\n return {\n route: storedRoute.route,\n params: match,\n result: storedRoute.result\n };\n }\n }\n }\n\n return null;\n };\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./create-matcher.js\n **/","// Generated by CoffeeScript 1.10.0\nvar slice = [].slice;\n\n(function(root, factory) {\n if (('function' === typeof define) && (define.amd != null)) {\n return define([], factory);\n } else if (typeof exports !== \"undefined\" && exports !== null) {\n return module.exports = factory();\n } else {\n return root.UrlPattern = factory();\n }\n})(this, function() {\n var P, UrlPattern, astNodeContainsSegmentsForProvidedParams, astNodeToNames, astNodeToRegexString, baseAstNodeToRegexString, concatMap, defaultOptions, escapeForRegex, getParam, keysAndValuesToObject, newParser, regexGroupCount, stringConcatMap, stringify;\n escapeForRegex = function(string) {\n return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n };\n concatMap = function(array, f) {\n var i, length, results;\n results = [];\n i = -1;\n length = array.length;\n while (++i < length) {\n results = results.concat(f(array[i]));\n }\n return results;\n };\n stringConcatMap = function(array, f) {\n var i, length, result;\n result = '';\n i = -1;\n length = array.length;\n while (++i < length) {\n result += f(array[i]);\n }\n return result;\n };\n regexGroupCount = function(regex) {\n return (new RegExp(regex.toString() + '|')).exec('').length - 1;\n };\n keysAndValuesToObject = function(keys, values) {\n var i, key, length, object, value;\n object = {};\n i = -1;\n length = keys.length;\n while (++i < length) {\n key = keys[i];\n value = values[i];\n if (value == null) {\n continue;\n }\n if (object[key] != null) {\n if (!Array.isArray(object[key])) {\n object[key] = [object[key]];\n }\n object[key].push(value);\n } else {\n object[key] = value;\n }\n }\n return object;\n };\n P = {};\n P.Result = function(value, rest) {\n this.value = value;\n this.rest = rest;\n };\n P.Tagged = function(tag, value) {\n this.tag = tag;\n this.value = value;\n };\n P.tag = function(tag, parser) {\n return function(input) {\n var result, tagged;\n result = parser(input);\n if (result == null) {\n return;\n }\n tagged = new P.Tagged(tag, result.value);\n return new P.Result(tagged, result.rest);\n };\n };\n P.regex = function(regex) {\n return function(input) {\n var matches, result;\n matches = regex.exec(input);\n if (matches == null) {\n return;\n }\n result = matches[0];\n return new P.Result(result, input.slice(result.length));\n };\n };\n P.sequence = function() {\n var parsers;\n parsers = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return function(input) {\n var i, length, parser, rest, result, values;\n i = -1;\n length = parsers.length;\n values = [];\n rest = input;\n while (++i < length) {\n parser = parsers[i];\n result = parser(rest);\n if (result == null) {\n return;\n }\n values.push(result.value);\n rest = result.rest;\n }\n return new P.Result(values, rest);\n };\n };\n P.pick = function() {\n var indexes, parsers;\n indexes = arguments[0], parsers = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n return function(input) {\n var array, result;\n result = P.sequence.apply(P, parsers)(input);\n if (result == null) {\n return;\n }\n array = result.value;\n result.value = array[indexes];\n return result;\n };\n };\n P.string = function(string) {\n var length;\n length = string.length;\n return function(input) {\n if (input.slice(0, length) === string) {\n return new P.Result(string, input.slice(length));\n }\n };\n };\n P.lazy = function(fn) {\n var cached;\n cached = null;\n return function(input) {\n if (cached == null) {\n cached = fn();\n }\n return cached(input);\n };\n };\n P.baseMany = function(parser, end, stringResult, atLeastOneResultRequired, input) {\n var endResult, parserResult, rest, results;\n rest = input;\n results = stringResult ? '' : [];\n while (true) {\n if (end != null) {\n endResult = end(rest);\n if (endResult != null) {\n break;\n }\n }\n parserResult = parser(rest);\n if (parserResult == null) {\n break;\n }\n if (stringResult) {\n results += parserResult.value;\n } else {\n results.push(parserResult.value);\n }\n rest = parserResult.rest;\n }\n if (atLeastOneResultRequired && results.length === 0) {\n return;\n }\n return new P.Result(results, rest);\n };\n P.many1 = function(parser) {\n return function(input) {\n return P.baseMany(parser, null, false, true, input);\n };\n };\n P.concatMany1Till = function(parser, end) {\n return function(input) {\n return P.baseMany(parser, end, true, true, input);\n };\n };\n P.firstChoice = function() {\n var parsers;\n parsers = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return function(input) {\n var i, length, parser, result;\n i = -1;\n length = parsers.length;\n while (++i < length) {\n parser = parsers[i];\n result = parser(input);\n if (result != null) {\n return result;\n }\n }\n };\n };\n newParser = function(options) {\n var U;\n U = {};\n U.wildcard = P.tag('wildcard', P.string(options.wildcardChar));\n U.optional = P.tag('optional', P.pick(1, P.string(options.optionalSegmentStartChar), P.lazy(function() {\n return U.pattern;\n }), P.string(options.optionalSegmentEndChar)));\n U.name = P.regex(new RegExp(\"^[\" + options.segmentNameCharset + \"]+\"));\n U.named = P.tag('named', P.pick(1, P.string(options.segmentNameStartChar), P.lazy(function() {\n return U.name;\n })));\n U.escapedChar = P.pick(1, P.string(options.escapeChar), P.regex(/^./));\n U[\"static\"] = P.tag('static', P.concatMany1Till(P.firstChoice(P.lazy(function() {\n return U.escapedChar;\n }), P.regex(/^./)), P.firstChoice(P.string(options.segmentNameStartChar), P.string(options.optionalSegmentStartChar), P.string(options.optionalSegmentEndChar), U.wildcard)));\n U.token = P.lazy(function() {\n return P.firstChoice(U.wildcard, U.optional, U.named, U[\"static\"]);\n });\n U.pattern = P.many1(P.lazy(function() {\n return U.token;\n }));\n return U;\n };\n defaultOptions = {\n escapeChar: '\\\\',\n segmentNameStartChar: ':',\n segmentValueCharset: 'a-zA-Z0-9-_~ %',\n segmentNameCharset: 'a-zA-Z0-9',\n optionalSegmentStartChar: '(',\n optionalSegmentEndChar: ')',\n wildcardChar: '*'\n };\n baseAstNodeToRegexString = function(astNode, segmentValueCharset) {\n if (Array.isArray(astNode)) {\n return stringConcatMap(astNode, function(node) {\n return baseAstNodeToRegexString(node, segmentValueCharset);\n });\n }\n switch (astNode.tag) {\n case 'wildcard':\n return '(.*?)';\n case 'named':\n return \"([\" + segmentValueCharset + \"]+)\";\n case 'static':\n return escapeForRegex(astNode.value);\n case 'optional':\n return '(?:' + baseAstNodeToRegexString(astNode.value, segmentValueCharset) + ')?';\n }\n };\n astNodeToRegexString = function(astNode, segmentValueCharset) {\n if (segmentValueCharset == null) {\n segmentValueCharset = defaultOptions.segmentValueCharset;\n }\n return '^' + baseAstNodeToRegexString(astNode, segmentValueCharset) + '$';\n };\n astNodeToNames = function(astNode) {\n if (Array.isArray(astNode)) {\n return concatMap(astNode, astNodeToNames);\n }\n switch (astNode.tag) {\n case 'wildcard':\n return ['_'];\n case 'named':\n return [astNode.value];\n case 'static':\n return [];\n case 'optional':\n return astNodeToNames(astNode.value);\n }\n };\n getParam = function(params, key, nextIndexes, sideEffects) {\n var index, maxIndex, result, value;\n if (sideEffects == null) {\n sideEffects = false;\n }\n value = params[key];\n if (value == null) {\n if (sideEffects) {\n throw new Error(\"no values provided for key `\" + key + \"`\");\n } else {\n return;\n }\n }\n index = nextIndexes[key] || 0;\n maxIndex = Array.isArray(value) ? value.length - 1 : 0;\n if (index > maxIndex) {\n if (sideEffects) {\n throw new Error(\"too few values provided for key `\" + key + \"`\");\n } else {\n return;\n }\n }\n result = Array.isArray(value) ? value[index] : value;\n if (sideEffects) {\n nextIndexes[key] = index + 1;\n }\n return result;\n };\n astNodeContainsSegmentsForProvidedParams = function(astNode, params, nextIndexes) {\n var i, length;\n if (Array.isArray(astNode)) {\n i = -1;\n length = astNode.length;\n while (++i < length) {\n if (astNodeContainsSegmentsForProvidedParams(astNode[i], params, nextIndexes)) {\n return true;\n }\n }\n return false;\n }\n switch (astNode.tag) {\n case 'wildcard':\n return getParam(params, '_', nextIndexes, false) != null;\n case 'named':\n return getParam(params, astNode.value, nextIndexes, false) != null;\n case 'static':\n return false;\n case 'optional':\n return astNodeContainsSegmentsForProvidedParams(astNode.value, params, nextIndexes);\n }\n };\n stringify = function(astNode, params, nextIndexes) {\n if (Array.isArray(astNode)) {\n return stringConcatMap(astNode, function(node) {\n return stringify(node, params, nextIndexes);\n });\n }\n switch (astNode.tag) {\n case 'wildcard':\n return getParam(params, '_', nextIndexes, true);\n case 'named':\n return getParam(params, astNode.value, nextIndexes, true);\n case 'static':\n return astNode.value;\n case 'optional':\n if (astNodeContainsSegmentsForProvidedParams(astNode.value, params, nextIndexes)) {\n return stringify(astNode.value, params, nextIndexes);\n } else {\n return '';\n }\n }\n };\n UrlPattern = function(arg1, arg2) {\n var groupCount, options, parsed, parser, withoutWhitespace;\n if (arg1 instanceof UrlPattern) {\n this.isRegex = arg1.isRegex;\n this.regex = arg1.regex;\n this.ast = arg1.ast;\n this.names = arg1.names;\n return;\n }\n this.isRegex = arg1 instanceof RegExp;\n if (!(('string' === typeof arg1) || this.isRegex)) {\n throw new TypeError('argument must be a regex or a string');\n }\n if (this.isRegex) {\n this.regex = arg1;\n if (arg2 != null) {\n if (!Array.isArray(arg2)) {\n throw new Error('if first argument is a regex the second argument may be an array of group names but you provided something else');\n }\n groupCount = regexGroupCount(this.regex);\n if (arg2.length !== groupCount) {\n throw new Error(\"regex contains \" + groupCount + \" groups but array of group names contains \" + arg2.length);\n }\n this.names = arg2;\n }\n return;\n }\n if (arg1 === '') {\n throw new Error('argument must not be the empty string');\n }\n withoutWhitespace = arg1.replace(/\\s+/g, '');\n if (withoutWhitespace !== arg1) {\n throw new Error('argument must not contain whitespace');\n }\n options = {\n escapeChar: (arg2 != null ? arg2.escapeChar : void 0) || defaultOptions.escapeChar,\n segmentNameStartChar: (arg2 != null ? arg2.segmentNameStartChar : void 0) || defaultOptions.segmentNameStartChar,\n segmentNameCharset: (arg2 != null ? arg2.segmentNameCharset : void 0) || defaultOptions.segmentNameCharset,\n segmentValueCharset: (arg2 != null ? arg2.segmentValueCharset : void 0) || defaultOptions.segmentValueCharset,\n optionalSegmentStartChar: (arg2 != null ? arg2.optionalSegmentStartChar : void 0) || defaultOptions.optionalSegmentStartChar,\n optionalSegmentEndChar: (arg2 != null ? arg2.optionalSegmentEndChar : void 0) || defaultOptions.optionalSegmentEndChar,\n wildcardChar: (arg2 != null ? arg2.wildcardChar : void 0) || defaultOptions.wildcardChar\n };\n parser = newParser(options);\n parsed = parser.pattern(arg1);\n if (parsed == null) {\n throw new Error(\"couldn't parse pattern\");\n }\n if (parsed.rest !== '') {\n throw new Error(\"could only partially parse pattern\");\n }\n this.ast = parsed.value;\n this.regex = new RegExp(astNodeToRegexString(this.ast, options.segmentValueCharset));\n this.names = astNodeToNames(this.ast);\n };\n UrlPattern.prototype.match = function(url) {\n var groups, match;\n match = this.regex.exec(url);\n if (match == null) {\n return null;\n }\n groups = match.slice(1);\n if (this.names) {\n return keysAndValuesToObject(this.names, groups);\n } else {\n return groups;\n }\n };\n UrlPattern.prototype.stringify = function(params) {\n if (params == null) {\n params = {};\n }\n if (this.isRegex) {\n throw new Error(\"can't stringify patterns generated from a regex\");\n }\n if (params !== Object(params)) {\n throw new Error(\"argument must be an object or undefined\");\n }\n return stringify(this.ast, params, {});\n };\n UrlPattern.escapeForRegex = escapeForRegex;\n UrlPattern.concatMap = concatMap;\n UrlPattern.stringConcatMap = stringConcatMap;\n UrlPattern.regexGroupCount = regexGroupCount;\n UrlPattern.keysAndValuesToObject = keysAndValuesToObject;\n UrlPattern.P = P;\n UrlPattern.newParser = newParser;\n UrlPattern.defaultOptions = defaultOptions;\n UrlPattern.astNodeToRegexString = astNodeToRegexString;\n UrlPattern.astNodeToNames = astNodeToNames;\n UrlPattern.getParam = getParam;\n UrlPattern.astNodeContainsSegmentsForProvidedParams = astNodeContainsSegmentsForProvidedParams;\n UrlPattern.stringify = stringify;\n return UrlPattern;\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/url-pattern/lib/url-pattern.js\n ** module id = 25\n ** module chunks = 0\n **/","module.exports = __webpack_amd_options__;\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/webpack/buildin/amd-options.js\n ** module id = 26\n ** module chunks = 0\n **/","import { LOCATION_CHANGED } from './action-types';\n\nexport default (state = {}, action) => {\n if (action.type === LOCATION_CHANGED) {\n // No-op the initial route action\n if (state && state.pathname === action.payload.pathname) {\n return state;\n }\n\n return {\n ...action.payload,\n previous: state.current\n };\n }\n return state;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./reducer.js\n **/","import createMatcher from './create-matcher';\n\nexport default ({\n pathname = '/',\n query = {},\n routes,\n history\n}) => ({\n ...history.createLocation({\n pathname,\n query\n }),\n ...createMatcher(routes)(pathname)\n});\n\n\n\n/** WEBPACK FOOTER **\n ** ./initial-router-state.js\n **/","import React, { Component, PropTypes } from 'react';\n\nexport default ({ store }) => ComposedComponent => {\n class RouterProvider extends Component {\n constructor(props) {\n super(props);\n this.router = { store };\n }\n\n getChildContext() {\n return {\n router: this.router\n };\n }\n\n render() {\n const { children, ...rest } = this.props; // eslint-disable-line no-unused-vars\n return