diff --git a/4/ecolyo.57b00afe94752aab3f67.js b/4/ecolyo.d2bf69e982254c3ce239.js
similarity index 99%
rename from 4/ecolyo.57b00afe94752aab3f67.js
rename to 4/ecolyo.d2bf69e982254c3ce239.js
index 5f55840f0dcd97494fe38414eae6f61860c6b788..d8e099b68a4aa7d59a4c5355320b63d022a1a4f1 100644
--- a/4/ecolyo.57b00afe94752aab3f67.js
+++ b/4/ecolyo.d2bf69e982254c3ce239.js
@@ -226,7 +226,7 @@ var _ecogesture = _interopRequireDefault(__webpack_require__("w4u3"));
 
 var _hooks = __webpack_require__("Zlw4");
 
-var _profile = __webpack_require__("jPH6");
+var _profile = __webpack_require__("iyr4");
 
 var _EcogestureEmptyList = _interopRequireDefault(__webpack_require__("iK/h"));
 
diff --git a/5/ecolyo.a44a0f37940763589a8d.js b/5/ecolyo.376cdd52c18eb6f092a0.js
similarity index 98%
rename from 5/ecolyo.a44a0f37940763589a8d.js
rename to 5/ecolyo.376cdd52c18eb6f092a0.js
index 7d2021693568ca787b042595e7a78b42425b2608..a9040bb6a3ec5bb17a57ce419d7c1e73b356d081 100644
--- a/5/ecolyo.a44a0f37940763589a8d.js
+++ b/5/ecolyo.376cdd52c18eb6f092a0.js
@@ -96,7 +96,7 @@ var _consumption = _interopRequireDefault(__webpack_require__("AVq/"));
 
 var _hooks = __webpack_require__("Zlw4");
 
-var _profile = __webpack_require__("jPH6");
+var _profile = __webpack_require__("iyr4");
 
 __webpack_require__("D92I");
 
@@ -122,51 +122,17 @@ var ReportOptions = function ReportOptions() {
       maxDayData = _useState2[0],
       setLastSemesterMaxDay = _useState2[1];
 
-  var updateProfileReport = /*#__PURE__*/function () {
-    var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(value) {
-      return _regenerator.default.wrap(function _callee$(_context) {
-        while (1) {
-          switch (_context.prev = _context.next) {
-            case 0:
-              dispatch((0, _profile.updateProfile)({
-                sendAnalysisNotification: value
-              }));
-
-            case 1:
-            case "end":
-              return _context.stop();
-          }
-        }
-      }, _callee);
+  var updateProfileReport = function updateProfileReport(value) {
+    dispatch((0, _profile.updateProfile)({
+      sendAnalysisNotification: value
     }));
+  };
 
-    return function updateProfileReport(_x) {
-      return _ref.apply(this, arguments);
-    };
-  }();
-
-  var updateProfileAlert = (0, _react.useCallback)( /*#__PURE__*/function () {
-    var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(value) {
-      return _regenerator.default.wrap(function _callee2$(_context2) {
-        while (1) {
-          switch (_context2.prev = _context2.next) {
-            case 0:
-              dispatch((0, _profile.updateProfile)({
-                sendConsumptionAlert: value
-              }));
-
-            case 1:
-            case "end":
-              return _context2.stop();
-          }
-        }
-      }, _callee2);
+  var updateProfileAlert = (0, _react.useCallback)(function (value) {
+    dispatch((0, _profile.updateProfile)({
+      sendConsumptionAlert: value
     }));
-
-    return function (_x2) {
-      return _ref2.apply(this, arguments);
-    };
-  }(), [dispatch]);
+  }, [dispatch]);
 
   var setWaterLimit = function setWaterLimit(e) {
     if (e.target.value !== null && parseInt(e.target.value) > 0) {
@@ -194,11 +160,11 @@ var ReportOptions = function ReportOptions() {
     }
 
     function _getMaxLoadData() {
-      _getMaxLoadData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
+      _getMaxLoadData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
         var timePeriod, consumptionService, lastSemesterMax;
-        return _regenerator.default.wrap(function _callee3$(_context3) {
+        return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
-            switch (_context3.prev = _context3.next) {
+            switch (_context.prev = _context.next) {
               case 0:
                 timePeriod = {
                   startDate: _luxon.DateTime.now().minus({
@@ -207,11 +173,11 @@ var ReportOptions = function ReportOptions() {
                   endDate: _luxon.DateTime.now()
                 };
                 consumptionService = new _consumption.default(client);
-                _context3.next = 4;
+                _context.next = 4;
                 return consumptionService.getMaxLoad(timePeriod, _enums.TimeStep.DAY, [_enums.FluidType.WATER], undefined, false, true);
 
               case 4:
-                lastSemesterMax = _context3.sent;
+                lastSemesterMax = _context.sent;
 
                 if (lastSemesterMax) {
                   setLastSemesterMaxDay(lastSemesterMax);
@@ -219,10 +185,10 @@ var ReportOptions = function ReportOptions() {
 
               case 6:
               case "end":
-                return _context3.stop();
+                return _context.stop();
             }
           }
-        }, _callee3);
+        }, _callee);
       }));
       return _getMaxLoadData.apply(this, arguments);
     }
diff --git a/6/ecolyo.52216180ad2becc90d67.js b/6/ecolyo.06009b1da7881a5924bd.js
similarity index 99%
rename from 6/ecolyo.52216180ad2becc90d67.js
rename to 6/ecolyo.06009b1da7881a5924bd.js
index ff6bb8cbdb03f7adc0b2bec93d81c5e753242fc7..d0ed9c19172e6edba547fbb22252ac4bd1e113d2 100644
--- a/6/ecolyo.52216180ad2becc90d67.js
+++ b/6/ecolyo.06009b1da7881a5924bd.js
@@ -535,7 +535,7 @@ var _global = __webpack_require__("b3rE");
 
 var _hooks = __webpack_require__("Zlw4");
 
-var _profile = __webpack_require__("jPH6");
+var _profile = __webpack_require__("iyr4");
 
 var _date = __webpack_require__("XrP9");
 
diff --git a/app/ecolyo.5de03adc3b52a89059f3.js b/app/ecolyo.61be51e38c973afc99c5.js
similarity index 99%
rename from app/ecolyo.5de03adc3b52a89059f3.js
rename to app/ecolyo.61be51e38c973afc99c5.js
index e8110f1bce91998db4f2593a24de277282cd169d..d16ac50661e26528f18b62b542cbfdc7c3b06ee2 100644
--- a/app/ecolyo.5de03adc3b52a89059f3.js
+++ b/app/ecolyo.61be51e38c973afc99c5.js
@@ -64,7 +64,7 @@
 /******/
 /******/ 	// script path function
 /******/ 	function jsonpScriptSrc(chunkId) {
-/******/ 		return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"1":"812715c2a24f19cbdaae","2":"ee6e82fa75e665d74560","4":"57b00afe94752aab3f67","5":"a44a0f37940763589a8d","6":"52216180ad2becc90d67","7":"03964c0031ba71f39f0a","8":"79baa4590f4f0a94be8c","9":"30da7dc1931663d9bbdf","10":"24e1a14cab96b50d3fbd"}[chunkId] + ".js"
+/******/ 		return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"1":"812715c2a24f19cbdaae","2":"ee6e82fa75e665d74560","4":"d2bf69e982254c3ce239","5":"376cdd52c18eb6f092a0","6":"06009b1da7881a5924bd","7":"03964c0031ba71f39f0a","8":"79baa4590f4f0a94be8c","9":"30da7dc1931663d9bbdf","10":"24e1a14cab96b50d3fbd"}[chunkId] + ".js"
 /******/ 	}
 /******/
 /******/ 	// The require function
@@ -1036,7 +1036,7 @@ var _usageEvent = _interopRequireDefault(__webpack_require__("dECN"));
 
 var _hooks = __webpack_require__("Zlw4");
 
-var _profile = __webpack_require__("jPH6");
+var _profile = __webpack_require__("iyr4");
 
 var _profileType2 = __webpack_require__("ZI2v");
 
@@ -1305,7 +1305,7 @@ var _hooks = __webpack_require__("Zlw4");
 
 var _modal = __webpack_require__("oKH6");
 
-var _profile = __webpack_require__("jPH6");
+var _profile = __webpack_require__("iyr4");
 
 var _profileEcogesture = __webpack_require__("Zmlh");
 
@@ -3146,7 +3146,7 @@ var _mail = _interopRequireDefault(__webpack_require__("40JQ"));
 
 var _hooks = __webpack_require__("Zlw4");
 
-var _profile = __webpack_require__("jPH6");
+var _profile = __webpack_require__("iyr4");
 
 __webpack_require__("jCXb");
 
@@ -16024,90 +16024,6 @@ exports.default = ProfileEcogestureFormService;
 
 /***/ }),
 
-/***/ "QCMq":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__("TqRt");
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.profileReducer = void 0;
-
-var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
-
-var _luxon = __webpack_require__("ExVU");
-
-var _profile = __webpack_require__("jPH6");
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
-
-var initialState = {
-  id: '',
-  ecogestureHash: '',
-  challengeHash: '',
-  duelHash: '',
-  quizHash: '',
-  explorationHash: '',
-  isFirstConnection: false,
-  partnersIssueSeenDate: {
-    enedis: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
-      zone: 'utc'
-    }),
-    egl: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
-      zone: 'utc'
-    }),
-    grdf: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
-      zone: 'utc'
-    })
-  },
-  lastConnectionDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
-    zone: 'utc'
-  }),
-  customPopupDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
-    zone: 'utc'
-  }),
-  haveSeenLastAnalysis: true,
-  sendAnalysisNotification: true,
-  sendConsumptionAlert: false,
-  waterDailyConsumptionLimit: 0,
-  mailToken: '',
-  monthlyAnalysisDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
-    zone: 'utc'
-  }),
-  isProfileTypeCompleted: false,
-  isProfileEcogestureCompleted: false,
-  onboarding: {
-    isWelcomeSeen: true
-  },
-  haveSeenEcogestureModal: false,
-  activateHalfHourDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
-    zone: 'utc'
-  })
-};
-
-var profileReducer = function profileReducer() {
-  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
-  var action = arguments.length > 1 ? arguments[1] : undefined;
-
-  switch (action.type) {
-    case _profile.UPDATE_PROFILE:
-      return _objectSpread(_objectSpread({}, state), action.payload);
-
-    default:
-      return state;
-  }
-};
-
-exports.profileReducer = profileReducer;
-
-/***/ }),
-
 /***/ "QECG":
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
@@ -22099,9 +22015,10 @@ exports.useAppSelector = exports.useAppDispatch = void 0;
 
 var _reactRedux = __webpack_require__("/MKj");
 
-// Typed hooks
-// https://redux.js.org/tutorials/typescript-quick-start#define-typed-hooks
-var useAppDispatch = _reactRedux.useDispatch; // TODO maybe use AppEcolyoStore
+var useAppDispatch = function useAppDispatch() {
+  return (0, _reactRedux.useDispatch)();
+}; // TODO maybe use AppEcolyoStore
+
 
 exports.useAppDispatch = useAppDispatch;
 var useAppSelector = _reactRedux.useSelector;
@@ -24053,7 +23970,7 @@ var _profileEcogestureForm = _interopRequireDefault(__webpack_require__("QCFg"))
 
 var _hooks = __webpack_require__("Zlw4");
 
-var _profile = __webpack_require__("jPH6");
+var _profile = __webpack_require__("iyr4");
 
 var _profileEcogesture2 = __webpack_require__("Zmlh");
 
@@ -26853,6 +26770,126 @@ exports.default = _default;
 
 /***/ }),
 
+/***/ "iyr4":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__("TqRt");
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.updateProfile = exports.profileSlice = void 0;
+
+var _regenerator = _interopRequireDefault(__webpack_require__("o0o1"));
+
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU"));
+
+var _toolkit = __webpack_require__("i7Pf");
+
+var _luxon = __webpack_require__("ExVU");
+
+var _profile = _interopRequireDefault(__webpack_require__("2l2O"));
+
+var initialState = {
+  id: '',
+  ecogestureHash: '',
+  challengeHash: '',
+  duelHash: '',
+  quizHash: '',
+  explorationHash: '',
+  isFirstConnection: false,
+  partnersIssueSeenDate: {
+    enedis: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
+      zone: 'utc'
+    }),
+    egl: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
+      zone: 'utc'
+    }),
+    grdf: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
+      zone: 'utc'
+    })
+  },
+  lastConnectionDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
+    zone: 'utc'
+  }),
+  customPopupDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
+    zone: 'utc'
+  }),
+  haveSeenLastAnalysis: true,
+  sendAnalysisNotification: true,
+  sendConsumptionAlert: false,
+  waterDailyConsumptionLimit: 0,
+  mailToken: '',
+  monthlyAnalysisDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
+    zone: 'utc'
+  }),
+  isProfileTypeCompleted: false,
+  isProfileEcogestureCompleted: false,
+  onboarding: {
+    isWelcomeSeen: true
+  },
+  haveSeenEcogestureModal: false,
+  activateHalfHourDate: _luxon.DateTime.fromISO('0000-01-01T00:00:00.000Z', {
+    zone: 'utc'
+  })
+};
+var profileSlice = (0, _toolkit.createSlice)({
+  name: 'profile',
+  initialState: initialState,
+  reducers: {},
+  extraReducers: function extraReducers(builder) {
+    builder.addCase(updateProfile.fulfilled, function (state, action) {
+      Object.assign(state, action.payload);
+    });
+  }
+});
+/**
+ * Thunk updating profile in couch DB.
+ * If the profile has an update, dispatch it to the app
+ */
+
+exports.profileSlice = profileSlice;
+var updateProfile = (0, _toolkit.createAsyncThunk)('profile/updateProfile', /*#__PURE__*/function () {
+  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(profileUpdates, thunkAPI) {
+    var client, profileService, updatedProfile;
+    return _regenerator.default.wrap(function _callee$(_context) {
+      while (1) {
+        switch (_context.prev = _context.next) {
+          case 0:
+            client = thunkAPI.extra.client;
+            profileService = new _profile.default(client);
+            _context.next = 4;
+            return profileService.updateProfile(profileUpdates);
+
+          case 4:
+            updatedProfile = _context.sent;
+
+            if (!updatedProfile) {
+              _context.next = 7;
+              break;
+            }
+
+            return _context.abrupt("return", updatedProfile);
+
+          case 7:
+          case "end":
+            return _context.stop();
+        }
+      }
+    }, _callee);
+  }));
+
+  return function (_x, _x2) {
+    return _ref.apply(this, arguments);
+  };
+}());
+exports.updateProfile = updateProfile;
+
+/***/ }),
+
 /***/ "j10w":
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
@@ -27098,72 +27135,6 @@ exports.default = _default;
 
 /***/ }),
 
-/***/ "jPH6":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__("TqRt");
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.UPDATE_PROFILE = void 0;
-exports.updateProfile = updateProfile;
-
-var _regenerator = _interopRequireDefault(__webpack_require__("o0o1"));
-
-var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU"));
-
-var _profile = _interopRequireDefault(__webpack_require__("2l2O"));
-
-var UPDATE_PROFILE = 'UPDATE_PROFILE';
-exports.UPDATE_PROFILE = UPDATE_PROFILE;
-
-function updateProfileSuccess(updatedProfile) {
-  return {
-    type: UPDATE_PROFILE,
-    payload: updatedProfile
-  };
-}
-
-function updateProfile(updates) {
-  return /*#__PURE__*/function () {
-    var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dispatch, getState, _ref) {
-      var client, profileService, updatedProfile;
-      return _regenerator.default.wrap(function _callee$(_context) {
-        while (1) {
-          switch (_context.prev = _context.next) {
-            case 0:
-              client = _ref.client;
-              profileService = new _profile.default(client);
-              _context.next = 4;
-              return profileService.updateProfile(updates);
-
-            case 4:
-              updatedProfile = _context.sent;
-
-              if (updatedProfile) {
-                dispatch(updateProfileSuccess(updatedProfile));
-              }
-
-            case 6:
-            case "end":
-              return _context.stop();
-          }
-        }
-      }, _callee);
-    }));
-
-    return function (_x, _x2, _x3) {
-      return _ref2.apply(this, arguments);
-    };
-  }();
-}
-
-/***/ }),
-
 /***/ "jRCY":
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
@@ -33278,7 +33249,7 @@ var _reactRouterDom = __webpack_require__("SOjZ");
 
 var _hooks = __webpack_require__("Zlw4");
 
-var _profile = __webpack_require__("jPH6");
+var _profile = __webpack_require__("iyr4");
 
 __webpack_require__("6uf0");
 
@@ -34836,7 +34807,7 @@ var _global = __webpack_require__("b3rE");
 
 var _modal = __webpack_require__("oKH6");
 
-var _profile = __webpack_require__("QCMq");
+var _profile = __webpack_require__("iyr4");
 
 var _profileEcogesture = __webpack_require__("L0ad");
 
@@ -34861,21 +34832,17 @@ var ecolyoReducer = (0, _redux.combineReducers)({
   chart: _chart.chartSlice.reducer,
   global: _global.globalSlice.reducer,
   modal: _modal.modalSlice.reducer,
-  profile: _profile.profileReducer,
+  profile: _profile.profileSlice.reducer,
   profileEcogesture: _profileEcogesture.profileEcogestureReducer,
   profileType: _profileType.profileTypeSlice.reducer
 });
 
-var appActions = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _analysis.analysisSlice.actions), _challenge.challengeSlice.actions), _chart.chartSlice.actions), _modal.modalSlice.actions), _profileType.profileTypeSlice.actions), _global.globalSlice.actions); // TODO refactor types with AppActionsTypes = typeof appActions
+var appActions = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _analysis.analysisSlice.actions), _challenge.challengeSlice.actions), _chart.chartSlice.actions), _modal.modalSlice.actions), _profileType.profileTypeSlice.actions), _global.globalSlice.actions), _profile.profileSlice.actions); // TODO refactor types with AppActionsTypes = typeof appActions
 
 
 var sentryReduxEnhancer = Sentry.createReduxEnhancer({});
 
 var configureStore = function configureStore(client, persistedState) {
-  var middlewares = [_reduxThunk.default.withExtraArgument({
-    client: client
-  })];
-
   var composeEnhancers = (0, _reduxDevtoolsExtension.composeWithDevTools)({
     trace: true,
     actionCreators: appActions
@@ -34885,8 +34852,9 @@ var configureStore = function configureStore(client, persistedState) {
     ecolyo: ecolyoReducer,
     cozy: client.reducer(),
     persistedState: persistedState
-  }), composeEnhancers( // eslint-disable-next-line prefer-spread
-  _redux.applyMiddleware.apply(null, middlewares), sentryReduxEnhancer));
+  }), composeEnhancers((0, _redux.applyMiddleware)(_reduxThunk.default.withExtraArgument({
+    client: client
+  })), sentryReduxEnhancer));
   return store;
 };
 
diff --git a/index.html b/index.html
index 2fad26eb3aa301ce68e4edf87d224d8f317cf1b2..a261ce5b60293655181566b90f5db871224695db 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.69beab954af56959f24c.js"></script><script src="app/ecolyo.5de03adc3b52a89059f3.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.e8305b3519e4c7b4170b.js"></script><script src="app/ecolyo.61be51e38c973afc99c5.js"></script></div></body></html>
\ No newline at end of file
diff --git a/vendors/ecolyo.69beab954af56959f24c.js b/vendors/ecolyo.e8305b3519e4c7b4170b.js
similarity index 99%
rename from vendors/ecolyo.69beab954af56959f24c.js
rename to vendors/ecolyo.e8305b3519e4c7b4170b.js
index 09f4831fdfb2aa52545a5249ec36abffe52a4682..e6e8c1bd0771e0dab092a9294d73d860925c869a 100644
--- a/vendors/ecolyo.69beab954af56959f24c.js
+++ b/vendors/ecolyo.e8305b3519e4c7b4170b.js
@@ -30453,6 +30453,46 @@ __webpack_require__.r(__webpack_exports__);
 
 
 
+/***/ }),
+
+/***/ "39GT":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/** A function that accepts a potential "extra argument" value to be injected later,
+ * and returns an instance of the thunk middleware that uses that value
+ */
+function createThunkMiddleware(extraArgument) {
+  // Standard Redux middleware definition pattern:
+  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware
+  var middleware = function middleware(_ref) {
+    var dispatch = _ref.dispatch,
+        getState = _ref.getState;
+    return function (next) {
+      return function (action) {
+        // The thunk middleware looks for any functions that were passed to `store.dispatch`.
+        // If this "action" is really a function, call it and return the result.
+        if (typeof action === 'function') {
+          // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg"
+          return action(dispatch, getState, extraArgument);
+        } // Otherwise, pass the action down the middleware chain as usual
+
+
+        return next(action);
+      };
+    };
+  };
+
+  return middleware;
+}
+
+var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version
+// with whatever "extra arg" they want to inject into their thunks
+
+thunk.withExtraArgument = createThunkMiddleware;
+/* harmony default export */ __webpack_exports__["default"] = (thunk);
+
 /***/ }),
 
 /***/ "39rz":
@@ -78687,46 +78727,6 @@ if (test + '' != '[object z]') {
 }
 
 
-/***/ }),
-
-/***/ "BvKb":
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/** A function that accepts a potential "extra argument" value to be injected later,
- * and returns an instance of the thunk middleware that uses that value
- */
-function createThunkMiddleware(extraArgument) {
-  // Standard Redux middleware definition pattern:
-  // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware
-  var middleware = function middleware(_ref) {
-    var dispatch = _ref.dispatch,
-        getState = _ref.getState;
-    return function (next) {
-      return function (action) {
-        // The thunk middleware looks for any functions that were passed to `store.dispatch`.
-        // If this "action" is really a function, call it and return the result.
-        if (typeof action === 'function') {
-          // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg"
-          return action(dispatch, getState, extraArgument);
-        } // Otherwise, pass the action down the middleware chain as usual
-
-
-        return next(action);
-      };
-    };
-  };
-
-  return middleware;
-}
-
-var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version
-// with whatever "extra arg" they want to inject into their thunks
-
-thunk.withExtraArgument = createThunkMiddleware;
-/* harmony default export */ __webpack_exports__["default"] = (thunk);
-
 /***/ }),
 
 /***/ "BvTd":
@@ -161911,7 +161911,7 @@ var _cozyFlags = _interopRequireDefault(__webpack_require__("mgfL"));
 
 var _redux = __webpack_require__("ANjH");
 
-var _reduxThunk = _interopRequireDefault(__webpack_require__("sINF"));
+var _reduxThunk = _interopRequireDefault(__webpack_require__("39GT"));
 
 var _documents = _interopRequireWildcard(__webpack_require__("FoB8"));
 
@@ -313821,7 +313821,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("G4qV");
 /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createSelector", function() { return reselect__WEBPACK_IMPORTED_MODULE_2__["createSelector"]; });
 
-/* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("BvKb");
+/* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("sINF");
 var __extends = (undefined && undefined.__extends) || (function () {
     var extendStatics = function (d, b) {
         extendStatics = Object.setPrototypeOf ||