diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml
index fc4853e5df7d611b32e14bbbd3bc9c962c6b2157..b739853b103ac85943fc4c33bf4078dd6bacfa20 100644
--- a/backend/src/main/resources/application.yml
+++ b/backend/src/main/resources/application.yml
@@ -42,30 +42,35 @@ faidare:
     name: URGI GnpIS
     image: https://urgi.versailles.inra.fr/files/faidare/logo/GnpIS.png
   # WUR EU-SOL BreeDB
-  - uri: WUR
+  - uri: https://www.eu-sol.wur.nl/
     url: https://www.eu-sol.wur.nl/
     name: WUR EU-SOL BreeDB
     image: https://urgi.versailles.inra.fr/files/faidare/logo/EU-SOL.png
   # VIB PIPPA
-  - uri: VIB
+  - uri: http://pippa.psb.ugent.be
     url: http://pippa.psb.ugent.be
     name: VIB PIPPA
     image: https://urgi.versailles.inra.fr/files/faidare/logo/VIB.png
   # IBET BioData
-  - uri: IBET
+  - uri: https://biodata.pt
     url: https://biodata.pt
     name: IBET BioData
     image: https://urgi.versailles.inra.fr/files/faidare/logo/biodata.png
   # NIB PISA
-  - uri: NIB
+  - uri: http://nib.si
     url: http://www.pisa.nib.si
     name: NIB PISA
     image: https://urgi.versailles.inra.fr/files/faidare/logo/NIB.png
   # CIRAD TropGENE
-  - uri: CIRAD
+  - uri: http://tropgenedb.cirad.fr
     url: http://tropgenedb.cirad.fr
     name: CIRAD TropGENE
     image: https://urgi.versailles.inra.fr/files/faidare/logo/CIRAD.jpg
+  # EVA
+  - uri: https://www.ebi.ac.uk/eva
+    url: https://www.ebi.ac.uk/eva
+    name: EVA
+    image: https://urgi.versailles.inra.fr/files/faidare/logo/EVA.png
 
 server:
   compression:
diff --git a/frontend/angular.json b/frontend/angular.json
index 7a7ac6aa69654c186f0dfa581b8af2d0f1278def..57ab99330f3e925d17cb6438721c55f5d2910f1a 100644
--- a/frontend/angular.json
+++ b/frontend/angular.json
@@ -41,7 +41,12 @@
               "node_modules/leaflet.markercluster/dist/MarkerCluster.css",
               "node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css"
             ],
-            "scripts": [],
+            "scripts": [
+              "node_modules/@solgenomics/d3-pedigree-tree/build/d3-pedigree-tree.js",
+              "node_modules/@solgenomics/brapi-pedigree-viewer/build/PedigreeViewer.js",
+              "node_modules/@solgenomics/brapijs/build/BrAPI.js",
+              "node_modules/d3/build/d3.js"
+            ],
             "baseHref": "/faidare-dev/",
             "es5BrowserSupport": true
           },
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index aa2aa4ef5adab9259bebd7a7ad229c2a0d30d961..b3f8d6a345375b5ef7e7a3c116a6d6c348508ce8 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -821,6 +821,293 @@
         }
       }
     },
+    "@solgenomics/brapi-pedigree-viewer": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@solgenomics/brapi-pedigree-viewer/-/brapi-pedigree-viewer-2.0.0.tgz",
+      "integrity": "sha512-7lrd2o4D2cfE/gcX/IbccVtAtSNLORVjWniLNfT8b7x26gphrZjgybg/smvWoq76zoF6Y+M47SEXdg90o6SXBg==",
+      "requires": {
+        "@solgenomics/d3-pedigree-tree": "^1.1.1"
+      }
+    },
+    "@solgenomics/brapijs": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@solgenomics/brapijs/-/brapijs-1.0.1.tgz",
+      "integrity": "sha512-NhgL7SSchIzSGVyYIpPc7ACgl1Se9i+4RrucuCq8FGazlijFfUGvIVlBBb6JV2jgawmX5Go6K3BgQCYGRScOqA==",
+      "requires": {
+        "node-fetch": "2.0.0",
+        "rollup": "0.40"
+      }
+    },
+    "@solgenomics/d3-pedigree-tree": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@solgenomics/d3-pedigree-tree/-/d3-pedigree-tree-1.1.1.tgz",
+      "integrity": "sha512-b83hDI3p9arYdDlGYW1VMIstDBuDEuVUC8QCdtR832VBOtGmjaxUrOTA624tyQC4m4okvjo03/cH4eMnjoigMQ==",
+      "requires": {
+        "d3-array": "1",
+        "d3-collection": "1",
+        "d3-scale": "1"
+      }
+    },
+    "@types/d3": {
+      "version": "5.7.2",
+      "resolved": "https://registry.npmjs.org/@types/d3/-/d3-5.7.2.tgz",
+      "integrity": "sha512-7/wClB8ycneWGy3jdvLfXKTd5SoTg9hji7IdJ0RuO9xTY54YpJ8zlcFADcXhY1J3kCBwxp+/1jeN6a5OMwgYOw==",
+      "dev": true,
+      "requires": {
+        "@types/d3-array": "^1",
+        "@types/d3-axis": "*",
+        "@types/d3-brush": "*",
+        "@types/d3-chord": "*",
+        "@types/d3-collection": "*",
+        "@types/d3-color": "*",
+        "@types/d3-contour": "*",
+        "@types/d3-dispatch": "*",
+        "@types/d3-drag": "*",
+        "@types/d3-dsv": "*",
+        "@types/d3-ease": "*",
+        "@types/d3-fetch": "*",
+        "@types/d3-force": "*",
+        "@types/d3-format": "*",
+        "@types/d3-geo": "*",
+        "@types/d3-hierarchy": "*",
+        "@types/d3-interpolate": "*",
+        "@types/d3-path": "*",
+        "@types/d3-polygon": "*",
+        "@types/d3-quadtree": "*",
+        "@types/d3-random": "*",
+        "@types/d3-scale": "*",
+        "@types/d3-scale-chromatic": "*",
+        "@types/d3-selection": "*",
+        "@types/d3-shape": "*",
+        "@types/d3-time": "*",
+        "@types/d3-time-format": "*",
+        "@types/d3-timer": "*",
+        "@types/d3-transition": "*",
+        "@types/d3-voronoi": "*",
+        "@types/d3-zoom": "*"
+      }
+    },
+    "@types/d3-array": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.7.tgz",
+      "integrity": "sha512-51vHWuUyDOi+8XuwPrTw3cFqyh2Slg9y8COYkRfjCPG9TfYqY0hoNPzv/8BrcAy0FeQBzqEo/D/8Nk2caOQJnA==",
+      "dev": true
+    },
+    "@types/d3-axis": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-1.0.12.tgz",
+      "integrity": "sha512-BZISgSD5M8TgURyNtcPAmUB9sk490CO1Thb6/gIn0WZTt3Y50IssX+2Z0vTccoqZksUDTep0b+o4ofXslvNbqg==",
+      "dev": true,
+      "requires": {
+        "@types/d3-selection": "*"
+      }
+    },
+    "@types/d3-brush": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-1.0.10.tgz",
+      "integrity": "sha512-J8jREATIrfJaAfhJivqaEKPnJsRlwwrOPje+ABqZFgamADjll+q9zaDXnYyjiGPPsiJEU+Qq9jQi5rECxIOfhg==",
+      "dev": true,
+      "requires": {
+        "@types/d3-selection": "*"
+      }
+    },
+    "@types/d3-chord": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-1.0.9.tgz",
+      "integrity": "sha512-UA6lI9CVW5cT5Ku/RV4hxoFn4mKySHm7HEgodtfRthAj1lt9rKZEPon58vyYfk+HIAm33DtJJgZwMXy2QgyPXw==",
+      "dev": true
+    },
+    "@types/d3-collection": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/@types/d3-collection/-/d3-collection-1.0.8.tgz",
+      "integrity": "sha512-y5lGlazdc0HNO0F3UUX2DPE7OmYvd9Kcym4hXwrJcNUkDaypR5pX+apuMikl9LfTxKItJsY9KYvzBulpCKyvuQ==",
+      "dev": true
+    },
+    "@types/d3-color": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.2.2.tgz",
+      "integrity": "sha512-6pBxzJ8ZP3dYEQ4YjQ+NVbQaOflfgXq/JbDiS99oLobM2o72uAST4q6yPxHv6FOTCRC/n35ktuo8pvw/S4M7sw==",
+      "dev": true
+    },
+    "@types/d3-contour": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-1.3.0.tgz",
+      "integrity": "sha512-AUCUIjEnC5lCGBM9hS+MryRaFLIrPls4Rbv6ktqbd+TK/RXZPwOy9rtBWmGpbeXcSOYCJTUDwNJuEnmYPJRxHQ==",
+      "dev": true,
+      "requires": {
+        "@types/d3-array": "*",
+        "@types/geojson": "*"
+      }
+    },
+    "@types/d3-dispatch": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-1.0.7.tgz",
+      "integrity": "sha512-M+z84G7UKwK6hEPnGCSccOg8zJ3Nk2hgDQ9sCstHXgsFU0sMxlIZVKqKB5oxUDbALqQG6ucg0G9e8cmOSlishg==",
+      "dev": true
+    },
+    "@types/d3-drag": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-1.2.3.tgz",
+      "integrity": "sha512-rWB5SPvkYVxW3sqUxHOJUZwifD0KqvKwvt1bhNqcLpW6Azsd0BJgRNcyVW8GAferaAk5r8dzeZnf9zKlg9+xMQ==",
+      "dev": true,
+      "requires": {
+        "@types/d3-selection": "*"
+      }
+    },
+    "@types/d3-dsv": {
+      "version": "1.0.36",
+      "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-1.0.36.tgz",
+      "integrity": "sha512-jbIWQ27QJcBNMZbQv0NSQMHnBDCmxghAxePxgyiPH1XPCRkOsTBei7jcdi3fDrUCGpCV3lKrSZFSlOkhUQVClA==",
+      "dev": true
+    },
+    "@types/d3-ease": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-1.0.8.tgz",
+      "integrity": "sha512-VRf8czVWHSJPoUWxMunzpePK02//wHDAswknU8QWzcyrQn6pqe46bHRYi2smSpw5VjsT2CG8k/QeWIdWPS3Bmg==",
+      "dev": true
+    },
+    "@types/d3-fetch": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-1.1.5.tgz",
+      "integrity": "sha512-o9c0ItT5/Gl3wbNuVpzRnYX1t3RghzeWAjHUVLuyZJudiTxC4f/fC0ZPFWLQ2lVY8pAMmxpV8TJ6ETYCgPeI3A==",
+      "dev": true,
+      "requires": {
+        "@types/d3-dsv": "*"
+      }
+    },
+    "@types/d3-force": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.1.tgz",
+      "integrity": "sha512-jqK+I36uz4kTBjyk39meed5y31Ab+tXYN/x1dn3nZEus9yOHCLc+VrcIYLc/aSQ0Y7tMPRlIhLetulME76EiiA==",
+      "dev": true
+    },
+    "@types/d3-format": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.3.1.tgz",
+      "integrity": "sha512-KAWvReOKMDreaAwOjdfQMm0HjcUMlQG47GwqdVKgmm20vTd2pucj0a70c3gUSHrnsmo6H2AMrkBsZU2UhJLq8A==",
+      "dev": true
+    },
+    "@types/d3-geo": {
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-1.11.1.tgz",
+      "integrity": "sha512-Ox8WWOG3igDRoep/dNsGbOiSJYdUG3ew/6z0ETvHyAtXZVBjOE0S96zSSmzgl0gqQ3RdZjn2eeJOj9oRcMZPkQ==",
+      "dev": true,
+      "requires": {
+        "@types/geojson": "*"
+      }
+    },
+    "@types/d3-hierarchy": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.6.tgz",
+      "integrity": "sha512-vvSaIDf/Ov0o3KwMT+1M8+WbnnlRiGjlGD5uvk83a1mPCTd/E5x12bUJ/oP55+wUY/4Kb5kc67rVpVGJ2KUHxg==",
+      "dev": true
+    },
+    "@types/d3-interpolate": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz",
+      "integrity": "sha512-z8Zmi08XVwe8e62vP6wcA+CNuRhpuUU5XPEfqpG0hRypDE5BWNthQHB1UNWWDB7ojCbGaN4qBdsWp5kWxhT1IQ==",
+      "dev": true,
+      "requires": {
+        "@types/d3-color": "*"
+      }
+    },
+    "@types/d3-path": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.8.tgz",
+      "integrity": "sha512-AZGHWslq/oApTAHu9+yH/Bnk63y9oFOMROtqPAtxl5uB6qm1x2lueWdVEjsjjV3Qc2+QfuzKIwIR5MvVBakfzA==",
+      "dev": true
+    },
+    "@types/d3-polygon": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-1.0.7.tgz",
+      "integrity": "sha512-Xuw0eSjQQKs8jTiNbntWH0S+Xp+JyhqxmQ0YAQ3rDu6c3kKMFfgsaGN7Jv5u3zG6yVX/AsLP/Xs/QRjmi9g43Q==",
+      "dev": true
+    },
+    "@types/d3-quadtree": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-1.0.7.tgz",
+      "integrity": "sha512-0ajFawWicfjsaCLh6NzxOyVDYhQAmMFbsiI3MPGLInorauHFEh9/Cl6UHNf+kt/J1jfoxKY/ZJaKAoDpbvde5Q==",
+      "dev": true
+    },
+    "@types/d3-random": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-1.1.2.tgz",
+      "integrity": "sha512-Jui+Zn28pQw/3EayPKaN4c/PqTvqNbIPjHkgIIFnxne1FdwNjfHtAIsZIBMKlquQNrrMjFzCrlF2gPs3xckqaA==",
+      "dev": true
+    },
+    "@types/d3-scale": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-2.1.1.tgz",
+      "integrity": "sha512-kNTkbZQ+N/Ip8oX9PByXfDLoCSaZYm+VUOasbmsa6KD850/ziMdYepg/8kLg2plHzoLANdMqPoYQbvExevLUHg==",
+      "dev": true,
+      "requires": {
+        "@types/d3-time": "*"
+      }
+    },
+    "@types/d3-scale-chromatic": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.3.1.tgz",
+      "integrity": "sha512-Ny3rLbV5tnmqgW7w/poCcef4kXP8mHPo/p8EjTS5d9OUk8MlqAeRaM8eF7Vyv7QMLiIXNE94Pa1cMLSPkXQBoQ==",
+      "dev": true
+    },
+    "@types/d3-selection": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.1.tgz",
+      "integrity": "sha512-bv8IfFYo/xG6dxri9OwDnK3yCagYPeRIjTlrcdYJSx+FDWlCeBDepIHUpqROmhPtZ53jyna0aUajZRk0I3rXNA==",
+      "dev": true
+    },
+    "@types/d3-shape": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.1.tgz",
+      "integrity": "sha512-usqdvUvPJ7AJNwpd2drOzRKs1ELie53p2m2GnPKr076/ADM579jVTJ5dPsoZ5E/CMNWk8lvPWYQSvilpp6jjwg==",
+      "dev": true,
+      "requires": {
+        "@types/d3-path": "*"
+      }
+    },
+    "@types/d3-time": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.0.10.tgz",
+      "integrity": "sha512-aKf62rRQafDQmSiv1NylKhIMmznsjRN+MnXRXTqHoqm0U/UZzVpdrtRnSIfdiLS616OuC1soYeX1dBg2n1u8Xw==",
+      "dev": true
+    },
+    "@types/d3-time-format": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.1.1.tgz",
+      "integrity": "sha512-tJSyXta8ZyJ52wDDHA96JEsvkbL6jl7wowGmuf45+fAkj5Y+SQOnz0N7/H68OWmPshPsAaWMQh+GAws44IzH3g==",
+      "dev": true
+    },
+    "@types/d3-timer": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-1.0.9.tgz",
+      "integrity": "sha512-WvfJ3LFxBbWjqRGz9n7GJt08RrTHPJDVsIwwoCMROlqF+iDacYiAFjf9oqnq0mXpb2juA2N/qjKP+MKdal3YNQ==",
+      "dev": true
+    },
+    "@types/d3-transition": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-1.1.4.tgz",
+      "integrity": "sha512-/vsmKVUIXEyCcIXYAlw7bnYkIs9/J/nZbptRJFKUN3FdXq/dF6j9z9xXzerkyU6TDHLrMrwx9eGwdKyTIy/j9w==",
+      "dev": true,
+      "requires": {
+        "@types/d3-selection": "*"
+      }
+    },
+    "@types/d3-voronoi": {
+      "version": "1.1.9",
+      "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz",
+      "integrity": "sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ==",
+      "dev": true
+    },
+    "@types/d3-zoom": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-1.7.4.tgz",
+      "integrity": "sha512-5jnFo/itYhJeB2khO/lKe730kW/h2EbKMOvY0uNp3+7NdPm4w63DwPEMxifQZ7n902xGYK5DdU67FmToSoy4VA==",
+      "dev": true,
+      "requires": {
+        "@types/d3-interpolate": "*",
+        "@types/d3-selection": "*"
+      }
+    },
     "@types/geojson": {
       "version": "7946.0.6",
       "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.6.tgz",
@@ -1273,6 +1560,7 @@
       "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
       "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
       "dev": true,
+      "optional": true,
       "requires": {
         "delegates": "^1.0.0",
         "readable-stream": "^2.0.6"
@@ -1802,9 +2090,9 @@
       }
     },
     "bootstrap": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.3.tgz",
-      "integrity": "sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w=="
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz",
+      "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag=="
     },
     "brace-expansion": {
       "version": "1.1.11",
@@ -2484,7 +2772,8 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
       "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "constants-browserify": {
       "version": "1.0.0",
@@ -2717,6 +3006,306 @@
       "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
       "dev": true
     },
+    "d3": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/d3/-/d3-4.0.0.tgz",
+      "integrity": "sha1-PhCDua82fNlq6L99IQ3EmpB+DCs=",
+      "requires": {
+        "d3-array": "1.0.0",
+        "d3-axis": "1.0.0",
+        "d3-brush": "1.0.1",
+        "d3-collection": "1.0.0",
+        "d3-color": "1.0.0",
+        "d3-dispatch": "1.0.0",
+        "d3-drag": "1.0.0",
+        "d3-dsv": "1.0.0",
+        "d3-ease": "1.0.0",
+        "d3-force": "1.0.0",
+        "d3-format": "1.0.0",
+        "d3-geo": "1.0.0",
+        "d3-hierarchy": "1.0.0",
+        "d3-interpolate": "1.0.0",
+        "d3-path": "1.0.0",
+        "d3-polygon": "1.0.0",
+        "d3-quadtree": "1.0.0",
+        "d3-queue": "3.0.1",
+        "d3-random": "1.0.0",
+        "d3-request": "1.0.0",
+        "d3-scale": "1.0.0",
+        "d3-selection": "1.0.0",
+        "d3-shape": "1.0.0",
+        "d3-time": "1.0.0",
+        "d3-time-format": "2.0.0",
+        "d3-timer": "1.0.0",
+        "d3-transition": "1.0.0",
+        "d3-voronoi": "1.0.0",
+        "d3-zoom": "1.0.1"
+      },
+      "dependencies": {
+        "d3-array": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.0.0.tgz",
+          "integrity": "sha1-8OVQ6JrMp/2rdMr+SR99gshwR68="
+        },
+        "d3-collection": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.0.tgz",
+          "integrity": "sha1-EZ/mM7+UazTWgrp9roooLG9phHs="
+        },
+        "d3-color": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.0.tgz",
+          "integrity": "sha1-6qv524d6LnltJ2RKj1uT3fn/boQ="
+        },
+        "d3-format": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.0.0.tgz",
+          "integrity": "sha1-e5jQfZkFedCEtD516y663sEvzk0="
+        },
+        "d3-interpolate": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.0.0.tgz",
+          "integrity": "sha1-6Q6pC+5YJo4IZDKQ0WBEXyZRHfo=",
+          "requires": {
+            "d3-color": "1"
+          }
+        },
+        "d3-scale": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.0.tgz",
+          "integrity": "sha1-C0F1yjHL5l4lRCfkZi3678NzRi0=",
+          "requires": {
+            "d3-array": "1",
+            "d3-collection": "1",
+            "d3-color": "1",
+            "d3-format": "1",
+            "d3-interpolate": "1",
+            "d3-time": "1",
+            "d3-time-format": "2"
+          }
+        },
+        "d3-time": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.0.tgz",
+          "integrity": "sha1-u/5eeN2zE/BywroAy7bpbh1BnH8="
+        },
+        "d3-time-format": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.0.tgz",
+          "integrity": "sha1-KVL138Qq/q4dQ8vwl+d1jpu8qH4=",
+          "requires": {
+            "d3-time": "1"
+          }
+        }
+      }
+    },
+    "d3-array": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
+      "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
+    },
+    "d3-axis": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.0.tgz",
+      "integrity": "sha1-sTKFex8OgCR9ZIYa1XaZ15GHpPE="
+    },
+    "d3-brush": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.1.tgz",
+      "integrity": "sha1-1Fev/CZxpUzBzFQp7/bEwAvQyOM=",
+      "requires": {
+        "d3-dispatch": "1",
+        "d3-drag": "1",
+        "d3-interpolate": "1",
+        "d3-selection": "1",
+        "d3-transition": "1"
+      }
+    },
+    "d3-collection": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz",
+      "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A=="
+    },
+    "d3-color": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.3.0.tgz",
+      "integrity": "sha512-NHODMBlj59xPAwl2BDiO2Mog6V+PrGRtBfWKqKRrs9MCqlSkIEb0Z/SfY7jW29ReHTDC/j+vwXhnZcXI3+3fbg=="
+    },
+    "d3-dispatch": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.0.tgz",
+      "integrity": "sha1-fzbCFkmhDyoyRR3MqHmKBUFkSb4="
+    },
+    "d3-drag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.0.0.tgz",
+      "integrity": "sha1-NPDLYmV1T5TdH8NCpXRu22Deumw=",
+      "requires": {
+        "d3-dispatch": "1",
+        "d3-selection": "1"
+      }
+    },
+    "d3-dsv": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.0.tgz",
+      "integrity": "sha1-RRQvTYT/tiIO8JwXe2L+fyKBqBM=",
+      "requires": {
+        "rw": "1"
+      }
+    },
+    "d3-ease": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.0.tgz",
+      "integrity": "sha1-AZgbM/MMpug7XgO3hnNF8EV9eaU="
+    },
+    "d3-force": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.0.0.tgz",
+      "integrity": "sha1-XxlaoSahnIPwQcsUjmr2WuVF0vo=",
+      "requires": {
+        "d3-collection": "1",
+        "d3-dispatch": "1",
+        "d3-quadtree": "1",
+        "d3-timer": "1"
+      }
+    },
+    "d3-format": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz",
+      "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ=="
+    },
+    "d3-geo": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.0.0.tgz",
+      "integrity": "sha1-fETXS707yKxPH9Geil8fytwkND4=",
+      "requires": {
+        "d3-array": "1"
+      }
+    },
+    "d3-hierarchy": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.0.0.tgz",
+      "integrity": "sha1-Fei6Kax1DAYFcwWm7FVBAmPH/Qo="
+    },
+    "d3-interpolate": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz",
+      "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==",
+      "requires": {
+        "d3-color": "1"
+      }
+    },
+    "d3-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.0.tgz",
+      "integrity": "sha1-MKjO5g6Ngh9lf9wkgQdVvvkmnnY="
+    },
+    "d3-polygon": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.0.tgz",
+      "integrity": "sha1-WAeVhddaBKLy6yYLw35mMhn9MUQ="
+    },
+    "d3-quadtree": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.0.tgz",
+      "integrity": "sha1-Q8BokdeyUyZlbjj+wWxGnllvFH4="
+    },
+    "d3-queue": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.1.tgz",
+      "integrity": "sha1-ozGNA4lejxoxOzpeRiaO+fMRfWc="
+    },
+    "d3-random": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.0.0.tgz",
+      "integrity": "sha1-5cvTjx2oQh1Sa/a7NDgZRq5PtAk="
+    },
+    "d3-request": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.0.tgz",
+      "integrity": "sha1-q7K7yGw4aQTfMY0wAImFeYbq7d8=",
+      "requires": {
+        "d3-collection": "1",
+        "d3-dispatch": "1",
+        "d3-dsv": "1",
+        "xmlhttprequest": "1"
+      }
+    },
+    "d3-scale": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz",
+      "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==",
+      "requires": {
+        "d3-array": "^1.2.0",
+        "d3-collection": "1",
+        "d3-color": "1",
+        "d3-format": "1",
+        "d3-interpolate": "1",
+        "d3-time": "1",
+        "d3-time-format": "2"
+      }
+    },
+    "d3-selection": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.0.0.tgz",
+      "integrity": "sha1-MHpYLzGf4VeesKYOZt2rdGYIXBI="
+    },
+    "d3-shape": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.0.0.tgz",
+      "integrity": "sha1-zKMySHV55Fc1TIg4oKKDvmOEWbo=",
+      "requires": {
+        "d3-path": "1"
+      }
+    },
+    "d3-time": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.11.tgz",
+      "integrity": "sha512-Z3wpvhPLW4vEScGeIMUckDW7+3hWKOQfAWg/U7PlWBnQmeKQ00gCUsTtWSYulrKNA7ta8hJ+xXc6MHrMuITwEw=="
+    },
+    "d3-time-format": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz",
+      "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==",
+      "requires": {
+        "d3-time": "1"
+      }
+    },
+    "d3-timer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.0.tgz",
+      "integrity": "sha1-p3/GnSSP4fbbrWEQhoroW2bhODk="
+    },
+    "d3-transition": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.0.0.tgz",
+      "integrity": "sha1-pPUPJ3uwhJNgOjD7kEUZ8+3UzSM=",
+      "requires": {
+        "d3-color": "1",
+        "d3-dispatch": "1",
+        "d3-ease": "1",
+        "d3-interpolate": "1",
+        "d3-selection": "1",
+        "d3-timer": "1"
+      }
+    },
+    "d3-voronoi": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.0.0.tgz",
+      "integrity": "sha1-EYoC12Xi4wTLJCeYkC0H0aJn+Cc="
+    },
+    "d3-zoom": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.0.1.tgz",
+      "integrity": "sha1-mbS2XVZ8ckLLjSi2FTpJhONP1Xc=",
+      "requires": {
+        "d3-dispatch": "1",
+        "d3-drag": "1",
+        "d3-interpolate": "1",
+        "d3-selection": "1",
+        "d3-transition": "1"
+      }
+    },
     "dashdash": {
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -2886,7 +3475,8 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
       "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "depd": {
       "version": "1.1.2",
@@ -3853,7 +4443,8 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -3874,12 +4465,14 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -3894,17 +4487,20 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -4021,7 +4617,8 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "ini": {
           "version": "1.3.5",
@@ -4033,6 +4630,7 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -4047,6 +4645,7 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -4054,12 +4653,14 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "minipass": {
           "version": "2.3.5",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.2",
             "yallist": "^3.0.0"
@@ -4078,6 +4679,7 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -4158,7 +4760,8 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -4170,6 +4773,7 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -4255,7 +4859,8 @@
         "safe-buffer": {
           "version": "5.1.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -4291,6 +4896,7 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -4310,6 +4916,7 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -4353,20 +4960,23 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "yallist": {
           "version": "3.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },
     "fstream": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
-      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
       "dev": true,
+      "optional": true,
       "requires": {
         "graceful-fs": "^4.1.2",
         "inherits": "~2.0.0",
@@ -4379,6 +4989,7 @@
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
       "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
       "dev": true,
+      "optional": true,
       "requires": {
         "aproba": "^1.0.3",
         "console-control-strings": "^1.0.0",
@@ -4416,7 +5027,8 @@
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
       "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "get-stream": {
       "version": "3.0.0",
@@ -4528,12 +5140,12 @@
       "dev": true
     },
     "handlebars": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz",
-      "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==",
+      "version": "4.5.2",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.2.tgz",
+      "integrity": "sha512-29Zxv/cynYB7mkT1rVWQnV7mGX6v7H/miQ6dbEpYTKq5eJBN7PsRB+ViYJlcT6JINTSu4dVB9kOqEun78h6Exg==",
       "dev": true,
       "requires": {
-        "async": "^2.5.0",
+        "neo-async": "^2.6.0",
         "optimist": "^0.6.1",
         "source-map": "^0.6.1",
         "uglify-js": "^3.1.4"
@@ -4605,7 +5217,8 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
       "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "has-value": {
       "version": "1.0.0",
@@ -4786,15 +5399,24 @@
       "dev": true
     },
     "https-proxy-agent": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
-      "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
+      "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
       "dev": true,
       "requires": {
-        "agent-base": "^4.1.0",
+        "agent-base": "^4.3.0",
         "debug": "^3.1.0"
       },
       "dependencies": {
+        "agent-base": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
+          "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
+          "dev": true,
+          "requires": {
+            "es6-promisify": "^5.0.0"
+          }
+        },
         "debug": {
           "version": "3.2.6",
           "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
@@ -4805,9 +5427,9 @@
           }
         },
         "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==",
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
         }
       }
@@ -5325,7 +5947,8 @@
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
       "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "is-windows": {
       "version": "1.0.2",
@@ -5604,9 +6227,9 @@
       "dev": true
     },
     "jquery": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
-      "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg=="
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
+      "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
     },
     "js-base64": {
       "version": "2.5.1",
@@ -5622,9 +6245,9 @@
       "dev": true
     },
     "js-yaml": {
-      "version": "3.12.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
-      "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
+      "version": "3.13.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
       "dev": true,
       "requires": {
         "argparse": "^1.0.7",
@@ -5876,6 +6499,21 @@
         "source-map-support": "^0.5.5"
       }
     },
+    "katex": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/katex/-/katex-0.11.1.tgz",
+      "integrity": "sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==",
+      "requires": {
+        "commander": "^2.19.0"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+        }
+      }
+    },
     "killable": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@@ -5968,6 +6606,7 @@
       "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
       "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
       "dev": true,
+      "optional": true,
       "requires": {
         "graceful-fs": "^4.1.2",
         "parse-json": "^2.2.0",
@@ -5980,7 +6619,8 @@
           "version": "2.3.0",
           "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },
@@ -6012,9 +6652,9 @@
       }
     },
     "lodash": {
-      "version": "4.17.11",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
-      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+      "version": "4.17.15",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
       "dev": true
     },
     "lodash.assign": {
@@ -6037,9 +6677,9 @@
       "dev": true
     },
     "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==",
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+      "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
       "dev": true,
       "optional": true
     },
@@ -6255,7 +6895,8 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
       "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "map-visit": {
       "version": "1.0.0",
@@ -6267,9 +6908,9 @@
       }
     },
     "marked": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.2.tgz",
-      "integrity": "sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA=="
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
+      "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg=="
     },
     "md5.js": {
       "version": "1.3.5",
@@ -6483,9 +7124,9 @@
       }
     },
     "mixin-deep": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
-      "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
       "dev": true,
       "requires": {
         "for-in": "^1.0.2",
@@ -6629,12 +7270,13 @@
       "integrity": "sha512-Zorpd5I6KmvTtiYwcjymzCaortznMZr5CRB737XaNheITTUb2rVLUoEBk1dwQE3b/Cp5sByuS85fzwJRvjEXKQ=="
     },
     "ngx-markdown": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-8.0.2.tgz",
-      "integrity": "sha512-dLF205/JrSI7pOIgsrikhf9KYF6yiP797FuHGjVEw51KhHfuhCoR+3pl7Ky2vxuQBJjmkNGbgH75+Qy2SAnFEg==",
+      "version": "8.2.1",
+      "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-8.2.1.tgz",
+      "integrity": "sha512-59LG8rEoOwDsZyyJckp+QDnW/c5wMaRpNkb6TWktlBVTfQKyAYHr6BuSskVbZ4y8nsj54UQg0CDFLBOfUiqOwA==",
       "requires": {
-        "@types/marked": "^0.6.0",
-        "marked": "^0.6.0",
+        "@types/marked": "^0.6.5",
+        "katex": "^0.11.1",
+        "marked": "^0.7.0",
         "prismjs": "^1.16.0",
         "tslib": "^1.9.0"
       }
@@ -6662,6 +7304,11 @@
       "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
       "dev": true
     },
+    "node-fetch": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.0.0.tgz",
+      "integrity": "sha1-mCu6Q+zU8pIqKcwYamu7C7c/y6Y="
+    },
     "node-fetch-npm": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz",
@@ -6919,6 +7566,7 @@
       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
       "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
       "dev": true,
+      "optional": true,
       "requires": {
         "are-we-there-yet": "~1.1.2",
         "console-control-strings": "~1.1.0",
@@ -7579,9 +8227,9 @@
       "dev": true
     },
     "prismjs": {
-      "version": "1.16.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.16.0.tgz",
-      "integrity": "sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==",
+      "version": "1.17.1",
+      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz",
+      "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==",
       "requires": {
         "clipboard": "^2.0.0"
       }
@@ -7933,6 +8581,7 @@
       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
       "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
       "dev": true,
+      "optional": true,
       "requires": {
         "load-json-file": "^1.0.0",
         "normalize-package-data": "^2.3.2",
@@ -7944,6 +8593,7 @@
           "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
           "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
           "dev": true,
+          "optional": true,
           "requires": {
             "graceful-fs": "^4.1.2",
             "pify": "^2.0.0",
@@ -7954,7 +8604,8 @@
           "version": "2.3.0",
           "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },
@@ -7963,6 +8614,7 @@
       "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
       "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
       "dev": true,
+      "optional": true,
       "requires": {
         "find-up": "^1.0.0",
         "read-pkg": "^1.0.0"
@@ -7973,6 +8625,7 @@
           "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
           "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
           "dev": true,
+          "optional": true,
           "requires": {
             "path-exists": "^2.0.0",
             "pinkie-promise": "^2.0.0"
@@ -7983,6 +8636,7 @@
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
           "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
           "dev": true,
+          "optional": true,
           "requires": {
             "pinkie-promise": "^2.0.0"
           }
@@ -8253,6 +8907,29 @@
         "inherits": "^2.0.1"
       }
     },
+    "rollup": {
+      "version": "0.40.2",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.40.2.tgz",
+      "integrity": "sha1-tZyDdzMvgovjiYMZLzNp5QL55Es=",
+      "requires": {
+        "source-map-support": "^0.4.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        },
+        "source-map-support": {
+          "version": "0.4.18",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+          "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+          "requires": {
+            "source-map": "^0.5.6"
+          }
+        }
+      }
+    },
     "run-async": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
@@ -8271,6 +8948,11 @@
         "aproba": "^1.1.1"
       }
     },
+    "rw": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+      "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
+    },
     "rxjs": {
       "version": "6.4.0",
       "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
@@ -8513,9 +9195,9 @@
       "dev": true
     },
     "set-value": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
-      "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
       "dev": true,
       "requires": {
         "extend-shallow": "^2.0.1",
@@ -9263,6 +9945,7 @@
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
       "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
       "dev": true,
+      "optional": true,
       "requires": {
         "is-utf8": "^0.2.0"
       }
@@ -9365,14 +10048,14 @@
       "dev": true
     },
     "tar": {
-      "version": "2.2.1",
-      "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
-      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+      "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
       "dev": true,
       "optional": true,
       "requires": {
         "block-stream": "*",
-        "fstream": "^1.0.2",
+        "fstream": "^1.0.12",
         "inherits": "2"
       }
     },
@@ -9686,6 +10369,13 @@
       "requires": {
         "jquery": "3.3.1",
         "jstree": "3.3.5"
+      },
+      "dependencies": {
+        "jquery": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
+          "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg=="
+        }
       }
     },
     "tree-kill": {
@@ -9865,38 +10555,15 @@
       "dev": true
     },
     "union-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
-      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
       "dev": true,
       "requires": {
         "arr-union": "^3.1.0",
         "get-value": "^2.0.6",
         "is-extendable": "^0.1.1",
-        "set-value": "^0.4.3"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "set-value": {
-          "version": "0.4.3",
-          "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
-          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-extendable": "^0.1.1",
-            "is-plain-object": "^2.0.1",
-            "to-object-path": "^0.3.0"
-          }
-        }
+        "set-value": "^2.0.1"
       }
     },
     "unique-filename": {
@@ -10625,6 +11292,7 @@
       "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
       "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
       "dev": true,
+      "optional": true,
       "requires": {
         "string-width": "^1.0.2 || 2"
       }
@@ -10701,6 +11369,11 @@
       "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=",
       "dev": true
     },
+    "xmlhttprequest": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+      "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
+    },
     "xmlhttprequest-ssl": {
       "version": "1.5.5",
       "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index e4dc6e1e794f5866c8912d4277d045a432733841..a8954a6294e15911c9ddc8a6ef068a67336d3f13 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -22,18 +22,22 @@
     "@angular/platform-browser-dynamic": "7.2.7",
     "@angular/router": "7.2.7",
     "@ng-bootstrap/ng-bootstrap": "4.0.0",
+    "@solgenomics/brapi-pedigree-viewer": "2.0.0",
+    "@solgenomics/brapijs": "1.0.1",
+    "@solgenomics/d3-pedigree-tree": "1.1.1",
     "@types/leaflet": "1.2.14",
     "@types/leaflet.markercluster": "1.0.3",
     "angular-coordinates": "1.0.0",
     "angular-mocks": "1.7.8",
-    "bootstrap": "4.1.3",
+    "bootstrap": "4.3.1",
     "core-js": "2.5.7",
+    "d3": "4.0.0",
     "font-awesome": "4.7.0",
     "leaflet": "1.3.4",
     "leaflet.markercluster": "1.4.1",
     "moment": "2.24.0",
     "ng-mocks": "7.6.0",
-    "ngx-markdown": "8.0.2",
+    "ngx-markdown": "8.2.1",
     "ngx-moment": "3.3.0",
     "popper.js": "1.14.6",
     "rxjs": "6.4.0",
@@ -46,6 +50,7 @@
     "@angular/cli": "7.3.4",
     "@angular/compiler-cli": "7.2.7",
     "@angular/language-service": "7.2.7",
+    "@types/d3": "5.7.2",
     "@types/jasmine": "2.8.12",
     "@types/jasminewd2": "2.0.6",
     "@types/node": "8.9.5",
diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts
index 92d8652856c0b612140b1b328391a9809364862c..002c2359059888a8f62bef36fc5f1ee059419114 100644
--- a/frontend/src/app/app.module.ts
+++ b/frontend/src/app/app.module.ts
@@ -26,6 +26,7 @@ import { MomentModule } from 'ngx-moment';
 import { XrefsComponent } from './xrefs/xrefs.component';
 import { CoordinatesModule } from 'angular-coordinates';
 import { CardGenericDocumentComponent } from './card-generic-document/card-generic-document.component';
+import { GenealogicTreeComponent } from './genealogic-tree/genealogic-tree.component';
 import { MarkdownModule, MarkedOptions, MarkedRenderer } from 'ngx-markdown';
 import { MarkdownPageComponent } from './markdown-page/markdown-page.component';
 
@@ -50,7 +51,9 @@ import { MarkdownPageComponent } from './markdown-page/markdown-page.component';
         CardTableComponent,
         XrefsComponent,
         CardGenericDocumentComponent,
-        MarkdownPageComponent
+        MarkdownPageComponent,
+        CardGenericDocumentComponent,
+        GenealogicTreeComponent
     ],
     imports: [
         BrowserModule,
diff --git a/frontend/src/app/genealogic-tree/genealogic-tree.component.html b/frontend/src/app/genealogic-tree/genealogic-tree.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..39881214467740c9a16afd8eee7fd81684a23265
--- /dev/null
+++ b/frontend/src/app/genealogic-tree/genealogic-tree.component.html
@@ -0,0 +1,4 @@
+
+<div id="pdgv-wrap">
+
+</div>
diff --git a/frontend/src/app/genealogic-tree/genealogic-tree.component.scss b/frontend/src/app/genealogic-tree/genealogic-tree.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/frontend/src/app/genealogic-tree/genealogic-tree.component.spec.ts b/frontend/src/app/genealogic-tree/genealogic-tree.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a3191a1e03e8dbfb30beae73786cec574d48c375
--- /dev/null
+++ b/frontend/src/app/genealogic-tree/genealogic-tree.component.spec.ts
@@ -0,0 +1,50 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import {
+    GenealogicTreeComponent,
+    GenealogicTreeFactory
+} from './genealogic-tree.component';
+import { CropOntologyWidgetFactory } from '../form/trait-ontology-widget/trait-ontology-widget.component';
+
+describe('GenealogicTreeComponent', () => {
+    let component: GenealogicTreeComponent;
+    let fixture: ComponentFixture<GenealogicTreeComponent>;
+    // TODO create complete GenealogicTreeobject
+    const fakeGenealogicTree = {};
+
+    /*beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            declarations: [GenealogicTreeComponent]
+        })
+            .compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(GenealogicTreeComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });*/
+
+    const fakeFactory: GenealogicTreeFactory = {
+        initialize() {
+            return fakeGenealogicTree;
+        }
+    };
+
+    beforeEach(() => TestBed.configureTestingModule({
+        declarations: [GenealogicTreeComponent],
+        providers: [
+            { provide: GenealogicTreeComponent, useValue: fakeFactory }
+        ]
+
+    }));
+
+
+    it('should create', () => {
+        const fixture = TestBed.createComponent(GenealogicTreeComponent);
+        const component = fixture.componentInstance;
+        fixture.detectChanges();
+        expect(component).toBeTruthy();
+    });
+});
+
diff --git a/frontend/src/app/genealogic-tree/genealogic-tree.component.ts b/frontend/src/app/genealogic-tree/genealogic-tree.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fc565385cebc5b0c06b8b81d35ffce3587ada89d
--- /dev/null
+++ b/frontend/src/app/genealogic-tree/genealogic-tree.component.ts
@@ -0,0 +1,45 @@
+import { Component, Input, OnInit } from '@angular/core';
+import BrAPI from '@solgenomics/brapijs';
+import PedigreeViewer from '@solgenomics/brapi-pedigree-viewer';
+import GenealogicTree from '@solgenomics/brapi-pedigree-viewer/build/PedigreeViewer.js'
+
+export class GenealogicTreeFactory {
+
+    initialize(...args): GenealogicTree {
+        return new GenealogicTree(...args);
+    }
+}
+
+@Component({
+    selector: 'faidare-genealogic-tree',
+    templateUrl: './genealogic-tree.component.html',
+    styleUrls: ['./genealogic-tree.component.scss']
+})
+export class GenealogicTreeComponent implements OnInit {
+
+    @Input() germplasmId: String;
+
+    ngOnInit() {
+
+        const pdg = PedigreeViewer(
+            /*REQUIRED Server: BrAPI.js handle for target endpoint*/
+            BrAPI('http://localhost:4200/faidare-dev/brapi/v1'),
+            // this.brapiService,
+            /*OPTIONAL a function which returns a link to a germplasm information page,*/
+            function (germplasmId) {
+                return 'http://localhost:4200/faidare-dev/germplasm?id=' + germplasmId;
+            }
+        );
+        if (pdg != null) {
+            pdg.newTree(
+                // REQUIRED root germplasmDbId of germplasm which should be displayed on start (highlighted in pink)
+                this.germplasmId
+            );
+
+            pdg.drawViewer(
+                // REQUIRED selector for the parent node of the new viewer SVG element.
+                'div#pdgv-wrap'
+            );
+        }
+    }
+}
diff --git a/frontend/src/app/germplasm-card/germplasm-card.component.html b/frontend/src/app/germplasm-card/germplasm-card.component.html
index 7d8b923ba0bd5b70106433f86055f778fe10f5a3..24397f9953915d995f48db4b41f1741d3ad33591 100644
--- a/frontend/src/app/germplasm-card/germplasm-card.component.html
+++ b/frontend/src/app/germplasm-card/germplasm-card.component.html
@@ -574,6 +574,16 @@
     <ng-template>
       <div class="card-body card-section-body">
 
+        <div class="row row-sep">
+          <div class="col">
+            <faidare-genealogic-tree [germplasmId]="germplasmGnpis.germplasmDbId"></faidare-genealogic-tree>
+              <figcaption class="figure-caption text-center" style="color: #0f6fa1;">
+                Zoom in and drag to see the whole tree.
+                Clic on nodes to extend tree.
+              </figcaption>
+          </div>
+        </div>
+
         <faidare-card-row
           label="Crossing plan"
           [test]="germplasmPedigree && germplasmPedigree.crossingPlan">
@@ -665,13 +675,18 @@
 
               </ng-template>
             </faidare-card-row>
+
           </ng-container>
+
         </div>
 
       </div>
+
+
     </ng-template>
   </faidare-card-section>
 
+
   <!--Section for the information about the population, collection and panel of the germplasm-->
   <faidare-card-section
     header="Population"
@@ -768,6 +783,8 @@
   </faidare-card-section>
 
   <!-- XRefs part -->
-  <faidare-xrefs [xrefId]="germplasmGnpis.germplasmPUI"></faidare-xrefs>
+  <!--<faidare-xrefs [xrefId]="germplasmGnpis.germplasmPUI"></faidare-xrefs>-->
+
+
 </ng-container>
 
diff --git a/frontend/src/app/germplasm-card/germplasm-card.component.spec.ts b/frontend/src/app/germplasm-card/germplasm-card.component.spec.ts
index 04735dd58837edcf96893a5e715e28fa7161b3fe..ce8cf6763ca0cf838e49bce157fcbb1725f4c651 100644
--- a/frontend/src/app/germplasm-card/germplasm-card.component.spec.ts
+++ b/frontend/src/app/germplasm-card/germplasm-card.component.spec.ts
@@ -17,10 +17,10 @@ import { MapComponent } from '../map/map.component';
 import { BrapiGermplasmAttributes, BrapiGermplasmPedigree, BrapiResult, BrapiSibling } from '../models/brapi.model';
 import { Donor, Germplasm, GermplasmInstitute, GermplasmSet, Institute, Site } from '../models/gnpis.model';
 import { DataDiscoverySource } from '../models/data-discovery.model';
-import { MockComponent } from 'ng-mocks';
+import { MockComponent, MockComponents } from 'ng-mocks';
 import { XrefsComponent } from '../xrefs/xrefs.component';
 import { CardGenericDocumentComponent } from '../card-generic-document/card-generic-document.component';
-
+import { GenealogicTreeComponent } from '../genealogic-tree/genealogic-tree.component';
 
 describe('GermplasmCardComponent', () => {
 
@@ -225,16 +225,16 @@ describe('GermplasmCardComponent', () => {
         TestBed.configureTestingModule({
             imports: [RouterTestingModule, NgbPopoverModule, MomentModule],
             declarations: [
-                GermplasmCardComponent, LoadingSpinnerComponent, MockComponent(XrefsComponent), CardSectionComponent,
+                GermplasmCardComponent, LoadingSpinnerComponent, MockComponents(XrefsComponent), CardSectionComponent,
                 CardRowComponent, LoadingSpinnerComponent, CardTableComponent,
-                MapComponent, MockComponent(CardGenericDocumentComponent)
+                MapComponent, MockComponents(CardGenericDocumentComponent), MockComponents(GenealogicTreeComponent)
             ],
             providers: [
                 { provide: BrapiService, useValue: brapiService },
                 { provide: GnpisService, useValue: gnpisService },
                 { provide: ActivatedRoute, useValue: activatedRouteParams },
             ]
-        });
+        }).compileComponents();
     }));
 
     it('should fetch germplasm information', async(() => {
@@ -242,7 +242,7 @@ describe('GermplasmCardComponent', () => {
         const component = tester.componentInstance;
         tester.detectChanges();
 
-        component.loaded.then(() => {
+        component.loaded.then(async(() => {
             expect(component.germplasmGnpis).toBeTruthy();
             tester.detectChanges();
             expect(tester.title).toContainText('Germplasm: test');
@@ -253,7 +253,7 @@ describe('GermplasmCardComponent', () => {
             expect(tester.cardHeader[4]).toContainText('Donor');
             expect(tester.cardHeader[5]).toContainText('Distributor');
             expect(tester.cardHeader[6]).toContainText('Evaluation Data');
-        });
+        }));
     }));
 
 })
diff --git a/frontend/src/index.html b/frontend/src/index.html
index de174438eef6b693ddff3f9eeb7d06c846f1dedb..8f36d9c4884ff9f18934ed1d090ba0728180ae62 100644
--- a/frontend/src/index.html
+++ b/frontend/src/index.html
@@ -9,6 +9,6 @@
     <link rel="icon" type="image/x-icon" href="assets/favicon.ico">
   </head>
   <body>
-    <faidare-root></faidare-root>
+  <faidare-root></faidare-root>
   </body>
 </html>
diff --git a/frontend/src/styles.scss b/frontend/src/styles.scss
index a86efa94111eb75fb5fb8f8beaa1e2dcb28b1a0d..b3f6dabcaccb231a8b9e983ad4b947241193ec21 100644
--- a/frontend/src/styles.scss
+++ b/frontend/src/styles.scss
@@ -68,6 +68,17 @@ $fa-font-path: '~font-awesome/fonts';
   margin-top: 75px;
 }
 
+svg.pedigreeViewer{
+  width: 100%;
+  height: 400px;
+
+}
+
+svg{
+
+}
+
+
 h1{
   border-bottom: solid;
   font-weight: bold;
diff --git a/frontend/src/types/@solgenomics/index.d.ts b/frontend/src/types/@solgenomics/index.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f9988238aec4274d69475e44bad4f31916aca95d
--- /dev/null
+++ b/frontend/src/types/@solgenomics/index.d.ts
@@ -0,0 +1,2 @@
+declare module '@solgenomics/brapijs';
+declare module '@solgenomics/brapi-pedigree-viewer';