diff --git a/package-lock.json b/package-lock.json
index 39f3e924184b0960267e08b4d6d2b6bb1ff4a88e..a7b79ff4ae1bfbce4116a3047847a5c0008c671f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,9 +5,12 @@
   "requires": true,
   "dependencies": {
     "@agm/core": {
-      "version": "1.0.0-beta.3",
-      "resolved": "https://registry.npmjs.org/@agm/core/-/core-1.0.0-beta.3.tgz",
-      "integrity": "sha512-nsyergarmMB4JCw7KGujj86ulgRYhEk8zXKRiJZdnju/irLvazQ/9Anlfsf1Rc5yph8sZrmQDwqLGZ6AqHhnzA=="
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@agm/core/-/core-1.0.0.tgz",
+      "integrity": "sha512-tgrobTyAHCZ3cdi21IdiBafiHLxsC5/6ncq6+f9RV+HrLg0XDuk+DA7upfdE34o2Ui3fNRDYDIgExRVFLsSPCw==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
     },
     "@angular-devkit/architect": {
       "version": "0.6.8",
@@ -160,9 +163,9 @@
       }
     },
     "@angular/cdk": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-6.4.5.tgz",
-      "integrity": "sha512-bbz8lHzY1NXPqrvHcZTOOD6+BiDNPKXC00xwzls62NPmiueBaWGwQdk7s3sa/0kCyq1ZKrPD3KQIDMyytxlzzw==",
+      "version": "6.4.7",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-6.4.7.tgz",
+      "integrity": "sha512-18x0U66fLD5kGQWZ9n3nb75xQouXlWs7kUDaTd8HTrHpT1s2QIAqlLd1KxfrYiVhsEC2jPQaoiae7VnBlcvkBg==",
       "requires": {
         "tslib": "^1.7.1"
       }
@@ -336,6 +339,21 @@
         "tslib": "^1.9.0"
       }
     },
+    "@angular/flex-layout": {
+      "version": "10.0.0-beta.32",
+      "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-10.0.0-beta.32.tgz",
+      "integrity": "sha512-JvuY4dUoy5jyCTIrFiq7n30Znakh1pD3nbg0h0hs2r3t1OiDQb0ZSI1wcumosG/vYHsuJQTuNhbfaIZzA1x8nA==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
+          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
+        }
+      }
+    },
     "@angular/forms": {
       "version": "6.0.4",
       "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.4.tgz",
@@ -353,27 +371,20 @@
       }
     },
     "@angular/material": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-6.4.5.tgz",
-      "integrity": "sha512-3wDRfGqlRSo3CBA1XuPXSz7zAwZF5kotXEgbZhIAocv+nsXa73DyPNceAQ++Pu7rFR3ipg6McyggP0OCOgv7NQ==",
+      "version": "6.4.7",
+      "resolved": "https://registry.npmjs.org/@angular/material/-/material-6.4.7.tgz",
+      "integrity": "sha512-SdNx7Xovi24Kw9eU6lkLhY/7f2M7L9F+/uh6XuPr4jbGgCUVVpeeVI5ztZhsZRbj1sN+/r1p5w8u62apWWl5Ww==",
       "requires": {
         "parse5": "^5.0.0",
         "tslib": "^1.7.1"
       }
     },
     "@angular/material-moment-adapter": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-6.4.5.tgz",
-      "integrity": "sha512-xgPMnntOfwTX4Uuz7g/GQ4IcRn6tiSJCGSikwTK5yRJjUEGguHmBch57q2Xjr/A+WfmGYZnVfzy3V9t/XsNKqA==",
+      "version": "6.4.7",
+      "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-6.4.7.tgz",
+      "integrity": "sha512-OGdDtpu/yRioOQXhJFCNuiOF2OgiL9VUj8ewFPi1lDtFGUFfVwU2h3hWkKLn+yuPW+DBVYla11tCNsn5dLElmA==",
       "requires": {
         "tslib": "^1.7.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.9.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
-          "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
-        }
       }
     },
     "@angular/platform-browser": {
@@ -441,14 +452,14 @@
       "dev": true
     },
     "@types/marked": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.0.tgz",
-      "integrity": "sha512-xkURX55US18wHme+O2UlqJf3Fo7FqT5VAL+OJ/zK+jP2NX57naryDHoiqt/pMIwZjDc62sRvXUWuQQxQiBdheQ=="
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.2.tgz",
+      "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg=="
     },
     "@types/node": {
-      "version": "6.0.116",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.116.tgz",
-      "integrity": "sha512-vToa8YEeulfyYg1gSOeHjvvIRqrokng62VMSj2hoZrwZNcYrp2h3AWo6KeBVuymIklQUaY5zgVJvVsC4KiiLkQ==",
+      "version": "6.0.118",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.118.tgz",
+      "integrity": "sha512-N33cKXGSqhOYaPiT4xUGsYlPPDwFtQM/6QxJxuMXA/7BcySW+lkn2yigWP7vfs4daiL/7NJNU6DMCqg5N4B+xQ==",
       "dev": true
     },
     "@types/q": {
@@ -458,9 +469,9 @@
       "dev": true
     },
     "@types/selenium-webdriver": {
-      "version": "3.0.10",
-      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz",
-      "integrity": "sha512-ikB0JHv6vCR1KYUQAzTO4gi/lXLElT4Tx+6De2pc/OZwizE9LRNiTa+U8TBFKBD/nntPnr/MPSHSnOTybjhqNA==",
+      "version": "3.0.17",
+      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz",
+      "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==",
       "dev": true
     },
     "@webassemblyjs/ast": {
@@ -710,13 +721,13 @@
     "abbrev": {
       "version": "1.0.9",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
-      "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
-      "dev": true
+      "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU="
     },
     "accepts": {
       "version": "1.3.5",
       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
       "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "dev": true,
       "requires": {
         "mime-types": "~2.1.18",
         "negotiator": "0.6.1"
@@ -745,9 +756,9 @@
       "optional": true
     },
     "adm-zip": {
-      "version": "0.4.11",
-      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz",
-      "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==",
+      "version": "0.4.16",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
+      "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
       "dev": true
     },
     "after": {
@@ -815,8 +826,7 @@
     "amdefine": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
-      "dev": true
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
     },
     "amqplib": {
       "version": "0.5.2",
@@ -961,7 +971,6 @@
       "version": "1.1.5",
       "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
       "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
-      "optional": true,
       "requires": {
         "delegates": "^1.0.0",
         "readable-stream": "^2.0.6"
@@ -994,8 +1003,7 @@
     "array-find-index": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
-      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-      "dev": true
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
     },
     "array-flatten": {
       "version": "1.1.1",
@@ -1133,9 +1141,7 @@
     "async-foreach": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
-      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
-      "dev": true,
-      "optional": true
+      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI="
     },
     "async-limiter": {
       "version": "1.0.0",
@@ -1494,8 +1500,6 @@
       "version": "0.0.9",
       "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
       "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
-      "dev": true,
-      "optional": true,
       "requires": {
         "inherits": "~2.0.0"
       }
@@ -1525,6 +1529,7 @@
       "version": "1.18.2",
       "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
       "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+      "dev": true,
       "requires": {
         "bytes": "3.0.0",
         "content-type": "~1.0.4",
@@ -1541,7 +1546,8 @@
         "qs": {
           "version": "6.5.1",
           "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+          "dev": true
         }
       }
     },
@@ -1754,9 +1760,9 @@
       }
     },
     "browserstack": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.1.tgz",
-      "integrity": "sha512-O8VMT64P9NOLhuIoD4YngyxBURefaSdR4QdhG8l6HZ9VxtU7jc3m6jLufFwKA5gaf7fetfB2TnRJnMxyob+heg==",
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.0.tgz",
+      "integrity": "sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw==",
       "dev": true,
       "requires": {
         "https-proxy-agent": "^2.2.1"
@@ -1863,7 +1869,8 @@
     "bytes": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true
     },
     "cacache": {
       "version": "10.0.4",
@@ -1939,7 +1946,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-      "dev": true,
       "requires": {
         "camelcase": "^2.0.0",
         "map-obj": "^1.0.0"
@@ -1948,8 +1954,7 @@
         "camelcase": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-          "dev": true
+          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
         }
       }
     },
@@ -2095,9 +2100,9 @@
       "dev": true
     },
     "clipboard": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz",
-      "integrity": "sha512-7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz",
+      "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==",
       "optional": true,
       "requires": {
         "good-listener": "^1.2.2",
@@ -2366,8 +2371,7 @@
     "console-control-strings": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
-      "optional": true
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
     },
     "constants-browserify": {
       "version": "1.0.0",
@@ -2376,9 +2380,12 @@
       "dev": true
     },
     "content-disposition": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
-      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
     },
     "content-type": {
       "version": "1.0.4",
@@ -2394,7 +2401,8 @@
     "cookie": {
       "version": "0.3.1",
       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
-      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
+      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+      "dev": true
     },
     "cookie-signature": {
       "version": "1.0.6",
@@ -2437,9 +2445,9 @@
       }
     },
     "core-js": {
-      "version": "2.5.7",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
-      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+      "version": "2.6.11",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
+      "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
     },
     "core-util-is": {
       "version": "1.0.2",
@@ -2520,8 +2528,6 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
       "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
-      "dev": true,
-      "optional": true,
       "requires": {
         "lru-cache": "^4.0.1",
         "which": "^1.2.9"
@@ -2622,7 +2628,6 @@
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
       "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-      "dev": true,
       "requires": {
         "array-find-index": "^1.0.1"
       }
@@ -2686,8 +2691,7 @@
     "decamelize": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-      "dev": true
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
     },
     "decode-uri-component": {
       "version": "0.2.0",
@@ -2847,8 +2851,7 @@
     "delegates": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-      "optional": true
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
     },
     "depd": {
       "version": "1.1.2",
@@ -3096,6 +3099,11 @@
         "minimalistic-crypto-utils": "^1.0.0"
       }
     },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+    },
     "emojis-list": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
@@ -3186,14 +3194,26 @@
       }
     },
     "enhanced-resolve": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
-      "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
+      "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
-        "memory-fs": "^0.4.0",
+        "memory-fs": "^0.5.0",
         "tapable": "^1.0.0"
+      },
+      "dependencies": {
+        "memory-fs": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+          "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        }
       }
     },
     "ent": {
@@ -3221,7 +3241,6 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
       "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
       "requires": {
         "is-arrayish": "^0.2.1"
       }
@@ -3584,51 +3603,160 @@
       }
     },
     "express": {
-      "version": "4.16.3",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
-      "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
       "requires": {
-        "accepts": "~1.3.5",
+        "accepts": "~1.3.7",
         "array-flatten": "1.1.1",
-        "body-parser": "1.18.2",
-        "content-disposition": "0.5.2",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
         "content-type": "~1.0.4",
-        "cookie": "0.3.1",
+        "cookie": "0.4.0",
         "cookie-signature": "1.0.6",
         "debug": "2.6.9",
         "depd": "~1.1.2",
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
         "etag": "~1.8.1",
-        "finalhandler": "1.1.1",
+        "finalhandler": "~1.1.2",
         "fresh": "0.5.2",
         "merge-descriptors": "1.0.1",
         "methods": "~1.1.2",
         "on-finished": "~2.3.0",
-        "parseurl": "~1.3.2",
+        "parseurl": "~1.3.3",
         "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.3",
-        "qs": "6.5.1",
-        "range-parser": "~1.2.0",
-        "safe-buffer": "5.1.1",
-        "send": "0.16.2",
-        "serve-static": "1.13.2",
-        "setprototypeof": "1.1.0",
-        "statuses": "~1.4.0",
-        "type-is": "~1.6.16",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
         "utils-merge": "1.0.1",
         "vary": "~1.1.2"
       },
       "dependencies": {
+        "accepts": {
+          "version": "1.3.7",
+          "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+          "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+          "requires": {
+            "mime-types": "~2.1.24",
+            "negotiator": "0.6.2"
+          }
+        },
+        "body-parser": {
+          "version": "1.19.0",
+          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+          "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+          "requires": {
+            "bytes": "3.1.0",
+            "content-type": "~1.0.4",
+            "debug": "2.6.9",
+            "depd": "~1.1.2",
+            "http-errors": "1.7.2",
+            "iconv-lite": "0.4.24",
+            "on-finished": "~2.3.0",
+            "qs": "6.7.0",
+            "raw-body": "2.4.0",
+            "type-is": "~1.6.17"
+          }
+        },
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+        },
+        "cookie": {
+          "version": "0.4.0",
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+          "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+        },
+        "http-errors": {
+          "version": "1.7.2",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+          "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.1",
+            "statuses": ">= 1.5.0 < 2",
+            "toidentifier": "1.0.0"
+          }
+        },
+        "iconv-lite": {
+          "version": "0.4.24",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        },
+        "mime-db": {
+          "version": "1.44.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+          "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
+        },
+        "mime-types": {
+          "version": "2.1.27",
+          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+          "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
+          "requires": {
+            "mime-db": "1.44.0"
+          }
+        },
+        "negotiator": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+          "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+        },
+        "parseurl": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+          "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+        },
         "qs": {
-          "version": "6.5.1",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
         },
-        "safe-buffer": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-          "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "raw-body": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+          "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+          "requires": {
+            "bytes": "3.1.0",
+            "http-errors": "1.7.2",
+            "iconv-lite": "0.4.24",
+            "unpipe": "1.0.0"
+          }
+        },
+        "setprototypeof": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+          "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+        },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+        },
+        "type-is": {
+          "version": "1.6.18",
+          "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+          "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+          "requires": {
+            "media-typer": "0.3.0",
+            "mime-types": "~2.1.24"
+          }
         }
       }
     },
@@ -3805,17 +3933,29 @@
       }
     },
     "finalhandler": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
-      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
       "requires": {
         "debug": "2.6.9",
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
         "on-finished": "~2.3.0",
-        "parseurl": "~1.3.2",
-        "statuses": "~1.4.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
         "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "parseurl": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+          "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+        },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+        }
       }
     },
     "find-cache-dir": {
@@ -3972,8 +4112,7 @@
     "fs.realpath": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
     },
     "fsevents": {
       "version": "1.2.4",
@@ -4457,11 +4596,9 @@
       }
     },
     "fstream": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
-      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
-      "dev": true,
-      "optional": true,
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
       "requires": {
         "graceful-fs": "^4.1.2",
         "inherits": "~2.0.0",
@@ -4524,7 +4661,6 @@
       "version": "2.7.4",
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
       "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
-      "optional": true,
       "requires": {
         "aproba": "^1.0.3",
         "console-control-strings": "^1.0.0",
@@ -4540,8 +4676,6 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
       "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
-      "dev": true,
-      "optional": true,
       "requires": {
         "globule": "^1.0.0"
       }
@@ -4572,8 +4706,7 @@
     "get-stdin": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
     },
     "get-stream": {
       "version": "3.0.0",
@@ -4613,7 +4746,6 @@
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
       "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
-      "dev": true,
       "requires": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -4704,11 +4836,9 @@
       }
     },
     "globule": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
-      "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
-      "dev": true,
-      "optional": true,
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
+      "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
       "requires": {
         "glob": "~7.1.1",
         "lodash": "~4.17.10",
@@ -4843,7 +4973,6 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
       "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true,
       "requires": {
         "ansi-regex": "^2.0.0"
       }
@@ -4885,8 +5014,7 @@
     "has-unicode": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
-      "optional": true
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
     },
     "has-value": {
       "version": "1.0.0",
@@ -5120,6 +5248,7 @@
       "version": "1.6.3",
       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
       "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "dev": true,
       "requires": {
         "depd": "~1.1.2",
         "inherits": "2.0.3",
@@ -5237,7 +5366,8 @@
     "iconv-lite": {
       "version": "0.4.19",
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
-      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
+      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+      "dev": true
     },
     "ieee754": {
       "version": "1.1.12",
@@ -5311,17 +5441,14 @@
       "dev": true
     },
     "in-publish": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
-      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
-      "dev": true,
-      "optional": true
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+      "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ=="
     },
     "indent-string": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
       "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-      "dev": true,
       "requires": {
         "repeating": "^2.0.0"
       }
@@ -5343,7 +5470,6 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
       "requires": {
         "once": "^1.3.0",
         "wrappy": "1"
@@ -5391,9 +5517,9 @@
       "dev": true
     },
     "ipaddr.js": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
-      "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
     },
     "is-accessor-descriptor": {
       "version": "0.1.6",
@@ -5416,8 +5542,7 @@
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-      "dev": true
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
     },
     "is-binary-path": {
       "version": "1.0.1",
@@ -5529,7 +5654,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
       "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true,
       "requires": {
         "number-is-nan": "^1.0.0"
       }
@@ -5701,8 +5825,7 @@
     "is-utf8": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-      "dev": true
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
     },
     "is-windows": {
       "version": "1.0.2",
@@ -5731,8 +5854,7 @@
     "isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-      "dev": true
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
     },
     "isobject": {
       "version": "3.0.1",
@@ -6001,11 +6123,9 @@
       "dev": true
     },
     "js-base64": {
-      "version": "2.4.8",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz",
-      "integrity": "sha512-hm2nYpDrwoO/OzBhdcqs/XGT6XjSuSSCVEpia+Kl2J6x4CYt5hISlVL/AYU1khoDXv0AQVgxtdJySb9gjAn56Q==",
-      "dev": true,
-      "optional": true
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
     },
     "js-tokens": {
       "version": "3.0.2",
@@ -6095,56 +6215,15 @@
       }
     },
     "jszip": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz",
-      "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==",
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz",
+      "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==",
       "dev": true,
       "requires": {
-        "core-js": "~2.3.0",
-        "es6-promise": "~3.0.2",
-        "lie": "~3.1.0",
+        "lie": "~3.3.0",
         "pako": "~1.0.2",
-        "readable-stream": "~2.0.6"
-      },
-      "dependencies": {
-        "core-js": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz",
-          "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=",
-          "dev": true
-        },
-        "es6-promise": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz",
-          "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=",
-          "dev": true
-        },
-        "process-nextick-args": {
-          "version": "1.0.7",
-          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-          "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "2.0.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
-          "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
-          "dev": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.1",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~1.0.6",
-            "string_decoder": "~0.10.x",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true
-        }
+        "readable-stream": "~2.3.6",
+        "set-immediate-shim": "~1.0.1"
       }
     },
     "jump.js": {
@@ -6381,9 +6460,9 @@
       }
     },
     "lie": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
-      "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
       "dev": true,
       "requires": {
         "immediate": "~3.0.5"
@@ -6393,7 +6472,6 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
       "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-      "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
         "parse-json": "^2.2.0",
@@ -6405,8 +6483,7 @@
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
         }
       }
     },
@@ -6440,15 +6517,7 @@
     "lodash": {
       "version": "4.17.10",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
-      "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
-      "dev": true
-    },
-    "lodash.assign": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
-      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
-      "dev": true,
-      "optional": true
+      "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
     },
     "lodash.clonedeep": {
       "version": "4.5.0",
@@ -6461,13 +6530,6 @@
       "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
       "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
     },
-    "lodash.mergewith": {
-      "version": "4.6.1",
-      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
-      "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
-      "dev": true,
-      "optional": true
-    },
     "lodash.tail": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
@@ -6732,7 +6794,6 @@
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
       "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-      "dev": true,
       "requires": {
         "currently-unhandled": "^0.4.1",
         "signal-exit": "^3.0.0"
@@ -6754,7 +6815,6 @@
       "version": "4.1.3",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
       "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
-      "dev": true,
       "requires": {
         "pseudomap": "^1.0.2",
         "yallist": "^2.1.2"
@@ -6826,6 +6886,15 @@
       "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==",
       "dev": true
     },
+    "map-age-cleaner": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+      "dev": true,
+      "requires": {
+        "p-defer": "^1.0.0"
+      }
+    },
     "map-cache": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -6834,8 +6903,7 @@
     "map-obj": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-      "dev": true
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
     },
     "map-visit": {
       "version": "1.0.0",
@@ -6846,9 +6914,9 @@
       }
     },
     "marked": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz",
-      "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw=="
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/marked/-/marked-0.5.2.tgz",
+      "integrity": "sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA=="
     },
     "math-random": {
       "version": "1.0.1",
@@ -6893,7 +6961,6 @@
       "version": "3.7.0",
       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
       "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-      "dev": true,
       "requires": {
         "camelcase-keys": "^2.0.0",
         "decamelize": "^1.1.2",
@@ -6950,7 +7017,8 @@
     "mime": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
-      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+      "dev": true
     },
     "mime-db": {
       "version": "1.35.0",
@@ -7144,7 +7212,8 @@
     "negotiator": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+      "dev": true
     },
     "neo-async": {
       "version": "2.5.2",
@@ -7171,13 +7240,13 @@
       "integrity": "sha1-4nvOjIPpsFt8uZ/toM84X55SIWk="
     },
     "ngx-markdown": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-6.1.0.tgz",
-      "integrity": "sha512-+EiFsX9wcOzroaSMLWgY84uvZWxslnGKoBw34l4ZJMmoPUFDQGET5H3MB4PstGMaGlwVO03r2DuXH+/EqBUuqA==",
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-6.3.0.tgz",
+      "integrity": "sha512-h/C1KUWp3NfiOYf1fncSOvOOr1R52yDMlk7AEGacxXya+YVFb78Re96Mp7twBVwEZnUxP3lPh/HGGod2R4OpXg==",
       "requires": {
-        "@types/marked": "^0.4.0",
-        "marked": "^0.4.0",
-        "prismjs": "^1.14.0",
+        "@types/marked": "^0.4.2",
+        "marked": "^0.5.1",
+        "prismjs": "^1.15.0",
         "tslib": "^1.9.0"
       }
     },
@@ -7190,6 +7259,12 @@
         "tslib": "^1.9.0"
       }
     },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+      "dev": true
+    },
     "no-case": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
@@ -7209,8 +7284,6 @@
       "version": "3.8.0",
       "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
       "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
-      "dev": true,
-      "optional": true,
       "requires": {
         "fstream": "^1.0.0",
         "glob": "^7.0.3",
@@ -7229,9 +7302,7 @@
         "semver": {
           "version": "5.3.0",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
-          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
-          "dev": true,
-          "optional": true
+          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
         }
       }
     },
@@ -7275,11 +7346,9 @@
       }
     },
     "node-sass": {
-      "version": "4.9.3",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz",
-      "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==",
-      "dev": true,
-      "optional": true,
+      "version": "4.14.1",
+      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+      "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
       "requires": {
         "async-foreach": "^0.1.3",
         "chalk": "^1.1.1",
@@ -7288,46 +7357,27 @@
         "get-stdin": "^4.0.1",
         "glob": "^7.0.3",
         "in-publish": "^2.0.0",
-        "lodash.assign": "^4.2.0",
-        "lodash.clonedeep": "^4.3.2",
-        "lodash.mergewith": "^4.6.0",
+        "lodash": "^4.17.15",
         "meow": "^3.7.0",
         "mkdirp": "^0.5.1",
-        "nan": "^2.10.0",
+        "nan": "^2.13.2",
         "node-gyp": "^3.8.0",
         "npmlog": "^4.0.0",
-        "request": "2.87.0",
-        "sass-graph": "^2.2.4",
+        "request": "^2.88.0",
+        "sass-graph": "2.2.5",
         "stdout-stream": "^1.4.0",
         "true-case-path": "^1.0.2"
       },
       "dependencies": {
-        "ajv": {
-          "version": "5.5.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
-          "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "co": "^4.6.0",
-            "fast-deep-equal": "^1.0.0",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.3.0"
-          }
-        },
         "ansi-styles": {
           "version": "2.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-          "dev": true,
-          "optional": true
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
         },
         "chalk": {
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "optional": true,
           "requires": {
             "ansi-styles": "^2.2.1",
             "escape-string-regexp": "^1.0.2",
@@ -7336,76 +7386,20 @@
             "supports-color": "^2.0.0"
           }
         },
-        "har-validator": {
-          "version": "5.0.3",
-          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
-          "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ajv": "^5.1.0",
-            "har-schema": "^2.0.0"
-          }
-        },
-        "oauth-sign": {
-          "version": "0.8.2",
-          "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
-          "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
-          "dev": true,
-          "optional": true
+        "lodash": {
+          "version": "4.17.20",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+          "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
         },
-        "punycode": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-          "dev": true,
-          "optional": true
-        },
-        "request": {
-          "version": "2.87.0",
-          "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
-          "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "aws-sign2": "~0.7.0",
-            "aws4": "^1.6.0",
-            "caseless": "~0.12.0",
-            "combined-stream": "~1.0.5",
-            "extend": "~3.0.1",
-            "forever-agent": "~0.6.1",
-            "form-data": "~2.3.1",
-            "har-validator": "~5.0.3",
-            "http-signature": "~1.2.0",
-            "is-typedarray": "~1.0.0",
-            "isstream": "~0.1.2",
-            "json-stringify-safe": "~5.0.1",
-            "mime-types": "~2.1.17",
-            "oauth-sign": "~0.8.2",
-            "performance-now": "^2.1.0",
-            "qs": "~6.5.1",
-            "safe-buffer": "^5.1.1",
-            "tough-cookie": "~2.3.3",
-            "tunnel-agent": "^0.6.0",
-            "uuid": "^3.1.0"
-          }
+        "nan": {
+          "version": "2.14.1",
+          "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+          "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw=="
         },
         "supports-color": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true,
-          "optional": true
-        },
-        "tough-cookie": {
-          "version": "2.3.4",
-          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
-          "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "punycode": "^1.4.1"
-          }
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
         }
       }
     },
@@ -7501,7 +7495,6 @@
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
       "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
-      "dev": true,
       "requires": {
         "abbrev": "1"
       }
@@ -7573,7 +7566,6 @@
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
       "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-      "optional": true,
       "requires": {
         "are-we-there-yet": "~1.1.2",
         "console-control-strings": "~1.1.0",
@@ -7798,13 +7790,95 @@
       "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
     },
     "os-locale": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+      "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "lcid": "^1.0.0"
+        "execa": "^1.0.0",
+        "lcid": "^2.0.0",
+        "mem": "^4.0.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "6.0.5",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+          "dev": true,
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+          "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^6.0.0",
+            "get-stream": "^4.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+          "dev": true,
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "invert-kv": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+          "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+          "dev": true
+        },
+        "lcid": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+          "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+          "dev": true,
+          "requires": {
+            "invert-kv": "^2.0.0"
+          }
+        },
+        "mem": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+          "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+          "dev": true,
+          "requires": {
+            "map-age-cleaner": "^0.1.1",
+            "mimic-fn": "^2.0.0",
+            "p-is-promise": "^2.0.0"
+          }
+        },
+        "mimic-fn": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+          "dev": true
+        },
+        "pump": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+          "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
       }
     },
     "os-tmpdir": {
@@ -7821,12 +7895,24 @@
         "os-tmpdir": "^1.0.0"
       }
     },
+    "p-defer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+      "dev": true
+    },
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
       "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
       "dev": true
     },
+    "p-is-promise": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+      "dev": true
+    },
     "p-limit": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
@@ -7992,15 +8078,14 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
       "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-      "dev": true,
       "requires": {
         "error-ex": "^1.2.0"
       }
     },
     "parse5": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
-      "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
+      "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
       "optional": true
     },
     "parseqs": {
@@ -8024,7 +8109,8 @@
     "parseurl": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
-      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+      "dev": true
     },
     "pascalcase": {
       "version": "0.1.1",
@@ -8045,8 +8131,7 @@
     "path-exists": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
-      "dev": true
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
     },
     "path-is-absolute": {
       "version": "1.0.1",
@@ -8130,14 +8215,12 @@
     "pinkie": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-      "dev": true
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
     },
     "pinkie-promise": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
       "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true,
       "requires": {
         "pinkie": "^2.0.0"
       }
@@ -8264,9 +8347,9 @@
       }
     },
     "prismjs": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.15.0.tgz",
-      "integrity": "sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA==",
+      "version": "1.21.0",
+      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.21.0.tgz",
+      "integrity": "sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw==",
       "requires": {
         "clipboard": "^2.0.0"
       }
@@ -8309,12 +8392,11 @@
       }
     },
     "protractor": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.0.tgz",
-      "integrity": "sha512-6TSYqMhUUzxr4/wN0ttSISqPMKvcVRXF4k8jOEpGWD8OioLak4KLgfzHK9FJ49IrjzRrZ+Mx1q2Op8Rk0zEcnQ==",
+      "version": "5.4.4",
+      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.4.tgz",
+      "integrity": "sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==",
       "dev": true,
       "requires": {
-        "@types/node": "^6.0.46",
         "@types/q": "^0.0.32",
         "@types/selenium-webdriver": "^3.0.0",
         "blocking-proxy": "^1.0.0",
@@ -8323,21 +8405,33 @@
         "glob": "^7.0.3",
         "jasmine": "2.8.0",
         "jasminewd2": "^2.1.0",
-        "optimist": "~0.6.0",
         "q": "1.4.1",
         "saucelabs": "^1.5.0",
         "selenium-webdriver": "3.6.0",
         "source-map-support": "~0.4.0",
-        "webdriver-js-extender": "2.0.0",
-        "webdriver-manager": "^12.0.6"
+        "webdriver-js-extender": "2.1.0",
+        "webdriver-manager": "^12.0.6",
+        "yargs": "^12.0.5"
       },
       "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
         "ansi-styles": {
           "version": "2.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
           "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
           "dev": true
         },
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+          "dev": true
+        },
         "chalk": {
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
@@ -8351,6 +8445,28 @@
             "supports-color": "^2.0.0"
           }
         },
+        "cliui": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+          "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^2.1.1",
+            "strip-ansi": "^4.0.0",
+            "wrap-ansi": "^2.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
         "del": {
           "version": "2.2.2",
           "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
@@ -8366,6 +8482,15 @@
             "rimraf": "^2.2.8"
           }
         },
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
         "globby": {
           "version": "5.0.0",
           "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
@@ -8380,6 +8505,46 @@
             "pinkie-promise": "^2.0.0"
           }
         },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+          "dev": true,
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "p-try": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+          "dev": true
+        },
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
@@ -8395,6 +8560,27 @@
             "source-map": "^0.5.6"
           }
         },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
         "supports-color": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -8402,9 +8588,9 @@
           "dev": true
         },
         "webdriver-manager": {
-          "version": "12.1.0",
-          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.0.tgz",
-          "integrity": "sha512-oEc5fmkpz6Yh6udhwir5m0eN5mgRPq9P/NU5YWuT3Up5slt6Zz+znhLU7q4+8rwCZz/Qq3Fgpr/4oao7NPCm2A==",
+          "version": "12.1.7",
+          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz",
+          "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==",
           "dev": true,
           "requires": {
             "adm-zip": "^0.4.9",
@@ -8419,16 +8605,46 @@
             "semver": "^5.3.0",
             "xml2js": "^0.4.17"
           }
+        },
+        "yargs": {
+          "version": "12.0.5",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+          "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^3.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1 || ^4.0.0",
+            "yargs-parser": "^11.1.1"
+          }
+        },
+        "yargs-parser": {
+          "version": "11.1.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+          "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
         }
       }
     },
     "proxy-addr": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
-      "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
+      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
       "requires": {
         "forwarded": "~0.1.2",
-        "ipaddr.js": "1.8.0"
+        "ipaddr.js": "1.9.1"
       }
     },
     "proxy-agent": {
@@ -8476,8 +8692,7 @@
     "pseudomap": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "dev": true
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
     },
     "psl": {
       "version": "1.1.29",
@@ -8597,12 +8812,14 @@
     "range-parser": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+      "dev": true
     },
     "raw-body": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
       "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+      "dev": true,
       "requires": {
         "bytes": "3.0.0",
         "http-errors": "1.6.2",
@@ -8613,12 +8830,14 @@
         "depd": {
           "version": "1.1.1",
           "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
-          "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
+          "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+          "dev": true
         },
         "http-errors": {
           "version": "1.6.2",
           "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
           "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+          "dev": true,
           "requires": {
             "depd": "1.1.1",
             "inherits": "2.0.3",
@@ -8629,7 +8848,8 @@
         "setprototypeof": {
           "version": "1.0.3",
           "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
-          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
+          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+          "dev": true
         }
       }
     },
@@ -8672,7 +8892,6 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
       "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-      "dev": true,
       "requires": {
         "load-json-file": "^1.0.0",
         "normalize-package-data": "^2.3.2",
@@ -8683,7 +8902,6 @@
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
           "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-          "dev": true,
           "requires": {
             "graceful-fs": "^4.1.2",
             "pify": "^2.0.0",
@@ -8693,8 +8911,7 @@
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
         }
       }
     },
@@ -8702,7 +8919,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
       "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-      "dev": true,
       "requires": {
         "find-up": "^1.0.0",
         "read-pkg": "^1.0.0"
@@ -8712,7 +8928,6 @@
           "version": "1.1.2",
           "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
           "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-          "dev": true,
           "requires": {
             "path-exists": "^2.0.0",
             "pinkie-promise": "^2.0.0"
@@ -8722,7 +8937,6 @@
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
           "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-          "dev": true,
           "requires": {
             "pinkie-promise": "^2.0.0"
           }
@@ -8758,7 +8972,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
       "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-      "dev": true,
       "requires": {
         "indent-string": "^2.1.0",
         "strip-indent": "^1.0.1"
@@ -8928,7 +9141,6 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
       "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-      "dev": true,
       "requires": {
         "is-finite": "^1.0.0"
       }
@@ -8985,8 +9197,7 @@
     "require-directory": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
     },
     "require-from-string": {
       "version": "2.0.2",
@@ -9058,7 +9269,6 @@
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
       "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
-      "dev": true,
       "requires": {
         "glob": "^7.0.5"
       }
@@ -9083,9 +9293,9 @@
       }
     },
     "rxjs": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
-      "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz",
+      "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==",
       "requires": {
         "tslib": "^1.9.0"
       }
@@ -9109,74 +9319,141 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
     },
     "sass-graph": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
-      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
-      "dev": true,
-      "optional": true,
+      "version": "2.2.5",
+      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+      "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
       "requires": {
         "glob": "^7.0.0",
         "lodash": "^4.0.0",
         "scss-tokenizer": "^0.2.3",
-        "yargs": "^7.0.0"
+        "yargs": "^13.3.2"
       },
       "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+        },
         "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true,
-          "optional": true
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
         },
         "cliui": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-          "dev": true,
-          "optional": true,
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
           "requires": {
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wrap-ansi": "^2.0.0"
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
           }
         },
-        "y18n": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-          "dev": true,
-          "optional": true
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "p-try": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+        },
+        "require-main-filename": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        },
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          }
         },
         "yargs": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
-          "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
-          "dev": true,
-          "optional": true,
+          "version": "13.3.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
           "requires": {
-            "camelcase": "^3.0.0",
-            "cliui": "^3.2.0",
-            "decamelize": "^1.1.1",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^1.4.0",
-            "read-pkg-up": "^1.0.1",
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
             "require-directory": "^2.1.1",
-            "require-main-filename": "^1.0.1",
+            "require-main-filename": "^2.0.0",
             "set-blocking": "^2.0.0",
-            "string-width": "^1.0.2",
-            "which-module": "^1.0.0",
-            "y18n": "^3.2.1",
-            "yargs-parser": "^5.0.0"
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
           }
         },
         "yargs-parser": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
-          "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
-          "dev": true,
-          "optional": true,
+          "version": "13.1.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
           "requires": {
-            "camelcase": "^3.0.0"
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
           }
         }
       }
@@ -9224,8 +9501,6 @@
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
       "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
-      "dev": true,
-      "optional": true,
       "requires": {
         "js-base64": "^2.1.8",
         "source-map": "^0.4.2"
@@ -9235,8 +9510,6 @@
           "version": "0.4.4",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
           "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
-          "dev": true,
-          "optional": true,
           "requires": {
             "amdefine": ">=0.0.4"
           }
@@ -9319,9 +9592,9 @@
       }
     },
     "send": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
-      "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
       "requires": {
         "debug": "2.6.9",
         "depd": "~1.1.2",
@@ -9330,12 +9603,56 @@
         "escape-html": "~1.0.3",
         "etag": "~1.8.1",
         "fresh": "0.5.2",
-        "http-errors": "~1.6.2",
-        "mime": "1.4.1",
-        "ms": "2.0.0",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
         "on-finished": "~2.3.0",
-        "range-parser": "~1.2.0",
-        "statuses": "~1.4.0"
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "http-errors": {
+          "version": "1.7.3",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+          "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.4",
+            "setprototypeof": "1.1.1",
+            "statuses": ">= 1.5.0 < 2",
+            "toidentifier": "1.0.0"
+          }
+        },
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+          "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+        },
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "setprototypeof": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+          "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+        },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+        }
       }
     },
     "serialize-javascript": {
@@ -9360,14 +9677,21 @@
       }
     },
     "serve-static": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
-      "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
       "requires": {
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
-        "parseurl": "~1.3.2",
-        "send": "0.16.2"
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      },
+      "dependencies": {
+        "parseurl": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+          "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+        }
       }
     },
     "set-blocking": {
@@ -9410,7 +9734,8 @@
     "setprototypeof": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+      "dev": true
     },
     "sha.js": {
       "version": "2.4.11",
@@ -9491,9 +9816,9 @@
       "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
     },
     "slugify": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.1.tgz",
-      "integrity": "sha512-6BwyhjF5tG5P8s+0DPNyJmBSBePG6iMyhjvIW5zGdA3tFik9PtK+yNkZgTeiroCRGZYgkHftFA62tGVK1EI9Kw=="
+      "version": "1.4.5",
+      "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.5.tgz",
+      "integrity": "sha512-WpECLAgYaxHoEAJ8Q1Lo8HOs1ngn7LN7QjXgOLbmmfkcWvosyk4ZTXkTzKyhngK640USTZUlgoQJfED1kz5fnQ=="
     },
     "smart-buffer": {
       "version": "1.1.15",
@@ -9936,14 +10261,13 @@
     "statuses": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+      "dev": true
     },
     "stdout-stream": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
-      "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
-      "dev": true,
-      "optional": true,
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+      "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
       "requires": {
         "readable-stream": "^2.0.1"
       }
@@ -10047,7 +10371,6 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
       "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-      "dev": true,
       "requires": {
         "is-utf8": "^0.2.0"
       }
@@ -10062,7 +10385,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
       "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-      "dev": true,
       "requires": {
         "get-stdin": "^4.0.1"
       }
@@ -10153,14 +10475,12 @@
       "dev": true
     },
     "tar": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
-      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
-      "dev": true,
-      "optional": true,
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+      "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
       "requires": {
         "block-stream": "*",
-        "fstream": "^1.0.2",
+        "fstream": "^1.0.12",
         "inherits": "2"
       }
     },
@@ -10231,9 +10551,9 @@
       "optional": true
     },
     "tiny-emitter": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz",
-      "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+      "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
       "optional": true
     },
     "tmp": {
@@ -10301,6 +10621,11 @@
         "repeat-string": "^1.6.1"
       }
     },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+    },
     "toposort": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
@@ -10332,8 +10657,7 @@
     "trim-newlines": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
-      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-      "dev": true
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
     },
     "trim-right": {
       "version": "1.0.1",
@@ -10342,29 +10666,11 @@
       "dev": true
     },
     "true-case-path": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
-      "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
-      "dev": true,
-      "optional": true,
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+      "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
       "requires": {
-        "glob": "^6.0.4"
-      },
-      "dependencies": {
-        "glob": {
-          "version": "6.0.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
-          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "2 || 3",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        }
+        "glob": "^7.1.2"
       }
     },
     "ts-node": {
@@ -10521,6 +10827,7 @@
       "version": "1.6.16",
       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
       "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+      "dev": true,
       "requires": {
         "media-typer": "0.3.0",
         "mime-types": "~2.1.18"
@@ -10988,9 +11295,9 @@
       }
     },
     "web-animations-js": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/web-animations-js/-/web-animations-js-2.3.1.tgz",
-      "integrity": "sha1-Om2bwVGWN3qQ+OKAP6UmIWWwRRA="
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/web-animations-js/-/web-animations-js-2.3.2.tgz",
+      "integrity": "sha512-TOMFWtQdxzjWp8qx4DAraTWTsdhxVSiWa6NkPFSaPtZ1diKUxTn4yTix73A1euG1WbSOMMPcY51cnjTIHrGtDA=="
     },
     "webassemblyjs": {
       "version": "1.4.3",
@@ -11006,9 +11313,9 @@
       }
     },
     "webdriver-js-extender": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.0.0.tgz",
-      "integrity": "sha512-fbyKiVu3azzIc5d4+26YfuPQcFTlgFQV5yQ/0OQj4Ybkl4g1YQuIPskf5v5wqwRJhHJnPHthB6tqCjWHOKLWag==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz",
+      "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==",
       "dev": true,
       "requires": {
         "@types/selenium-webdriver": "^3.0.0",
@@ -11323,23 +11630,19 @@
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
       "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "dev": true,
       "requires": {
         "isexe": "^2.0.0"
       }
     },
     "which-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
-      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
-      "dev": true,
-      "optional": true
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
     },
     "wide-align": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
       "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
-      "optional": true,
       "requires": {
         "string-width": "^1.0.2 || 2"
       }
@@ -11459,13 +11762,13 @@
       "dev": true
     },
     "xml2js": {
-      "version": "0.4.19",
-      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
-      "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+      "version": "0.4.23",
+      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
       "dev": true,
       "requires": {
         "sax": ">=0.6.0",
-        "xmlbuilder": "~9.0.1"
+        "xmlbuilder": "~11.0.0"
       },
       "dependencies": {
         "sax": {
@@ -11477,9 +11780,9 @@
       }
     },
     "xmlbuilder": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
-      "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+      "version": "11.0.1",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
       "dev": true
     },
     "xmlhttprequest-ssl": {
@@ -11513,14 +11816,12 @@
     "y18n": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
-      "dev": true
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
     },
     "yallist": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-      "dev": true
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
     },
     "yargs": {
       "version": "3.10.0",
@@ -11568,9 +11869,9 @@
       }
     },
     "zone.js": {
-      "version": "0.8.26",
-      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz",
-      "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA=="
+      "version": "0.8.29",
+      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz",
+      "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ=="
     }
   }
 }
diff --git a/package.json b/package.json
index 88923fc1f9ebf41e3625097cfa30d7d8e9742dd1..7017524ed15d4530dfe73ca58e3d90b904db58ba 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
   },
   "private": true,
   "dependencies": {
-    "@agm/core": "^1.0.0-beta.3",
+    "@agm/core": "^1.0.0",
     "@angular/animations": "6.0.4",
     "@angular/cdk": "^6.2.1",
     "@angular/cli": "6.0.8",
@@ -21,35 +21,37 @@
     "@angular/compiler": "6.0.4",
     "@angular/compiler-cli": "6.0.4",
     "@angular/core": "6.0.4",
+    "@angular/flex-layout": "^10.0.0-beta.32",
     "@angular/forms": "6.0.4",
     "@angular/http": "6.0.4",
-    "@angular/material": "^6.2.1",
-    "@angular/material-moment-adapter": "^6.3.0",
+    "@angular/material": "^6.4.7",
+    "@angular/material-moment-adapter": "^6.4.7",
     "@angular/platform-browser": "6.0.4",
     "@angular/platform-browser-dynamic": "6.0.4",
     "@angular/router": "6.0.4",
     "autoprefixer": "^8.6.2",
     "core-js": "^2.5.7",
-    "express": "^4.16.3",
-    "fuse.js": "^3.2.0",
+    "express": "^4.17.1",
+    "fuse.js": "^3.2.1",
     "hammerjs": "^2.0.8",
     "jump.js": "^1.0.2",
     "ng2-emoji": "^0.2.0",
-    "ngx-markdown": "^6.0.1",
+    "ngx-markdown": "^6.3.0",
     "ngx-moment": "^2.0.0",
+    "node-sass": "^4.14.1",
     "remove-markdown": "^0.2.2",
-    "rxjs": "^6.2.0",
-    "slugify": "^1.3.0",
+    "rxjs": "^6.0.0",
+    "slugify": "^1.4.5",
     "typescript": "2.7.2",
-    "web-animations-js": "^2.3.1",
-    "zone.js": "^0.8.26"
+    "web-animations-js": "^2.3.2",
+    "zone.js": "^0.8.29"
   },
   "devDependencies": {
     "@angular-devkit/build-angular": "~0.6.8",
     "@types/jasmine": "2.5.38",
-    "@types/node": "~6.0.60",
+    "@types/node": "^6.0.118",
     "codelyzer": "~2.0.0",
-    "enhanced-resolve": "^4.0.0",
+    "enhanced-resolve": "^4.3.0",
     "jasmine-core": "~2.5.2",
     "jasmine-spec-reporter": "~3.2.0",
     "karma": "^2.0.2",
@@ -58,7 +60,7 @@
     "karma-coverage-istanbul-reporter": "^0.2.0",
     "karma-jasmine": "~1.1.0",
     "karma-jasmine-html-reporter": "^0.2.2",
-    "protractor": "^5.3.2",
+    "protractor": "^5.4.4",
     "ts-node": "~2.0.0",
     "tslint": "~4.5.0"
   },
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index ebc3214ce91830b8876620d274fce13fb9918781..a9a0140c340e79b1933bd9476dc669568f79a763 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -1,6 +1,8 @@
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
 import { LoginComponent } from './login/login.component';
+import { ResetComponent } from './reset/reset.component';
+import { ResetConfirmComponent} from './reset-confirm/reset-confirm.component';
 import { UiGalleryComponent } from './shared';
 import { InternalErrorComponent, NotFoundComponent, AuthGuard, MapsAPIResolver } from './core';
 
@@ -23,6 +25,14 @@ const routes: Routes = [
     path: 'inscription',
     loadChildren: './signup/signup.module#SignupModule',
   },
+  {
+    path: 'reinitialiser_mdp',
+    component: ResetComponent,
+  },
+  {
+    path: 'rest-auth/password/reset/confirm/:uid/:token',
+    component: ResetConfirmComponent,
+  },
   {
     path: '500',
     component: InternalErrorComponent,
diff --git a/src/app/app.component.css b/src/app/app.component.css
index fc2b98b5d8a2ff2a62b4af4667905278e9d2bd7f..df02f47cc0afc6e6c58709b3bbebe489e625a7b1 100644
--- a/src/app/app.component.css
+++ b/src/app/app.component.css
@@ -4,3 +4,4 @@
   left: 0;
   width: 100vw;
 }
+ 
\ No newline at end of file
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 0a79000a449f1af148df3ee14ff6526719bb1653..2210e3c5d6d1421d7764bfea30907dd5b0383454 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -14,6 +14,7 @@ import { MomentModule } from 'ngx-moment';
 import {
   MatFormFieldModule,
   MatInputModule,
+  MatOptionModule,
   MatSelectModule,
   MatButtonModule,
   MatRadioModule,
@@ -34,6 +35,8 @@ import { LoginComponent } from './login/login.component';
 
 // Services
 import { MessageService } from './core';
+import { ResetComponent } from './reset/reset.component';
+import { ResetConfirmComponent } from './reset-confirm/reset-confirm.component';
 
 registerLocaleData(localeFR);
 
@@ -41,6 +44,8 @@ registerLocaleData(localeFR);
   declarations: [
     AppComponent,
     LoginComponent,
+    ResetComponent,
+    ResetConfirmComponent,
   ],
   imports: [
     BrowserModule,
@@ -56,6 +61,7 @@ registerLocaleData(localeFR);
     AppRoutingModule,
     MatFormFieldModule,
     MatInputModule,
+    MatOptionModule,
     MatSelectModule,
     MatRadioModule,
     MatButtonModule,
diff --git a/src/app/core/auth/auth.service.ts b/src/app/core/auth/auth.service.ts
index 52cec91f2858e664101be6c9b098f2babbfa341f..e7c506f92a021ccc02772f55aaef1367b4bca067 100644
--- a/src/app/core/auth/auth.service.ts
+++ b/src/app/core/auth/auth.service.ts
@@ -19,6 +19,8 @@ class StoredToken extends SimpleStoredItem { key = 'oser-cs-user-token'; }
 export class AuthService {
 
   private loginUrl = environment.apiUrl + 'auth/get-token/';
+  private resetUrl = environment.apiUrl + 'rest-auth/password/reset/';
+  private resetConfirmUrl = environment.apiUrl + 'rest-auth/password/reset/confirm/';
 
   fromGuard: boolean;
   redirectUrl: string;
@@ -45,6 +47,20 @@ export class AuthService {
     );
   }
 
+  reset(email: string): Observable<boolean> {
+    console.log("reset function of auth service");
+    return this.http.post<any>(this.resetUrl, { email }).pipe(
+      map(() => true),
+    );
+  }
+
+  resetConfirm(uid: string, token: string, new_password1: string, new_password2: string): Observable<boolean> {
+    console.log("reset confirm function");
+    return this.http.post<any>(this.resetConfirmUrl, { uid, token, new_password1, new_password2 }).pipe(
+      map(() => true),
+    );
+  }  
+
   redirectLogin() {
     this.router.navigate(['/connexion']);
   }
diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html
index b670f762fb31e0e809b67eb7f1d557f6348edb46..58676ecb6fbf8c1b8c108b7f3414a7fbd5c3821a 100644
--- a/src/app/login/login.component.html
+++ b/src/app/login/login.component.html
@@ -19,7 +19,9 @@
         Se connecter <i *ngIf="loading" class="fa fa-spinner fa-pulse"></i>
       </button>
     </div>
-
+    <div class="text-center">
+      <br>
+      <a routerLink="/reinitialiser_mdp">Mot de passe oublié ?</a></div>
   </form>
 
   <messages></messages>
@@ -28,4 +30,4 @@
     Ou crée ton
     <a routerLink="/inscription">compte tutoré</a>
   </p>
-</app-form-page>
+</app-form-page>
\ No newline at end of file
diff --git a/src/app/members/account/account-routing.module.ts b/src/app/members/account/account-routing.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..64390455f1a502e50d69d835ec51f0cfb2bb630f
--- /dev/null
+++ b/src/app/members/account/account-routing.module.ts
@@ -0,0 +1,45 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+
+//Components
+import { AccountComponent } from './account.component';
+import {MyDataComponent} from './my-data/my-data.component'
+import {EditDataComponent} from './edit-data/edit-data.component'
+import {MyFileComponent} from './my-file/my-file.component'
+import { PersonalDataResolver } from './core'
+
+
+const routes: Routes = [
+  {
+    path: '',
+    data: { title: 'Mon Compte' },
+    component: AccountComponent,
+    children: [
+      {
+        path: 'donnees', 
+        component: MyDataComponent,
+        resolve : {
+          'personalData' : PersonalDataResolver
+        },
+        
+      },
+      {
+        path: 'modifier_donnees', component: EditDataComponent,
+        resolve : {
+          'personalData' : PersonalDataResolver
+        },
+        
+      },
+      // {
+      //   path: 'mon_dossier', component: MyFileComponent,
+
+      // }
+    ],
+  },
+];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule]
+})
+export class AccountRoutingModule { }
diff --git a/src/app/members/account/account.component.html b/src/app/members/account/account.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..1838fd558330eb6d2434d9755057ec145526e316
--- /dev/null
+++ b/src/app/members/account/account.component.html
@@ -0,0 +1,8 @@
+<h1 class="text-center">Mon Compte</h1>
+<div class="centered-links">
+    <app-nav-group [links]="navLinks" theme="blue"   [theme]="theme"></app-nav-group>
+</div>
+
+<messages></messages>
+<router-outlet></router-outlet>
+
diff --git a/src/app/members/account/account.component.scss b/src/app/members/account/account.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..0ac99de35c01c69a3f9e14ff94ed4e4d521d6a75
--- /dev/null
+++ b/src/app/members/account/account.component.scss
@@ -0,0 +1,38 @@
+@import '~app/showcase-site/sass/mixins';
+
+#page {
+  @include margin-page;
+}
+
+$grid-gap: 1em;
+
+ul.tabs {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+  display: flex;
+  flex-flow: row;
+  justify-content: space-around;
+  
+  text-align: center;
+  margin-bottom: 2em;
+  li {
+    padding: 1em;
+    cursor: pointer;
+    color: $color-muted;
+    font-weight: bold;
+    &:hover {
+      color: $color-text;
+    }
+    &.active {
+      color: $color-dark-blue;
+    }
+  }
+  border-bottom: 1px solid $color-light-gray;
+}
+
+.centered-links{
+  display:flex;
+  flex-direction: row;
+  justify-content: space-around;
+}
\ No newline at end of file
diff --git a/src/app/members/account/account.component.ts b/src/app/members/account/account.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b16b9250c03c4ac5ac5d15fb0026945dc5ca0cd4
--- /dev/null
+++ b/src/app/members/account/account.component.ts
@@ -0,0 +1,24 @@
+import { Component, OnInit,Input } from '@angular/core';
+import { Router } from '@angular/router';
+import { Link } from 'app/shared';
+
+@Component({
+  selector: 'app-account',
+  templateUrl: './account.component.html',
+  styleUrls: ['./account.component.scss']
+})
+export class AccountComponent implements OnInit {
+  @Input() theme: string;
+  constructor( private router: Router ) { }
+  
+  navLinks: Link[] = [
+    { href: './donnees', text: 'Mes données' },
+    { href: './modifier_donnees', text: 'Modifier mes données' },
+    //{ href: './mon_dossier', text: 'Mon dossier' },
+    
+  ];
+  ngOnInit() {
+    this.router.navigate(['./membres/compte/modifier_donnees'])
+  }
+
+}
diff --git a/src/app/members/account/account.module.ts b/src/app/members/account/account.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8d19200616ce6f02f7b5efd89ca1c32656396091
--- /dev/null
+++ b/src/app/members/account/account.module.ts
@@ -0,0 +1,80 @@
+import { NgModule } from '@angular/core';
+
+
+// Modules
+import { CommonModule } from '@angular/common';
+import { FormsModule, ReactiveFormsModule} from '@angular/forms';
+import { RouterModule } from '@angular/router';
+import { AgmCoreModule } from '@agm/core';
+import { MomentModule } from 'ngx-moment';
+import { CoreModule } from 'app/core';
+import { SharedModule } from 'app/shared';
+import { AccountRoutingModule } from './account-routing.module';
+
+import {
+  MatFormFieldModule,
+  MatInputModule,
+  MatSelectModule,
+  MatButtonModule,
+  MatSnackBarModule,
+  MatCheckboxModule,
+  MatIconModule,
+  MatSlideToggleModule,
+  MatTableModule,
+  MatDividerModule,
+  MatProgressBarModule,
+  MatDialogModule,
+  MatListModule,
+  
+} from '@angular/material';
+
+// Components
+import {AccountComponent} from './account.component'
+import {MyDataComponent} from './my-data/my-data.component'
+import {EditDataComponent} from './edit-data/edit-data.component'
+import {MyFileComponent} from './my-file/my-file.component'
+import {UploadComponent} from './upload/upload.component'
+import {  StudentChartDialogComponent } from './upload/dialog/studentChartDialog.component'
+import {ImageRightsDialogComponent} from './upload/dialog/imageRightsDialog.component'
+import {ParentalAuthDialogComponent} from './upload/dialog/parentalAuthDialog.component'
+@NgModule({
+  imports: [
+    CommonModule,
+    FormsModule,
+    MomentModule,
+    RouterModule,
+    AgmCoreModule,
+    CoreModule,
+    SharedModule,
+    AccountRoutingModule,
+    ReactiveFormsModule,
+    // Material
+    MatFormFieldModule,
+    MatSelectModule,
+    MatInputModule,
+    MatButtonModule,
+    MatSnackBarModule,
+    MatCheckboxModule,
+    MatIconModule,
+    MatSlideToggleModule,
+    MatTableModule,
+    MatDividerModule,
+    MatProgressBarModule,
+    MatButtonModule,
+    MatDialogModule,
+    MatListModule,
+    
+  ],
+  declarations: [
+    AccountComponent,
+    MyDataComponent,
+    EditDataComponent,
+    MyFileComponent,
+    UploadComponent,
+    ParentalAuthDialogComponent,
+    ImageRightsDialogComponent,
+    StudentChartDialogComponent
+  ],
+  entryComponents:[ParentalAuthDialogComponent,ImageRightsDialogComponent,StudentChartDialogComponent]
+})
+export class AccountModule { }
diff --git a/src/app/members/account/core/index.ts b/src/app/members/account/core/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..93715acac06af7dd80f8a27a25ad5d95ca04bf7f
--- /dev/null
+++ b/src/app/members/account/core/index.ts
@@ -0,0 +1,2 @@
+export * from './personal-data.model';
+export * from './personal-data.service';
diff --git a/src/app/members/account/core/personal-data.model.ts b/src/app/members/account/core/personal-data.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..468eaa426b60e27c22ac48778cbd8ac1f53775be
--- /dev/null
+++ b/src/app/members/account/core/personal-data.model.ts
@@ -0,0 +1,93 @@
+import { User, UserAdapter, IAdapter } from 'app/core';
+
+export class PersonalDataSchema {
+    
+    
+    user_id: string;
+    url : string;
+    firstName:string;
+    lastName: string;
+    gender: string;
+    nationality: string;
+    addressNumber:number;
+    street:string;
+    zipCode:number;
+    city:string;
+    personalPhone:string;
+    parentsPhone:string;
+    parentsEmail:string;
+    school:string;
+    grade:string;
+    classType:string;
+    specialTeaching:string;
+    scholarship:string;
+    fatherActivity:string;
+    motherActivity:string;
+    parentsStatus:string;
+    dependantsNumber:number;
+}
+
+export class PersonalData extends PersonalDataSchema {
+
+  constructor(args: PersonalDataSchema) {
+    super();
+    Object.assign(this, args);
+  }
+}
+
+export class PersonalDataAdapter implements IAdapter<PersonalData> {
+
+    private userAdapter = new UserAdapter();
+
+  adapt(data: any): PersonalData {
+    return new PersonalData({
+        url : data.url,
+        user_id: data.user_id,
+        firstName: data.user.first_name,
+        lastName: data.user.last_name,
+        gender: data.gender?data.gender:'',
+        nationality : data.nationality?data.nationality:'',
+        addressNumber: data.addressNumber?data.addressNumber:'',
+        street:data.street?data.street:'',
+        zipCode:data.zipCode?data.zipCode:'',
+        city:data.city?data.city:'',
+        personalPhone:data.personalPhone?data.personalPhone:'',
+        parentsPhone:data.parentsPhone?data.parentsPhone:'',
+        parentsEmail:data.parentsEmail?data.parentsEmail:'',
+        school:data.school?data.school:'',
+        grade:data.grade?data.grade:'',
+        classType : data.classType?data.classType:'',
+        specialTeaching:data.specialTeaching?data.specialTeaching:'',
+        scholarship:data.scholarship?data.scholarship:'',
+        fatherActivity:data.fatherActivity?data.fatherActivity:'',
+        motherActivity:data.motherActivity?data.motherActivity:'',
+        parentsStatus:data.parentsStatus?data.parentsStatus:'',
+        dependantsNumber:data.dependantsNumber?data.dependantsNumber:''
+    });
+  }
+
+  encode(obj: PersonalData): any {
+    return {
+        user_id: obj.user_id,
+        url : obj.url,
+        gender: obj.gender,
+        nationality: obj.nationality,
+        addressNumber: obj.addressNumber,
+        street:obj.street,
+        zipCode:obj.zipCode,
+        city:obj.city,
+        personalPhone:obj.personalPhone,
+        parentsPhone:obj.parentsPhone,
+        parentsEmail:obj.parentsEmail,
+        school:obj.school,
+        grade:obj.grade,
+        classType:obj.classType,
+        specialTeaching:obj.specialTeaching,
+        scholarship:obj.scholarship,
+        fatherActivity:obj.fatherActivity,
+        motherActivity:obj.motherActivity,
+        parentsStatus:obj.parentsStatus,
+        dependantsNumber:obj.dependantsNumber
+    }
+  }
+}
diff --git a/src/app/members/account/core/personal-data.service.ts b/src/app/members/account/core/personal-data.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c5bf690deafbd8fca4db32385c14387391b0a667
--- /dev/null
+++ b/src/app/members/account/core/personal-data.service.ts
@@ -0,0 +1,76 @@
+import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { Resolve,ActivatedRouteSnapshot } from '@angular/router';
+import { Observable, of, forkJoin } from 'rxjs';
+import { tap, map, filter,catchError } from 'rxjs/operators';
+import { ApiService, AuthService,} from 'app/core';
+import {PersonalDataAdapter,PersonalData} from './personal-data.model'
+
+
+@Injectable({
+  providedIn: 'root'
+})
+export class PersonalDataService extends ApiService {
+
+  //api url
+  private baseUrl = this.apiUrl + 'students';
+  private adapter = new PersonalDataAdapter();
+
+  constructor(
+    private http: HttpClient,
+    private auth: AuthService
+  ) { super();  }
+
+  //get personalData by user
+   get(filters: any): Observable<PersonalData> {
+    const url = this.baseUrl;
+    return this.http.get(url, { params: filters }).pipe(
+      map((data: any) => {
+        
+        return data.map(item => this.adapter.adapt(item))}),
+    );
+  }
+  retrieve(id: number | string): Observable<PersonalData> {
+    let url = this.baseUrl;
+    return this.http.get<PersonalData>(url).pipe(
+      map(v =>{
+        if(v instanceof Array){
+          if (v.length>1){
+            return this.adapter.adapt(v.find((user)=>user.user_id===id))
+          }
+          return  this.adapter.adapt(v[0])
+        }
+        
+        }),
+    );
+  }
+
+  forUser(userId: number): Observable<PersonalData> {
+    return this.get({ user_id: String(userId)});
+  }
+  //edit personalData for a user
+  edit(personalData: PersonalData): Observable<any> {
+    
+    const body: any = this.adapter.encode(personalData);
+    return this.http.put(personalData.url, body);
+  }  
+}
+
+@Injectable({
+    providedIn: 'root'
+  })
+export class PersonalDataResolver implements Resolve<PersonalData>{
+    
+    constructor(private service: PersonalDataService, private auth: AuthService) { }
+  //fetch user
+  
+    resolve(route: ActivatedRouteSnapshot): Observable<PersonalData> {
+      const user = this.auth.getUserSnapshot();
+      return this.service.retrieve(user.id).pipe(
+        catchError(e => of(null))
+      );
+    
+  }
+}
+
+
diff --git a/src/app/members/account/edit-data/edit-data.component.html b/src/app/members/account/edit-data/edit-data.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..faf76ca44b3114ffa8696554d857b62676649659
--- /dev/null
+++ b/src/app/members/account/edit-data/edit-data.component.html
@@ -0,0 +1,159 @@
+<app-form-page>
+    <form [formGroup]="formGroup" (ngSubmit)="submit()">
+        <h2>Modifier mes données personnelles</h2>
+        <p class="text-center">Informations personnelles</p>
+        <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="firstName" placeholder="Prénom" required>
+        </mat-form-field>
+        <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="lastName" placeholder="Nom" required>
+          </mat-form-field>
+        
+          <div class="form-group">
+            <mat-form-field class="horizontal-display">
+              <mat-label>Sexe</mat-label>
+              <mat-select  formControlName="gender" required>
+                <mat-option value="Homme">Homme</mat-option>
+                <mat-option value="Femme" >Femme</mat-option>
+                <mat-option value="Autre">Autre</mat-option>
+              </mat-select>
+            </mat-form-field>
+            <mat-form-field class="horizontal-display" >
+              <input matInput   type="text" formControlName="nationality" placeholder="Nationalité" required>
+            </mat-form-field>
+          </div>
+          
+          <p class="text-center">Adresse</p>
+          <div class="form-group">
+            <mat-form-field class="full-width address-input quarter-display">
+              <input matInput type="text"  formControlName="addressNumber" placeholder="Numéro de rue" required>
+            </mat-form-field>
+            <mat-form-field class="full-width address-input">
+              <input  matInput  type="text" formControlName="street" placeholder="Rue" required>
+            </mat-form-field>
+          </div>
+          
+          <div class="form-group">
+            <mat-form-field class="full-width address-input quarter-display">
+              <input matInput type="text" minlength="5" maxlength="5" formControlName="zipCode" placeholder="Code postal" required>
+              <mat-error *ngIf="formGroup.controls['city'].hasError('pattern')">
+                Vous devez rentrer un code postal correct
+              </mat-error>
+            </mat-form-field>
+        
+            <mat-form-field class="full-width address-input" >
+              <input matInput   type="text" formControlName="city" placeholder="Ville" required>
+            </mat-form-field>
+          </div>
+          <p class="text-center">Informations de contact</p>
+          <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="personalPhone" placeholder="Numéro de téléphone personnel" required>
+          </mat-form-field>
+          <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="parentsPhone" placeholder="Numéro de téléphone des parents" required>
+          </mat-form-field>
+    
+          <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="parentsEmail" placeholder="Email des parents" required>
+          </mat-form-field>
+    
+          <p class="text-center">Informations scolaires</p>
+    
+          <mat-form-field class="full-width" >
+            <mat-label>Etablissement </mat-label>
+            <mat-select  formControlName="school" required>
+              <mat-option *ngFor="let school of possibleSchools" [value]="school.id">{{ school.name }}</mat-option>
+            </mat-select>
+          </mat-form-field>
+          <mat-form-field class="full-width" >
+            <input matInput required   type="text" formControlName="specialTeaching" placeholder="Enseignements de spécialité (entrer 'aucun' si jamais vous n'etes pas concerné)" >
+          </mat-form-field>
+          <div class="form-group">
+            <mat-form-field class="horizontal-display">
+              <mat-label>Classe</mat-label>
+              <mat-select  formControlName="grade" required>
+                <mat-option value="troisieme">Troisième</mat-option>
+                <mat-option value="seconde">Seconde</mat-option>
+                <mat-option value="premiere" >Première</mat-option>
+                <mat-option value="terminale">Terminale</mat-option>
+              </mat-select>
+            </mat-form-field>
+
+            <mat-form-field class="horizontal-display horizontal-center">
+              <mat-label>Voie</mat-label>
+              <mat-select  formControlName="classType" required>
+                <mat-option value="General">General</mat-option>
+                <mat-option value="Technologique">Technologique</mat-option>
+              </mat-select>
+            </mat-form-field>
+            
+            <mat-form-field class="horizontal-display"> 
+              <mat-label>Boursier </mat-label>
+              <mat-select  formControlName="scholarship" required>
+                <mat-option *ngFor="let scholarship of possibleScholarships" [value]="scholarship.id">{{ scholarship.name }}</mat-option>
+              </mat-select>
+            </mat-form-field>
+            
+          </div>
+           
+          
+         
+          <p class="text-center">Informations parentales</p>  
+          <div class="form-group">
+            <mat-form-field class="horizontal-display">
+              <mat-label>Activité de la mère </mat-label>
+              <mat-select  formControlName="motherActivity" required>
+                <mat-option *ngFor="let activity of possibleParentsActivities" [value]="activity.id">{{ activity.name }}</mat-option>
+              </mat-select>
+            </mat-form-field>
+      
+            <mat-form-field class="horizontal-display">
+              <mat-label>Activité du père </mat-label>
+              <mat-select  formControlName="fatherActivity" required>
+                <mat-option *ngFor="let activity of possibleParentsActivities" [value]="activity.id">{{ activity.name }}</mat-option>
+              </mat-select>
+            </mat-form-field>
+          </div>
+          
+          <div class="form-group">
+            <mat-form-field class="horizontal-display">
+              <mat-label>Statut des parents </mat-label>
+              <mat-select formControlName="parentsStatus" required >
+                <mat-option *ngFor="let status of possibleParentsStatus" [value]="status.id">{{ status.name }}</mat-option>
+              </mat-select>
+            </mat-form-field>
+      
+            <mat-form-field class="horizontal-display" >
+              <input matInput   type="number" formControlName="dependantsNumber" placeholder="Nombre de personnes à charge" required>
+            </mat-form-field>
+          </div>
+          <p>
+            <small>
+              Données personnelles : nous utiliserons les données fournies pour assurer le contact avec toi et ta famille,
+              équilibrer les participations aux activités organisées ainsi qu'à des fins d'aggrégation anonymisée
+              (statistiques, demandes de subvention). Plus d'informations dans nos <a routerLink="/mentions-legales"
+                target="_blank">mentions légales</a>.
+            </small>
+          </p>
+      
+          <p>
+            J'accepte qu'OSER utilise mes données personnelles fournies ci-dessus ou dans le formulaire d'inscription
+            administrative, dans le strict respect du cadre spécifié ci-dessus :
+          </p>
+      
+          <mat-checkbox class="checkbox-field" formControlName="acceptedConditions" required >
+            J'accepte cette utilisation
+          </mat-checkbox>
+        
+          <div class="text-center">
+            <button mat-raised-button color="primary" [disabled]="!formGroup.valid || loading">
+              Modifier
+              <app-load-spinner *ngIf="loading" [block]="false"></app-load-spinner>
+            </button>
+          </div>
+          <p class="text-center">{{error}}</p>
+          <p class="text-center post-edit-text">{{postEditMessage}}</p>
+    </form>
+</app-form-page>
+<messages></messages>
+<router-outlet></router-outlet>
diff --git a/src/app/members/account/edit-data/edit-data.component.scss b/src/app/members/account/edit-data/edit-data.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..f99e2b9c3baabbf455adbd54bdc198f78604ff07
--- /dev/null
+++ b/src/app/members/account/edit-data/edit-data.component.scss
@@ -0,0 +1,32 @@
+.checkbox-field {
+    display: block;
+    margin: .5em 0;
+  }
+  .form-group{
+    display:flex;
+    flex-direction: row;
+    justify-content: space-between;
+  }
+  .horizontal-display{
+    width:45%;
+  }
+  .address-input{
+    margin:5px;
+  }
+  
+  .quarter-display{
+    width:25%;
+  }
+
+  .horizontal-center{
+    margin: 0 10px;
+  }
+
+  .checkbox-field {
+    display: block;
+    margin: .5em 0;
+  }
+
+  .post-edit-text{
+    color:green;
+  }
\ No newline at end of file
diff --git a/src/app/members/account/edit-data/edit-data.component.ts b/src/app/members/account/edit-data/edit-data.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9bd2489410fc184120f94b0917d3def99865de16
--- /dev/null
+++ b/src/app/members/account/edit-data/edit-data.component.ts
@@ -0,0 +1,141 @@
+import { Component, OnInit } from '@angular/core';
+import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+import { Router } from '@angular/router';
+import { MatSnackBar } from '@angular/material';
+import {ActivatedRoute} from '@angular/router'
+import { PersonalData,PersonalDataService } from '../core';
+import { tap, mergeMap } from 'rxjs/operators';
+import { AuthService } from 'app/core';
+import {User} from 'app/core'
+
+
+
+@Component({
+  selector: 'app-edit-data',
+  templateUrl: './edit-data.component.html',
+  styleUrls: ['./edit-data.component.scss']
+})
+export class EditDataComponent implements OnInit {
+  personalData: PersonalData;
+  formGroup : FormGroup;
+  loading = false;
+  public error : String = "";
+  public postEditMessage : String = "" ;
+  public possibleParentsStatus = [
+    {id:"Mariés",name:"Mariés"},
+    {id:"Divorcés",name:"Divorcés"},
+    {id:"En concubinage",name:"En concubinage"},
+    {id:"Famille Monoparentale",name:"Famille monoparentale"}
+  ]
+
+  public possibleParentsActivities = [
+    {id:"Agriculteur",name:"Agriculteur"},
+    {id:"Artisan, commerçant, chef d'entreprise",name:"Artisan, commerçant, chef d'entreprise"},
+    {id:"Cadre, profession intellectuelle supérieure",name:"Cadre, profession intellectuelle supérieure"},
+    {id:"Enseignant et assimilé",name:"Enseignant et assimilé"},
+    {id:"Profession intermédiaire",name:"Profession intermédiaire"},
+    {id:"Employé",name:"Employé"},
+    {id:"Ouvrier",name:"Ouvrier"},
+    {id:"Retraité",name:"Retraité"},
+    {id:"Inactif",name:"Inactif"},
+    {id:"Autre",name:"Autre"} 
+  ]
+
+  public possibleSchools = [
+    {id:"Jean Perrin (Longjumeau)", name:"Jean Perrin (Longjumeau)"},
+    {id:"Robert Doisneau (Corbeil-Essonnes)",name:"Robert Doisneau (Corbeil-Essonnes)"},
+    {id:"Henri Matisse (Montreuil)",name:"Henri Matisse (Montreuil)"},
+    {id:"Jean Jaurès (Montreuil)",name:"Jean Jaurès (Montreuil)"},
+    {id:"Charles Péguy (Bobigny)",name:"Charles Péguy (Bobigny)"},
+    {id:"Jean Jaurès (Chatenay-Malabry)",name:"Jean Jaurès (Chatenay-Malabry)"},
+    {id:"Parc des Loges (Evry)",name:"Parc des Loges (Evry)"},
+    {id:"Jean-Baptiste Corot (Savigny-sur-Orge)",name:"Jean-Baptiste Corot (Savigny-sur-Orge)"},
+    {id:"Gaspard Monge (Savigny-sur-Orge)",name:"Gaspard Monge (Savigny-sur-Orge)"},
+  ]
+
+  public possibleScholarships = [
+    {id:"echelon1",name:"Oui, échelon 1"},
+    {id:"echelon2",name:"Oui, échelon 2"},
+    {id:"echelon3",name:"Oui, échelon 3"},
+    {id:"echelon4",name:"Oui, échelon 4"},
+    {id:"echelon5",name:"Oui, échelon 5"},
+    {id:"echelon6",name:"Oui, échelon 6"},
+    {id:"echelon7",name:"Oui, échelon 7"},
+    {id:"no",name:"Non"},
+  ]
+
+
+
+  constructor(
+    private route: ActivatedRoute,
+    private personalDataService : PersonalDataService,
+    private formBuilder: FormBuilder,
+    private router: Router,
+    private auth: AuthService,
+    private snackBar: MatSnackBar,
+    
+  ) { }
+
+
+  ngOnInit() {
+    this.personalData = this.route.snapshot.data['personalData'];
+    this.createForm()
+  }
+
+  
+  createForm() {
+    
+    this.formGroup = this.formBuilder.group({
+      firstName:this.personalData.firstName,
+      lastName:this.personalData.lastName,
+      gender:this.personalData.gender,
+      nationality : this.personalData.nationality,
+      addressNumber:[this.personalData.addressNumber,Validators.pattern("^[0-9]*$")],
+      street:this.personalData.street,
+      zipCode:this.personalData.zipCode,
+      city:this.personalData.city,
+      personalPhone:[this.personalData.personalPhone,Validators.pattern("^[0-9, ]*[0-9, ]{10}$")],
+      parentsPhone:this.personalData.parentsPhone,
+      parentsEmail:[this.personalData.parentsEmail,Validators.email],
+      school:this.personalData.school,
+      grade:this.personalData.grade,
+      classType : this.personalData.classType,
+      specialTeaching:this.personalData.specialTeaching,
+      scholarship:this.personalData.scholarship,
+      fatherActivity:this.personalData.fatherActivity,
+      motherActivity:this.personalData.motherActivity,
+      parentsStatus:this.personalData.parentsStatus,
+      dependantsNumber:this.personalData.dependantsNumber,
+      acceptedConditions: false
+    })
+ 
+  }
+
+  submit(){
+    this.loading = true;
+    const {firstName,lastName,gender,nationality,classType,addressNumber,street,zipCode,city,personalPhone,parentsPhone,parentsEmail,school,grade,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber} = this.formGroup.value;
+    const personalData: PersonalData = {...this.personalData,classType,firstName,lastName,gender,nationality,addressNumber,street,zipCode,city,personalPhone,parentsPhone,parentsEmail,school,grade,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber};
+    
+    this.personalDataService.edit(personalData).pipe(
+      tap(() => this.loading = false),
+      tap(()=> this.error = ""),
+      tap(() => {
+        this.postEditMessage = "Merci d'avoir completé tes données personnelles ! Nous allons t'envoyer un email contenant le lien vers le dossier d'inscription, si tu ne le reçois pas, pense à vérifier tes spams."
+        setTimeout(()=>{
+          this.router.navigate(['./membres/compte/donnees'])
+          this.postEditMessage = ""
+        },7000)
+        
+      }),
+    ).subscribe(
+      () => {},
+      (error) => {
+        this.error = "Erreur lors de la modification des données"
+        this.loading = false
+      },
+    );
+  
+  }
+  
+
+}
diff --git a/src/app/members/account/my-data/my-data.component.html b/src/app/members/account/my-data/my-data.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..d17a78139d79381b6ed2138e4ea12dfa2e78e330
--- /dev/null
+++ b/src/app/members/account/my-data/my-data.component.html
@@ -0,0 +1,33 @@
+<app-form-page>
+    <h2>Mes données</h2>
+    <p><span class='label'>Prénom : </span>{{personalData.firstName}} </p> 
+    <p><span class='label'>Nom : </span>{{personalData.lastName}}</p>
+    <p><span class='label'>Sexe : </span>{{personalData.gender}}</p>
+    <p><span class='label'>Nationalité : </span>{{personalData.nationality}}</p>
+    <mat-divider></mat-divider>
+    <p> <span class='label'>Adresse : </span>{{personalData.addressNumber}} {{personalData.street}} {{personalData.zipCode}}, {{personalData.city}}</p>
+    <mat-divider></mat-divider>
+    <p><span class='label'>Numéro de téléphone personnel : </span>{{personalData.personalPhone}}</p>
+    <p><span class='label'>Numéro de téléphone des parents : </span>{{personalData.parentsPhone}}</p>
+    <p><span class='label'>Email des parents  : </span>{{personalData.parentsEmail}}</p>
+    <mat-divider></mat-divider>
+    <p><span class='label'>Etablissement : </span>{{personalData.school}}</p> 
+    <p><span class='label'>Classe : </span>{{grade[personalData.grade]}}</p>
+    <p><span class='label'>Voie : </span>{{[personalData.classType]}}</p>
+    <p><span class='label'>Enseignement de spécialité : </span>{{personalData.specialTeaching}}</p>
+    <p><span class='label'>Boursier : </span>{{scholarship[personalData.scholarship]}}</p>
+    <mat-divider></mat-divider>
+    <p><span class='label'>Activité du père : </span>{{personalData.fatherActivity}}</p>
+    
+    <p><span class='label'>Activité de la mère : </span>{{personalData.motherActivity}}</p>
+    <p><span class='label'>Statut des parents : </span>{{personalData.parentsStatus}}</p>
+    <p><span class='label'>Nombre de personnes à charge : </span>{{personalData.dependantsNumber}}</p>
+    <div class="text-center">
+        <button mat-raised-button color="primary" (click)="editData()" ><mat-icon aria-hidden="false" aria-label="Example home icon">edit</mat-icon>Modifier mes données</button>
+    </div>
+    
+</app-form-page>
+<messages></messages>
+<router-outlet></router-outlet>
+
+  
\ No newline at end of file
diff --git a/src/app/members/account/my-data/my-data.component.scss b/src/app/members/account/my-data/my-data.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..80c01087c041cb2478c88bbd9577c9037b6cb8e2
--- /dev/null
+++ b/src/app/members/account/my-data/my-data.component.scss
@@ -0,0 +1,4 @@
+.label{
+    color:grey;
+    font-weight: 600;
+}
\ No newline at end of file
diff --git a/src/app/members/account/my-data/my-data.component.ts b/src/app/members/account/my-data/my-data.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cf04c137f8fb73ee21894fa5afbf2b03dcaee093
--- /dev/null
+++ b/src/app/members/account/my-data/my-data.component.ts
@@ -0,0 +1,52 @@
+import { Component, OnInit } from '@angular/core';
+import {ActivatedRoute,Router} from '@angular/router'
+import {PersonalData} from '../core'
+import {User} from 'app/core'
+
+@Component({
+  selector: 'app-my-data',
+  templateUrl: './my-data.component.html',
+  styleUrls: ['./my-data.component.scss']
+})
+export class MyDataComponent implements OnInit {
+  
+  personalData: PersonalData;
+  
+  
+  public grade = {
+    "troisieme": "Troisième",
+    "seconde":"Seconde",
+    "premiere":"Première",
+    "terminale":"Terminale"
+
+  }
+  public scholarship = {
+    "echelon0": "Oui, échelon 0",
+    "echelon1": "Oui, échelon 1",
+    "echelon2": "Oui, échelon 2",
+    "echelon3": "Oui, échelon 3",
+    "echelon4": "Oui, échelon 4",
+    "echelon5": "Oui, échelon 5",
+    "echelon6": "Oui, échelon 6",
+    "echelon7": "Oui, échelon 7",
+    "no" : "Non"
+
+  }
+
+  
+  
+  public editData = ()=> {
+    this.router.navigate(['./membres/compte/modifier_donnees'])
+  }
+  
+ 
+
+  constructor(private route: ActivatedRoute, private router:Router) { }
+  
+  ngOnInit() {
+    
+    this.personalData = this.route.snapshot.data['personalData'];
+    
+  }
+
+}
diff --git a/src/app/members/account/my-file/my-file.component.html b/src/app/members/account/my-file/my-file.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..df34468e7b5f934ba219daf392d08b4729539521
--- /dev/null
+++ b/src/app/members/account/my-file/my-file.component.html
@@ -0,0 +1,8 @@
+<app-form-page>
+    <h1>Mon dossier</h1>
+    <app-upload-file></app-upload-file>
+</app-form-page>
+<messages></messages>
+<router-outlet></router-outlet>
+
+  
\ No newline at end of file
diff --git a/src/app/members/account/my-file/my-file.component.scss b/src/app/members/account/my-file/my-file.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/members/account/my-file/my-file.component.ts b/src/app/members/account/my-file/my-file.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..723e2d51532d0a4cdbafdc5a72ad5e81cb67e1f2
--- /dev/null
+++ b/src/app/members/account/my-file/my-file.component.ts
@@ -0,0 +1,17 @@
+import { Component, OnInit } from '@angular/core';
+import {ActivatedRoute} from '@angular/router'
+import {UploadComponent} from '../upload/upload.component'
+import {PersonalData} from '../core'
+@Component({
+  selector: 'app-my-file',
+  templateUrl: './my-file.component.html',
+  styleUrls: ['./my-file.component.scss']
+})
+export class MyFileComponent implements OnInit {
+    
+  
+
+  constructor(private route: ActivatedRoute) { }
+
+  ngOnInit() {}
+}
diff --git a/src/app/members/account/my-file/my-file.module.ts b/src/app/members/account/my-file/my-file.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8d14e3ec6e3ede19e17dc223a71dfcb1368472a1
--- /dev/null
+++ b/src/app/members/account/my-file/my-file.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core'
+import { CommonModule } from '@angular/common'
+import { UploadModule } from '../upload/upload.module'
+import {UploadComponent} from '../upload/upload.component'
+import {MyFileComponent} from './my-file.component'
+
+@NgModule({
+    imports : [],
+    declarations: [],
+    entryComponents:[UploadComponent]
+  
+})
+export class MyFileModule {}
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/dialog.component.html b/src/app/members/account/upload/dialog/dialog.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..f3d15c7f6d75d357b94c75211485405f1a2d192b
--- /dev/null
+++ b/src/app/members/account/upload/dialog/dialog.component.html
@@ -0,0 +1,48 @@
+<input
+  type="file"
+  #file
+  style="display: none"
+  (change)="onFilesAdded()"
+  single
+/>
+<div class="container" fxLayout="column" fxLayoutAlign="space-evenly stretch">
+  <h1 mat-dialog-title>Déposer un fichier</h1>
+  <div>
+    <button
+      [disabled]="uploading || uploadSuccessful"
+      mat-raised-button
+      color="primary"
+      class="add-files-btn"
+      (click)="addFiles()"
+    >
+      Ajouter un fichier
+    </button>
+  </div>
+
+  <!-- This is the content of the dialog, containing a list of the files to upload -->
+  <mat-dialog-content fxFlex>
+    <mat-list>
+      <mat-list-item *ngFor="let file of files">
+        <h4 mat-line>{{file.name}}</h4>
+        <mat-progress-bar
+          *ngIf="progress"
+          mode="determinate"
+          [value]="progress[file.name].progress | async"
+        ></mat-progress-bar>
+      </mat-list-item>
+    </mat-list>
+  </mat-dialog-content>
+
+  <!-- This are the actions of the dialog, containing the primary and the cancel button-->
+  <mat-dialog-actions class="actions">
+    <button *ngIf="showCancelButton" mat-button mat-dialog-close>Annuler</button>
+    <button
+      mat-raised-button
+      color="primary"
+      [disabled]="!canBeClosed"
+      (click)="closeDialog()"
+    >
+      {{primaryButtonText}}
+    </button>
+  </mat-dialog-actions>
+</div>
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/dialog.component.scss b/src/app/members/account/upload/dialog/dialog.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..88e5de70b6d2237538270ce9b56cbd78d2ac5f6a
--- /dev/null
+++ b/src/app/members/account/upload/dialog/dialog.component.scss
@@ -0,0 +1,17 @@
+
+  
+  :host {
+    height: 100%;
+    display: flex;
+    flex: 1;
+    flex-direction: column;
+  }
+  
+  .actions {
+    justify-content: flex-end;
+    float:bottom;
+  }
+  
+  .container {
+    height: 100%;
+  }
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/imageRightsDialog.component.ts b/src/app/members/account/upload/dialog/imageRightsDialog.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..610713b56495b0853e16ad41bc491fc1396652e3
--- /dev/null
+++ b/src/app/members/account/upload/dialog/imageRightsDialog.component.ts
@@ -0,0 +1,82 @@
+import { Component, OnInit, ViewChild } from '@angular/core'
+import { MatDialogRef } from '@angular/material'
+import { UploadService } from '../upload.service'
+import { forkJoin } from 'rxjs'
+
+@Component({
+  selector: 'app-dialog',
+  templateUrl: './dialog.component.html',
+  styleUrls: ['./dialog.component.scss'],
+})
+
+export class ImageRightsDialogComponent{
+    constructor(public dialogRef : MatDialogRef<ImageRightsDialogComponent>, public uploadService : UploadService) { }
+    @ViewChild('file') file
+    public files: Set<File> = new Set()
+    progress
+    canBeClosed = true
+    primaryButtonText = 'Envoyer'
+    showCancelButton = true
+    uploading = false
+    uploadSuccessful = false
+  
+    addFiles() {
+      this.file.nativeElement.click();
+    }
+  
+    onFilesAdded() {
+      console.log(this.file.nativeElement.files)
+      const files: { [key: string]: File } = this.file.nativeElement.files;
+      for (let key in files) {
+        if (!isNaN(parseInt(key))) {
+          this.files.clear()
+          this.files.add(files[key]);
+        }
+      }
+    }
+  
+  
+    closeDialog() {
+      // if everything was uploaded already, just close the dialog
+      if (this.uploadSuccessful) {
+        return this.dialogRef.close();
+      }
+    
+      // set the component state to "uploading"
+      this.uploading = true;
+    
+      // start the upload and save the progress map
+      this.progress = this.uploadService.upload(this.files,"image");
+    
+      // convert the progress map into an array
+      let allProgressObservables = [];
+      for (let key in this.progress) {
+        allProgressObservables.push(this.progress[key].progress);
+      }
+    
+      // Adjust the state variables
+    
+      // The OK-button should have the text "Finish" now
+      this.primaryButtonText = 'Terminer';
+    
+      // The dialog should not be closed while uploading
+      this.canBeClosed = false;
+      this.dialogRef.disableClose = true;
+    
+      // Hide the cancel-button
+      this.showCancelButton = false;
+    
+      // When all progress-observables are completed...
+      forkJoin(allProgressObservables).subscribe(end => {
+        // ... the dialog can be closed again...
+        this.canBeClosed = true;
+        this.dialogRef.disableClose = false;
+    
+        // ... the upload was successful...
+        this.uploadSuccessful = true;
+    
+        // ... and the component is no longer uploading
+        this.uploading = false;
+      });
+    }
+  }
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/parentalAuthDialog.component.ts b/src/app/members/account/upload/dialog/parentalAuthDialog.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c2a038b9750aa846a270ed5e9c85f62b3fbd0ce3
--- /dev/null
+++ b/src/app/members/account/upload/dialog/parentalAuthDialog.component.ts
@@ -0,0 +1,84 @@
+import { Component, OnInit, ViewChild } from '@angular/core'
+import { MatDialogRef } from '@angular/material'
+import { UploadService } from '../upload.service'
+import { forkJoin } from 'rxjs'
+
+@Component({
+  selector: 'app-dialog',
+  templateUrl: './dialog.component.html',
+  styleUrls: ['./dialog.component.scss'],
+})
+
+export class ParentalAuthDialogComponent {
+    constructor(public dialogRef : MatDialogRef<ParentalAuthDialogComponent>, public uploadService : UploadService) { }
+    @ViewChild('file') file
+    public files: Set<File> = new Set()
+    progress
+    canBeClosed = true
+    primaryButtonText = 'Envoyer'
+    showCancelButton = true
+    uploading = false
+    uploadSuccessful = false
+  
+    addFiles() {
+      this.file.nativeElement.click();
+    }
+  
+    onFilesAdded() {
+      console.log(this.file.nativeElement.files)
+      const files: { [key: string]: File } = this.file.nativeElement.files;
+      for (let key in files) {
+        if (!isNaN(parseInt(key))) {
+          this.files.clear()
+          this.files.add(files[key]);
+        }
+      }
+    }
+  
+  
+    closeDialog() {
+      // if everything was uploaded already, just close the dialog
+      if (this.uploadSuccessful) {
+        return this.dialogRef.close();
+      }
+    
+      // set the component state to "uploading"
+      this.uploading = true;
+    
+      // start the upload and save the progress map
+      this.progress = this.uploadService.upload(this.files,"parental");
+    
+      // convert the progress map into an array
+      let allProgressObservables = [];
+      for (let key in this.progress) {
+        allProgressObservables.push(this.progress[key].progress);
+      }
+    
+      // Adjust the state variables
+    
+      // The OK-button should have the text "Finish" now
+      this.primaryButtonText = 'Terminer';
+    
+      // The dialog should not be closed while uploading
+      this.canBeClosed = false;
+      this.dialogRef.disableClose = true;
+    
+      // Hide the cancel-button
+      this.showCancelButton = false;
+    
+      // When all progress-observables are completed...
+      forkJoin(allProgressObservables).subscribe(end => {
+        // ... the dialog can be closed again...
+        this.canBeClosed = true;
+        this.dialogRef.disableClose = false;
+    
+        // ... the upload was successful...
+        this.uploadSuccessful = true;
+    
+        // ... and the component is no longer uploading
+        this.uploading = false;
+      });
+    }
+  }
+  
+  
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/studentChartDialog.component.ts b/src/app/members/account/upload/dialog/studentChartDialog.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f2b3ff6d83267173205633d086693765f181e8cb
--- /dev/null
+++ b/src/app/members/account/upload/dialog/studentChartDialog.component.ts
@@ -0,0 +1,87 @@
+import { Component, OnInit, ViewChild } from '@angular/core'
+import { MatDialogRef } from '@angular/material'
+import { UploadService } from '../upload.service'
+import { forkJoin } from 'rxjs'
+
+@Component({
+  selector: 'app-dialog',
+  templateUrl: './dialog.component.html',
+  styleUrls: ['./dialog.component.scss'],
+})
+
+
+
+
+
+export class StudentChartDialogComponent {
+  constructor(public dialogRef : MatDialogRef<StudentChartDialogComponent>, public uploadService : UploadService) { }
+  @ViewChild('file') file
+  public files: Set<File> = new Set()
+  progress
+  canBeClosed = true
+  primaryButtonText = 'Envoyer'
+  showCancelButton = true
+  uploading = false
+  uploadSuccessful = false
+
+  addFiles() {
+    this.file.nativeElement.click();
+  }
+
+  onFilesAdded() {
+    console.log(this.file.nativeElement.files)
+    const files: { [key: string]: File } = this.file.nativeElement.files;
+    for (let key in files) {
+      if (!isNaN(parseInt(key))) {
+        this.files.clear()
+        this.files.add(files[key]);
+      }
+    }
+  }
+
+
+  closeDialog() {
+    // if everything was uploaded already, just close the dialog
+    if (this.uploadSuccessful) {
+      return this.dialogRef.close();
+    }
+  
+    // set the component state to "uploading"
+    this.uploading = true;
+  
+    // start the upload and save the progress map
+    this.progress = this.uploadService.upload(this.files,"chart");
+  
+    // convert the progress map into an array
+    let allProgressObservables = [];
+    for (let key in this.progress) {
+      allProgressObservables.push(this.progress[key].progress);
+    }
+  
+    // Adjust the state variables
+  
+    // The OK-button should have the text "Finish" now
+    this.primaryButtonText = 'Terminer';
+  
+    // The dialog should not be closed while uploading
+    this.canBeClosed = false;
+    this.dialogRef.disableClose = true;
+  
+    // Hide the cancel-button
+    this.showCancelButton = false;
+  
+    // When all progress-observables are completed...
+    forkJoin(allProgressObservables).subscribe(end => {
+      // ... the dialog can be closed again...
+      this.canBeClosed = true;
+      this.dialogRef.disableClose = false;
+  
+      // ... the upload was successful...
+      this.uploadSuccessful = true;
+  
+      // ... and the component is no longer uploading
+      this.uploading = false;
+    });
+  }
+}
+
diff --git a/src/app/members/account/upload/upload.component.html b/src/app/members/account/upload/upload.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..69120155c9f3ed37fb033da0ca8f5eb99b0ff4b7
--- /dev/null
+++ b/src/app/members/account/upload/upload.component.html
@@ -0,0 +1,4 @@
+<h3>Charte de l'éleve</h3><button mat-raised-button (click)="openStudentChartDialog()">Déposer le fichier</button>
+<h3>Autorisation parentale</h3><button mat-raised-button (click)="openParentalAuthDialog()">Déposer le fichier</button>
+<h3>Droit à l'image</h3><button mat-raised-button (click)="openImageRightsDialog()">Déposer le fichier</button>
+<h3>Statut du dossier : </h3>
\ No newline at end of file
diff --git a/src/app/members/account/upload/upload.component.scss b/src/app/members/account/upload/upload.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app/members/account/upload/upload.component.ts b/src/app/members/account/upload/upload.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..374e0effdd6f75faf9dbc4079cce28587ea2bd92
--- /dev/null
+++ b/src/app/members/account/upload/upload.component.ts
@@ -0,0 +1,34 @@
+import { Component } from '@angular/core'
+import { MatDialog } from '@angular/material'
+import {StudentChartDialogComponent } from './dialog/studentChartDialog.component'
+import {ParentalAuthDialogComponent} from './dialog/parentalAuthDialog.component'
+import {ImageRightsDialogComponent} from './dialog/imageRightsDialog.component'
+import { UploadService } from './upload.service'
+
+@Component({
+  selector: 'app-upload-file',
+  templateUrl: './upload.component.html',
+  styleUrls: ['./upload.component.scss'],
+})
+export class UploadComponent {
+  constructor(public dialog: MatDialog, public uploadService: UploadService) {}
+
+  public openStudentChartDialog() {
+    let dialogRef = this.dialog.open(StudentChartDialogComponent, {
+      width: '50%',
+      height: '50%',
+    })
+  }
+  public openParentalAuthDialog() {
+    let dialogRef = this.dialog.open(ParentalAuthDialogComponent, {
+      width: '50%',
+      height: '50%',
+    })
+  }
+  public openImageRightsDialog() {
+    let dialogRef = this.dialog.open(ImageRightsDialogComponent, {
+      width: '50%',
+      height: '50%',
+    })
+  }
+}
\ No newline at end of file
diff --git a/src/app/members/account/upload/upload.module.ts b/src/app/members/account/upload/upload.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..51c0b61584ea97c68adb353475715ee04f93c13b
--- /dev/null
+++ b/src/app/members/account/upload/upload.module.ts
@@ -0,0 +1,32 @@
+import { NgModule } from '@angular/core'
+import { CommonModule } from '@angular/common'
+//Components
+import { UploadComponent } from './upload.component'
+import {StudentChartDialogComponent} from './dialog/studentChartDialog.component'
+import {ImageRightsDialogComponent} from './dialog/imageRightsDialog.component'
+import {ParentalAuthDialogComponent} from './dialog/parentalAuthDialog.component'
+import {
+  MatButtonModule,
+  MatDialogModule,
+  MatListModule,
+  MatProgressBarModule,
+} from '@angular/material'
+
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
+import { UploadService } from './upload.service'
+import { HttpClientModule } from '@angular/common/http'
+
+@NgModule({
+  imports: [
+    CommonModule,
+    MatButtonModule,
+    MatDialogModule,
+    MatListModule,
+    HttpClientModule,
+    BrowserAnimationsModule,
+    MatProgressBarModule,
+  ],
+  providers: [UploadService],
+  entryComponents : [ParentalAuthDialogComponent,ImageRightsDialogComponent,StudentChartDialogComponent]
+})
+export class UploadModule {}
\ No newline at end of file
diff --git a/src/app/members/account/upload/upload.service.spec.ts b/src/app/members/account/upload/upload.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c5718b07fe80fdb312fd6bd683a00cd2eef63c00
--- /dev/null
+++ b/src/app/members/account/upload/upload.service.spec.ts
@@ -0,0 +1,15 @@
+import { TestBed, inject } from '@angular/core/testing';
+
+import { UploadService } from './upload.service';
+
+describe('UploadService', () => {
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      providers: [UploadService]
+    });
+  });
+
+  it('should be created', inject([UploadService], (service: UploadService) => {
+    expect(service).toBeTruthy();
+  }));
+});
diff --git a/src/app/members/account/upload/upload.service.ts b/src/app/members/account/upload/upload.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3e67cea77e1303fb83f6cd4f79972e304a989b82
--- /dev/null
+++ b/src/app/members/account/upload/upload.service.ts
@@ -0,0 +1,66 @@
+import { Injectable } from '@angular/core'
+import {
+  HttpClient,
+  HttpRequest,
+  HttpEventType,
+  HttpResponse,
+} from '@angular/common/http'
+import { Observable,Subject } from 'rxjs'
+import { ApiService } from 'app/core';
+
+ 
+
+@Injectable({
+  providedIn: 'root'
+})
+export class UploadService extends ApiService {
+  constructor(private http: HttpClient) {super();}
+  private url = this.apiUrl + 'upload/' 
+  public upload(
+    files: Set<File>,
+    uploadedFileType : String
+  ): { [key: string]: { progress: Observable<number> } } {
+    // this will be the our resulting map
+    const status: { [key: string]: { progress: Observable<number> } } = {};
+
+    files.forEach(file => {
+      // create a new multipart-form for every file
+      const formData: FormData = new FormData();
+      formData.append('fichier', file, file.name);
+
+      // create a http-post request and pass the form
+      // tell it to report the upload progress
+      const req = new HttpRequest('POST', this.url+uploadedFileType, formData, {
+        reportProgress: true
+      });
+
+      // create a new progress-subject for every file
+      const progress = new Subject<number>();
+
+      // send the http-request and subscribe for progress-updates
+      this.http.request(req).subscribe(event => {
+        if (event.type === HttpEventType.UploadProgress) {
+
+          // calculate the progress percentage
+          const percentDone = Math.round(100 * event.loaded / event.total);
+
+          // pass the percentage into the progress-stream
+          progress.next(percentDone);
+        } else if (event instanceof HttpResponse) {
+
+          // Close the progress-stream if we get an answer form the API
+          // The upload is complete
+          progress.complete();
+        }
+      });
+
+      // Save every progress-observable in a map of all observables
+      status[file.name] = {
+        progress: progress.asObservable()
+      };
+    });
+
+    // return the map of progress.observables
+    return status;
+  }
+}
\ No newline at end of file
diff --git a/src/app/members/members-routing.module.ts b/src/app/members/members-routing.module.ts
index f5f0fac7402fff4276adf573e911780d8f4b964b..01addc9854b6900c3587dda5388799f5e3b3c91a 100644
--- a/src/app/members/members-routing.module.ts
+++ b/src/app/members/members-routing.module.ts
@@ -26,6 +26,11 @@ const routes: Routes = [
         data: { title: 'Projets' },
         loadChildren: './projects/projects.module#ProjectsModule',
       },
+      {
+        path: 'compte',
+        data: { title: 'Mon Compte' },
+        loadChildren : './account/account.module#AccountModule', 
+      }
     ]
   },
 ];
diff --git a/src/app/members/members.component.ts b/src/app/members/members.component.ts
index 18629a484b44034b44057d56b77895cf922a4619..f209352459a0795824391460446f8b2453f53a6a 100644
--- a/src/app/members/members.component.ts
+++ b/src/app/members/members.component.ts
@@ -19,6 +19,7 @@ export class MembersComponent {
     { href: './', text: 'Mon espace' },
     { href: './projets', text: 'Nos projets' },
     { href: './sorties', text: 'Nos sorties' },
+    { href: './compte', text: 'Mon compte' },
     { text: 'Déconnexion', action: () => this.logout() },
   ];
 
diff --git a/src/app/members/student-home/account-overview/account-overview.component.html b/src/app/members/student-home/account-overview/account-overview.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..674262d2106745afa80e308992dc2f956b4a1ebd
--- /dev/null
+++ b/src/app/members/student-home/account-overview/account-overview.component.html
@@ -0,0 +1,12 @@
+<div class="container">
+    <h2 id="title">Mon Compte</h2>
+  
+    <p>
+      Remplie ou modifie tes données personnelles qui te serviront pour valider ton inscription à Oser.
+    </p>
+    <a mat-raised-button color="accent" routerLink="compte/donnees">
+      Voir mon compte
+    </a>
+  
+  </div>
+  
\ No newline at end of file
diff --git a/src/app/members/student-home/account-overview/account-overview.component.scss b/src/app/members/student-home/account-overview/account-overview.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..7c2d3209e215d6ad3a736555123a3e65c73b4fec
--- /dev/null
+++ b/src/app/members/student-home/account-overview/account-overview.component.scss
@@ -0,0 +1,15 @@
+@import '~sass/variables';
+
+#title {
+  margin: 0;
+  padding: 0;
+}
+
+.row {
+  padding-bottom: 0.5em;
+
+  p {
+    margin: 0;
+    padding: 0;
+  }
+}
diff --git a/src/app/members/student-home/account-overview/account-overview.component.ts b/src/app/members/student-home/account-overview/account-overview.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f3194fec84c74d158c152c5da35460d2e853c3e5
--- /dev/null
+++ b/src/app/members/student-home/account-overview/account-overview.component.ts
@@ -0,0 +1,9 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'account-overview',
+  templateUrl: './account-overview.component.html',
+  styleUrls: ['./account-overview.component.scss']
+})
+
+export class AccountOverviewComponent {}
diff --git a/src/app/members/student-home/student-home.component.html b/src/app/members/student-home/student-home.component.html
index 9693f0e68f2da1c7552e9e9500e6b51f8179563f..540c5f14f01be246773ff3ad286235f400a58f6b 100644
--- a/src/app/members/student-home/student-home.component.html
+++ b/src/app/members/student-home/student-home.component.html
@@ -2,14 +2,17 @@
   Mon espace
 </h1>
 
-<app-two-panes>
+<app-three-panes>
   <app-pane id="visits">
     <visits-overview class="pane-content"></visits-overview>
   </app-pane>
   <app-pane id="projects">
     <projects-overview class="pane-content"></projects-overview>
   </app-pane>
-</app-two-panes>
+  <app-pane id="account">
+    <account-overview class="pane-content"></account-overview>
+  </app-pane>
+</app-three-panes>
 
 <div class="container">
   <h2>
diff --git a/src/app/members/student-home/student-home.component.scss b/src/app/members/student-home/student-home.component.scss
index eb3c7e0d7f567ac81c6d58d424a3b9b03a251b1a..62a40567bfae2c5995659c50696d5206a01782d8 100644
--- a/src/app/members/student-home/student-home.component.scss
+++ b/src/app/members/student-home/student-home.component.scss
@@ -14,3 +14,5 @@
   // TODO use a background image?
   background: $color-purple-lighter;
 }
+
+
diff --git a/src/app/members/student-home/student-home.module.ts b/src/app/members/student-home/student-home.module.ts
index bc853c84f3ac76924a877770337f3c6a18df9f4a..778d82db466c6f63ce0d15f959dfaec1486f01a1 100644
--- a/src/app/members/student-home/student-home.module.ts
+++ b/src/app/members/student-home/student-home.module.ts
@@ -12,6 +12,7 @@ import {
 import { StudentHomeComponent } from './student-home.component';
 import { ProjectsOverviewComponent } from './projects-overview/projects-overview.component';
 import { VisitsOverviewComponent } from './visits-overview/visits-overview.component';
+import {AccountOverviewComponent} from './account-overview/account-overview.component';
 
 @NgModule({
   imports:[
@@ -26,6 +27,7 @@ import { VisitsOverviewComponent } from './visits-overview/visits-overview.compo
     StudentHomeComponent,
     ProjectsOverviewComponent,
     VisitsOverviewComponent,
+    AccountOverviewComponent,
   ]
 })
 
diff --git a/src/app/panes/panes.module.ts b/src/app/panes/panes.module.ts
index 4318091c03ab19c926544f5c7fbdaf9512609b6b..b7b74763fb0c4f10e794858a8546faadb6470170 100644
--- a/src/app/panes/panes.module.ts
+++ b/src/app/panes/panes.module.ts
@@ -1,7 +1,7 @@
 import { NgModule } from '@angular/core';
 import { CommonModule } from '@angular/common';
 
-import { TwoPanesComponent } from './two-panes/two-panes.component';
+import { ThreePanesComponent } from './three-panes/three-panes.component';
 import { PaneComponent } from './pane/pane.component';
 
 @NgModule({
@@ -9,11 +9,11 @@ import { PaneComponent } from './pane/pane.component';
     CommonModule
   ],
   declarations: [
-    TwoPanesComponent,
+    ThreePanesComponent,
     PaneComponent,
   ],
   exports: [
-    TwoPanesComponent,
+    ThreePanesComponent,
     PaneComponent,
   ]
 })
diff --git a/src/app/panes/two-panes/two-panes.component.html b/src/app/panes/three-panes/three-panes.component.html
similarity index 100%
rename from src/app/panes/two-panes/two-panes.component.html
rename to src/app/panes/three-panes/three-panes.component.html
diff --git a/src/app/panes/two-panes/two-panes.component.scss b/src/app/panes/three-panes/three-panes.component.scss
similarity index 74%
rename from src/app/panes/two-panes/two-panes.component.scss
rename to src/app/panes/three-panes/three-panes.component.scss
index d0f69030f9e766280e287190b6fc70efc6009392..60c5bdc1a6a77686bb7b9979c7334d72dc2f3435 100644
--- a/src/app/panes/two-panes/two-panes.component.scss
+++ b/src/app/panes/three-panes/three-panes.component.scss
@@ -4,6 +4,6 @@
   display: grid;
   grid-template-columns: 1fr;
   @include media-xs {
-    grid-template-columns: 1fr 1fr;
+    grid-template-columns: 1fr 1fr 1fr;
   }
 }
diff --git a/src/app/panes/three-panes/three-panes.component.ts b/src/app/panes/three-panes/three-panes.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4167f7532cfa6f8f02fdbe3f4735d75bf17631ee
--- /dev/null
+++ b/src/app/panes/three-panes/three-panes.component.ts
@@ -0,0 +1,8 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-three-panes',
+  templateUrl: './three-panes.component.html',
+  styleUrls: ['./three-panes.component.scss']
+})
+export class ThreePanesComponent {}
diff --git a/src/app/panes/two-panes/two-panes.component.ts b/src/app/panes/two-panes/two-panes.component.ts
deleted file mode 100644
index 5887f6d0b0ce78c2e5990183b847c09f7e421db5..0000000000000000000000000000000000000000
--- a/src/app/panes/two-panes/two-panes.component.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-two-panes',
-  templateUrl: './two-panes.component.html',
-  styleUrls: ['./two-panes.component.scss']
-})
-export class TwoPanesComponent {}
diff --git a/src/app/reset-confirm/reset-confirm.component.html b/src/app/reset-confirm/reset-confirm.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..b9d07f9a30ba2ca9a6958783b04259985392e3fe
--- /dev/null
+++ b/src/app/reset-confirm/reset-confirm.component.html
@@ -0,0 +1,24 @@
+<app-form-page>
+  <h1>Réinitialiser le mot de passe</h1>
+  <form [formGroup]="formGroup" (ngSubmit)="resetConfirm()">
+
+    <!-- Password field -->
+    <mat-form-field class="block">
+      <input matInput type="password" formControlName="new_password1" placeholder="Mot de passe" required autofocus />
+    </mat-form-field>
+
+    <!-- Confirm password -->
+    <mat-form-field class="block">
+      <input matInput type="password" formControlName="new_password2" placeholder="Confirmer le mot de passe" required
+        autofocus />
+    </mat-form-field>
+
+    <!-- Submit-->
+    <div class="text-center">
+      <button mat-raised-button color="primary" [disabled]="!formGroup.valid || loading" id="login-btn">
+        Confirmer<i *ngIf="loading" class="fa fa-spinner fa-pulse"></i>
+      </button>
+    </div>
+  </form>
+
+</app-form-page>
\ No newline at end of file
diff --git a/src/app/reset-confirm/reset-confirm.component.scss b/src/app/reset-confirm/reset-confirm.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..2e0715852a867e745f1483f4f38c515007e32c31
--- /dev/null
+++ b/src/app/reset-confirm/reset-confirm.component.scss
@@ -0,0 +1,38 @@
+@import '~sass/variables';
+@import '~sass/mixins';
+
+.logo {
+  width: 100%;
+  max-width: 20em;
+  height: auto;
+  display: block;
+  margin: auto;
+}
+
+.form-group {
+  display: flex;
+  flex-flow: column;
+}
+
+.has-error {
+  input {
+    @include style-danger;
+  }
+}
+#login-btn {
+  margin-top: 1em;
+}
+
+.form-control {
+  position: relative;
+  font-size: 16px;
+  height: auto;
+  padding: 10px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+
+.block {
+  width: 100%;
+}
diff --git a/src/app/reset-confirm/reset-confirm.component.spec.ts b/src/app/reset-confirm/reset-confirm.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4d5f02d9a5b900816071e1606ffd0e818bd5cced
--- /dev/null
+++ b/src/app/reset-confirm/reset-confirm.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ResetConfirmComponent } from './reset-confirm.component';
+
+describe('ResetConfirmComponent', () => {
+  let component: ResetConfirmComponent;
+  let fixture: ComponentFixture<ResetConfirmComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ ResetConfirmComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(ResetConfirmComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/reset-confirm/reset-confirm.component.ts b/src/app/reset-confirm/reset-confirm.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cc2502362d0b5d579ce32a636720f65f2b9a625d
--- /dev/null
+++ b/src/app/reset-confirm/reset-confirm.component.ts
@@ -0,0 +1,68 @@
+import { Component, OnInit } from '@angular/core';
+import { Router, ActivatedRoute } from '@angular/router';
+import { FormGroup, FormBuilder } from '@angular/forms';
+import { MatSnackBar } from '@angular/material';
+import { AuthService, MessageService } from 'app/core';
+import { of } from 'rxjs';
+import { filter, map, tap, catchError } from 'rxjs/operators';
+
+@Component({
+  selector: 'app-reset-confirm',
+  templateUrl: './reset-confirm.component.html',
+  styleUrls: ['./reset-confirm.component.scss']
+})
+export class ResetConfirmComponent implements OnInit {
+
+  loading: boolean = false;
+  defaultRedirectUrl: string = '/connexion';
+  formGroup: FormGroup;
+  public uid: string;
+  public token: string;
+
+  constructor(
+    private router: Router,
+    private auth: AuthService,
+    private messageService: MessageService,
+    private fb: FormBuilder,
+    private snackBar: MatSnackBar,
+    private route: ActivatedRoute
+    ) { }
+
+  ngOnInit() {
+    if (this.auth.fromGuard) {
+      this.messageService.error('Oops ! Vous devez vous connecter pour accéder à cette page.');
+    }
+    if (this.auth.fromUnauthorized) {
+      this.messageService.error("Oops ! Vous n'avez pas les permissions requises pour accéder à cette page.");
+    }
+  
+    this.createForm();
+    this.uid = this.route.snapshot.paramMap.get('uid');
+    this.token = this.route.snapshot.paramMap.get('token');
+    console.log(this.uid);
+    console.log(this.token);
+  }
+  private createForm() {
+    this.formGroup = this.fb.group({
+      new_password1: '',
+      new_password2: ''
+    });
+  }
+
+  resetConfirm() {
+    this.loading = true;
+    const { new_password1, new_password2 } = this.formGroup.value;
+    this.messageService.clear();
+    this.auth.resetConfirm(this.uid, this.token, new_password1, new_password2).pipe(
+      catchError(() => {
+        this.snackBar.open('Erreur lors de la réinitialisation du mot de passe : vérifiez que les mots de passes sont identiques et assez forts (8 caractères). Evitez également les mots de passes courants', 'OK', { duration: 5000 });
+        return of(false);
+      }),
+      tap(() => this.loading = false),
+      filter(Boolean),
+      map(() =>this.auth.redirectUrl ? this.auth.redirectUrl : this.defaultRedirectUrl),
+      tap(() => this.snackBar.open('Mot de passe réinitialisé', 'OK', { duration: 2000 })),
+      tap((redirectUrl: string) => this.router.navigate([redirectUrl])),    
+    ).subscribe()}
+
+}
diff --git a/src/app/reset/reset.component.html b/src/app/reset/reset.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..eee197047ddcc91ac09e79faf39fda5ac6a55fc8
--- /dev/null
+++ b/src/app/reset/reset.component.html
@@ -0,0 +1,19 @@
+<app-form-page>
+  <h1>Réinitialisation du mot de passe</h1>
+
+  <form [formGroup]="formGroup" (ngSubmit)="reset()">
+
+    <!-- Email field -->
+    <mat-form-field class="block">
+      <input matInput type="email" formControlName="email" required placeholder="Adresse email" autofocus>
+    </mat-form-field>
+
+    <!-- Submit -->
+    <div class="text-center">
+      <button mat-raised-button color="primary" [disabled]="!formGroup.valid || loading" id="login-btn">
+        Recevoir un mail<i *ngIf="loading" class="fa fa-spinner fa-pulse"></i>
+      </button>
+    </div>
+  </form>
+
+</app-form-page>
\ No newline at end of file
diff --git a/src/app/reset/reset.component.scss b/src/app/reset/reset.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..2e0715852a867e745f1483f4f38c515007e32c31
--- /dev/null
+++ b/src/app/reset/reset.component.scss
@@ -0,0 +1,38 @@
+@import '~sass/variables';
+@import '~sass/mixins';
+
+.logo {
+  width: 100%;
+  max-width: 20em;
+  height: auto;
+  display: block;
+  margin: auto;
+}
+
+.form-group {
+  display: flex;
+  flex-flow: column;
+}
+
+.has-error {
+  input {
+    @include style-danger;
+  }
+}
+#login-btn {
+  margin-top: 1em;
+}
+
+.form-control {
+  position: relative;
+  font-size: 16px;
+  height: auto;
+  padding: 10px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+
+.block {
+  width: 100%;
+}
diff --git a/src/app/reset/reset.component.spec.ts b/src/app/reset/reset.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..15ce951092d54ab68fdd487dd9d340edc08439fc
--- /dev/null
+++ b/src/app/reset/reset.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ResetComponent } from './reset.component';
+
+describe('ResetComponent', () => {
+  let component: ResetComponent;
+  let fixture: ComponentFixture<ResetComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ ResetComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(ResetComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/reset/reset.component.ts b/src/app/reset/reset.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f35be7adbddac5fb4410176634036a50b7b5f981
--- /dev/null
+++ b/src/app/reset/reset.component.ts
@@ -0,0 +1,59 @@
+import { Component, OnInit } from '@angular/core';
+import { Router } from '@angular/router';
+import { FormGroup, FormBuilder } from '@angular/forms';
+import { MatSnackBar } from '@angular/material';
+import { AuthService, MessageService } from 'app/core';
+import { of } from 'rxjs';
+import { filter, map, tap, catchError } from 'rxjs/operators';
+
+@Component({
+  selector: 'app-reset',
+  templateUrl: './reset.component.html',
+  styleUrls: ['./reset.component.scss']
+})
+export class ResetComponent implements OnInit {
+
+  loading: boolean = false;
+  defaultRedirectUrl: string = '/';
+  formGroup: FormGroup;
+
+  constructor(
+    private router: Router,
+    private auth: AuthService,
+    private messageService: MessageService,
+    private fb: FormBuilder,
+    private snackBar: MatSnackBar,
+  ) { }
+
+  ngOnInit() {
+    if (this.auth.fromGuard) {
+      this.messageService.error('Oops ! Vous devez vous connecter pour accéder à cette page.');
+    }
+    if (this.auth.fromUnauthorized) {
+      this.messageService.error("Oops ! Vous n'avez pas les permissions requises pour accéder à cette page.");
+    }
+    this.createForm();
+  }
+
+  private createForm() {
+    this.formGroup = this.fb.group({
+      email: '',
+    });
+  }
+
+  reset() {
+    this.loading = true;
+    const { email } = this.formGroup.value;
+    this.messageService.clear();
+    this.auth.reset(email).pipe(
+      catchError(() => {
+        this.snackBar.open('Adresse incorrecte', 'OK', { duration: 5000 });
+        return of(false);
+      }),
+      tap(() => this.loading = false),
+      filter(Boolean),
+      map(() =>this.auth.redirectUrl ? this.auth.redirectUrl : this.defaultRedirectUrl),
+      tap(() => this.snackBar.open('Mail de réinitialisation envoyé !', 'OK', { duration: 2000 })),
+      tap((redirectUrl: string) => this.router.navigate([redirectUrl])),    
+    ).subscribe()}
+}
diff --git a/src/app/signup/core/index.ts b/src/app/signup/core/index.ts
index b18613ff1e9c9b8a605abda14e7c580b6606dadf..29d5d8235deb95cf8178b9c553beb5a6407e0c28 100644
--- a/src/app/signup/core/index.ts
+++ b/src/app/signup/core/index.ts
@@ -1,3 +1,5 @@
 export * from './registration.model';
 export * from './registration.service';
+export * from './personnalData.model';
+export * from './personnalData.service';
 export * from './password.matcher';
diff --git a/src/app/signup/core/personnalData.model.ts b/src/app/signup/core/personnalData.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..50e4f3ced39e624b076365250c1bfe2b71d82f1c
--- /dev/null
+++ b/src/app/signup/core/personnalData.model.ts
@@ -0,0 +1,60 @@
+import { Injectable } from '@angular/core';
+import { Address, AddressAdapter } from 'app/core';
+
+class PersonnalDataSchema {
+    gender: string;
+    adressNumber:string;
+    street:string;
+    zipCode:string;
+    city:string;
+    personnalPhone:string;
+    parentsPhone:string;
+    parentsEmail:string;
+    school:string;
+    grade:string;
+    section:string;
+    specialTeaching:string;
+    scholarship:string;
+    fatherActivity:string;
+    motherActivity:string;
+    parentsStatus:string;
+    dependantsNumber:number;
+}
+
+export class PersonnalData extends PersonnalDataSchema {
+
+  constructor(args: PersonnalDataSchema) {
+    super();
+    Object.assign(this, args);
+  }
+}
+
+@Injectable({
+  providedIn: 'root'
+})
+export class PersonnalDataAdapter {
+
+  constructor(private addressAdapter: PersonnalDataAdapter) { }
+
+  encode(obj: PersonnalData): any {
+    return {
+        gender: obj.gender,
+        adressNumber: obj.adressNumber,
+        street:obj.street,
+        zipCode:obj.zipCode,
+        city:obj.city,
+        personnalPhone:obj.personnalPhone,
+        parentsPhone:obj.parentsPhone,
+        parentsEmail:obj.parentsEmail,
+        school:obj.school,
+        grade:obj.grade,
+        section:obj.section,
+        specialTeaching:obj.specialTeaching,
+        scholarship:obj.scholarship,
+        fatherActivity:obj.fatherActivity,
+        motherActivity:obj.motherActivity,
+        parentsStatus:obj.parentsStatus,
+        dependantsNumber:obj.dependantsNumber
+    }
+  }
+}
diff --git a/src/app/signup/core/personnalData.service.ts b/src/app/signup/core/personnalData.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1b8a2ab4b850ea25d4577eab71cd10722f6f36c2
--- /dev/null
+++ b/src/app/signup/core/personnalData.service.ts
@@ -0,0 +1,22 @@
+import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { Observable, of } from 'rxjs';
+import { environment } from 'environments/environment';
+import { PersonnalData,PersonnalDataAdapter } from './personnalData.model';
+
+@Injectable({
+  providedIn: 'root',
+})
+export class PersonnalDataService {
+
+  private baseUrl = environment.apiUrl + 'personnalData/';
+
+  constructor(private http: HttpClient, private adapter: PersonnalDataAdapter) { }
+
+  create(personnalData: PersonnalData): Observable<any> {
+    const body: any = this.adapter.encode(personnalData);
+    
+    return this.http.post(this.baseUrl, body);
+  }
+
+}
diff --git a/src/app/signup/signup.module.ts b/src/app/signup/signup.module.ts
index d33e9b53db693a1f90dd14b05031c9ca576ac093..245b3c29f1ab39ba7c6324f80c88bac1bf9fdaa2 100644
--- a/src/app/signup/signup.module.ts
+++ b/src/app/signup/signup.module.ts
@@ -7,10 +7,12 @@ import { RouterModule } from '@angular/router';
 import {
   MatFormFieldModule,
   MatInputModule,
+  MatSelectModule,
   MatButtonModule,
   MatSnackBarModule,
   MatCheckboxModule,
   MatIconModule,
+  MatSlideToggleModule,
 } from '@angular/material';
 
 import { SharedModule } from 'app/shared';
@@ -30,11 +32,13 @@ import { StudentSignupComponent } from './student-signup/student-signup.componen
     SharedModule,
     // Material
     MatFormFieldModule,
+    MatSelectModule,
     MatInputModule,
     MatButtonModule,
     MatSnackBarModule,
     MatCheckboxModule,
     MatIconModule,
+    MatSlideToggleModule,
   ],
 })
 export class SignupModule { }
diff --git a/src/app/signup/student-signup/student-signup.component.html b/src/app/signup/student-signup/student-signup.component.html
index d991f7ce7cbed35f3ca8dde3eb6dd5027eddaf3e..64ba46da0421255eb37e9b2ad0c7ebb5b2e64d8c 100644
--- a/src/app/signup/student-signup/student-signup.component.html
+++ b/src/app/signup/student-signup/student-signup.component.html
@@ -1,4 +1,5 @@
 <app-form-page>
+
   <form [formGroup]="formGroup" (ngSubmit)="submit()">
 
     <h1>Inscription</h1>
@@ -32,58 +33,10 @@
       </mat-hint>
     </mat-form-field>
 
-    <p>
-      Pour assurer ton inscription au tutorat, il est
-      <strong>obligatoire</strong>
-      de remplir le formulaire d'inscription administrative (Google Form).
-    </p>
-
-    <p>
-      <small>
-        Données personnelles : nous utiliserons les données fournies pour assurer le contact avec toi et ta famille,
-        équilibrer les participations aux activités organisées ainsi qu'à des fins d'aggrégation anonymisée
-        (statistiques, demandes de subvention). Plus d'informations dans nos <a routerLink="/mentions-legales"
-          target="_blank">mentions légales</a>.
-      </small>
-    </p>
-
-    <p>
-      J'accepte qu'OSER utilise mes données personnelles fournies ci-dessus ou dans le formulaire d'inscription
-      adminsitrative, dans le strict respect du cadre spécifié ci-dessus :
-    </p>
-
-    <mat-checkbox id="checkboxUtilisation" class="checkbox-field" formControlName="acceptedConditions" required onclick='if (document.getElementById("checkboxUtilisation").classList.contains("mat-checkbox-checked")) {
-        document.getElementById("boutonChiant").setAttribute("disabled", "true");
-      }
-      else {
-        document.getElementById("boutonChiant").removeAttribute("disabled");
-      }'>
-      J'accepte cette utilisation
-    </mat-checkbox>
-
-    <p class="text-center">
-      <a mat-raised-button color="accent" disabled id="boutonChiant"
-        href="https://docs.google.com/forms/d/e/1FAIpQLScJnkGaDdXWL-sPyHuq58gJivr5xkZ_M5AASRCBHx4a9wR4-Q/viewform?usp=sf_link"
-        rel="noreferrer" target="_blank">
-        <mat-icon>launch</mat-icon>
-        Remplir le formulaire
-      </a>
-    </p>
-
-
-
-    <mat-checkbox class="checkbox-field" formControlName="filledForm" required>
-      J'ai rempli le formulaire
-    </mat-checkbox>
-    <!-- ici  -->
-
-
-    <!-- ici  -->
-
     <p>
       Il ne te reste plus qu'à choisir un mot de passe. :-)
     </p>
-
+    
     <!-- Password -->
     <mat-form-field class="full-width">
       <input matInput type="password" formControlName="password" placeholder="Mot de passe" required>
diff --git a/src/app/signup/student-signup/student-signup.component.scss b/src/app/signup/student-signup/student-signup.component.scss
index 3a616f698c8965a1a969a28db5c7403d685f726d..9c39d1abb3430ba8ddec4521194896d92fdaff6a 100644
--- a/src/app/signup/student-signup/student-signup.component.scss
+++ b/src/app/signup/student-signup/student-signup.component.scss
@@ -2,3 +2,18 @@
   display: block;
   margin: .5em 0;
 }
+.form-group{
+  display:flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+.horizontal-display{
+  width:45%;
+}
+.adress-input{
+  margin:5px;
+}
+
+.quarter-display{
+  width:25%;
+}
\ No newline at end of file
diff --git a/src/app/signup/student-signup/student-signup.component.ts b/src/app/signup/student-signup/student-signup.component.ts
index ac78486756ca5897ca1c0deb38a2dc775ba6052c..a07350b4b48ac2c3ac3732fd816c3e5e1d8e8ad0 100644
--- a/src/app/signup/student-signup/student-signup.component.ts
+++ b/src/app/signup/student-signup/student-signup.component.ts
@@ -4,7 +4,7 @@ import { Router } from '@angular/router';
 import { MatSnackBar } from '@angular/material';
 import { Observable } from 'rxjs';
 import { tap, mergeMap } from 'rxjs/operators';
-import { Registration, RegistrationService, PasswordErrorStateMatcher } from '../core';
+import { Registration, RegistrationService, PasswordErrorStateMatcher,PersonnalData,PersonnalDataService } from '../core';
 import { AuthService } from 'app/core';
 
 
@@ -16,17 +16,51 @@ import { AuthService } from 'app/core';
 export class StudentSignupComponent implements OnInit {
 
   registration: Registration;
+  personnalData: PersonnalData
   formGroup: FormGroup;
   loading = false;
+  public showPersonnalDataForm = false;
+  public zipPattern = new RegExp(/^\d{5}(?:\d{2})?$/)
+  public possibleParentsStatus = [
+    {id:"maried",name:"Mariés"},
+    {id:"divorced",name:"Divorcés"},
+    {id:"cohabitation",name:"En concubinage"},
+    {id:"monoparental",name:"Famille monoparentale"}
+  ]
+
+  public possibleParentsActivities = [
+    {id:"farmer",name:"Agriculteur"},
+    {id:"artisan",name:"Artisan, commerçant, chef d'entreprise"},
+    {id:"executive",name:"Cadre, profession intellectuelle supérieure"},
+    {id:"teacher",name:"Enseignant et assimilé"},
+    {id:"intermediate",name:"Profession intermédiaire"},
+    {id:"employee",name:"Employé"},
+    {id:"worker",name:"Ouvrier"},
+    {id:"retreated",name:"Retraité"},
+    {id:"inactive",name:"Inactif"},
+    {id:"other",name:"Autre"} 
+  ]
+
+  public possibleScholarships = [
+    {id:"echelon1",name:"Oui, échelon 1"},
+    {id:"echelon2",name:"Oui, échelon 2"},
+    {id:"echelon3",name:"Oui, échelon 3"},
+    {id:"echelon4",name:"Oui, échelon 4"},
+    {id:"echelon5",name:"Oui, échelon 5"},
+    {id:"echelon6",name:"Oui, échelon 6"},
+    {id:"no",name:"Non"},
+  ]
 
   matcher = new PasswordErrorStateMatcher();
 
   constructor(
     private registrationService: RegistrationService,
+    private personnalDataService : PersonnalDataService,
     private formBuilder: FormBuilder,
     private router: Router,
     private auth: AuthService,
     private snackBar: MatSnackBar,
+    
   ) { }
 
   ngOnInit() {
@@ -34,16 +68,36 @@ export class StudentSignupComponent implements OnInit {
   }
 
   createForm() {
+    
     this.formGroup = this.formBuilder.group({
       firstName: '',
       lastName: '',
       email: ['', Validators.email],
       phoneNumber: '',
+      gender:'',
+      adressNumber:'',
+      street:'',
+      zipCode:['',Validators.pattern(this.zipPattern)],
+      city:'',
+      personnalPhone:'',
+      parentsPhone:'',
+      parentsEmail:['',Validators.email],
+      school:'',
+      grade:'',
+      section:'',
+      specialTeaching:'',
+      scholarship:'',
+      fatherActivity:'',
+      motherActivity:'',
+      parentsStatus:'',
+      dependantsNumber:'',
       password: '',
       passwordConfirm: '',
+      agree: [false, Validators.required],
       filledForm: false,
       acceptedConditions: false,
-    }, { validator: (group) => this.checkPasswords(group)})
+    }, { validator: (group) => this.checkPasswords(group)},)
+    console.log(this.formGroup.value.agree)
   }
 
   private checkPasswords(group: FormGroup): null | any {
@@ -51,10 +105,16 @@ export class StudentSignupComponent implements OnInit {
     const passwordConfirm = group.controls.passwordConfirm.value;
     return password === passwordConfirm ? null : { passwordsDifferent: true };
   }
-
+  toggleShowPersonnalDataForm(){
+    this.showPersonnalDataForm = !this.showPersonnalDataForm;
+  }
   submit() {
     this.loading = true;
-    const registration: Registration = this.formGroup.value;
+    const {email,firstName,lastName,phoneNumber} = this.formGroup.value
+    //const {gender,adressNumber,street,zipCode,city,personnalPhone,parentsPhone,parentsEmail,school,grade,section,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber} = this.formGroup.value;
+    const registration: Registration = {email,firstName,lastName,phoneNumber};
+   // const personnalData: PersonnalData = {gender,adressNumber,street,zipCode,city,personnalPhone,parentsPhone,parentsEmail,school,grade,section,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber};
+   
     const password: string = this.formGroup.controls.password.value;
     this.registrationService.create(registration, password).pipe(
       mergeMap(() => this.auth.login(registration.email, password)),
@@ -64,10 +124,16 @@ export class StudentSignupComponent implements OnInit {
         { duration: 3000 },
       )),
       tap(() => this.loading = false),
-      tap(() => this.router.navigate(['/'])),
     ).subscribe(
       () => {},
       (error) => this.loading = false,
     );
+    // this.personnalDataService.create(personnalData).pipe(
+    //   tap(() => this.loading = false),
+    //   tap(() => this.router.navigate(['/'])),
+    // ).subscribe(
+    //   () => {},
+    //   (error) => this.loading = false,
+    // );
   }
 }
diff --git a/tsconfig.json b/tsconfig.json
index a35a8ee3a40d4326972a6d31edf57a9bce437520..4dfbe28709a954d6809235ff44ac0a763faa36c7 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,7 @@
 {
   "compileOnSave": false,
   "compilerOptions": {
+
     "outDir": "./dist/out-tsc",
     "baseUrl": "src",
     "sourceMap": true,
@@ -15,6 +16,7 @@
     "lib": [
       "es2016",
       "dom"
-    ]
+    ],
+    "skipLibCheck": true
   }
 }