You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by sa...@apache.org on 2019/10/09 20:07:24 UTC

[metron] branch feature/METRON-1856-parser-aggregation updated: METRON-2251 Update with the latest master branch (sardell) closes apache/metron#1507

This is an automated email from the ASF dual-hosted git repository.

sardell pushed a commit to branch feature/METRON-1856-parser-aggregation
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/feature/METRON-1856-parser-aggregation by this push:
     new 7333300  METRON-2251 Update with the latest master branch (sardell) closes apache/metron#1507
7333300 is described below

commit 7333300c967dff7a37ef91fcbadfff06e91c3f8d
Author: sardell <sh...@gmail.com>
AuthorDate: Wed Oct 9 15:06:31 2019 -0500

    METRON-2251 Update with the latest master branch (sardell) closes apache/metron#1507
---
 .github/PULL_REQUEST_TEMPLATE.md                   |     2 +
 .travis.yml                                        |    46 +-
 README.md                                          |     4 +-
 Upgrading.md                                       |    14 +
 dependencies_with_url.csv                          |     2 +-
 metron-analytics/metron-maas-common/pom.xml        |     3 +-
 .../java/org/apache/metron/maas/util/RESTUtil.java |     4 +-
 metron-analytics/metron-maas-service/pom.xml       |     8 +-
 .../apache/metron/maas/service/runner/Runner.java  |     3 +-
 .../metron/maas/service/MaasIntegrationTest.java   |     7 +-
 metron-analytics/metron-profiler-client/pom.xml    |    14 +-
 .../src/main/assembly/assembly.xml                 |     2 +-
 .../profiler/client/HBaseProfilerClient.java       |    34 +-
 .../metron/profiler/client/stellar/GetProfile.java |    61 +-
 .../profiler/client/stellar/VerboseProfile.java    |    57 +-
 .../profiler/client/HBaseProfilerClientTest.java   |    30 +-
 .../metron/profiler/client/ProfileWriter.java      |    25 +-
 .../profiler/client/stellar/GetProfileTest.java    |    35 +-
 .../client/stellar/VerboseProfileTest.java         |    50 +-
 metron-analytics/metron-profiler-common/pom.xml    |    10 +-
 .../metron/profiler/hbase/ColumnBuilder.java       |     2 +-
 .../profiler/hbase/ValueOnlyColumnBuilder.java     |     2 +-
 .../profiler/DefaultMessageDistributorTest.java    |     6 +-
 .../profiler/hbase/SaltyRowKeyBuilderTest.java     |    33 +-
 metron-analytics/metron-profiler-repl/pom.xml      |    10 +-
 .../src/main/assembly/assembly.xml                 |     2 +-
 .../profiler/repl/StandAloneProfilerTest.java      |     3 +-
 metron-analytics/metron-profiler-spark/README.md   |    61 +-
 metron-analytics/metron-profiler-spark/pom.xml     |    15 +-
 .../src/main/assembly/assembly.xml                 |     2 +-
 .../metron/profiler/spark/BatchProfilerConfig.java |    11 +-
 .../profiler/spark/cli/BatchProfilerCLI.java       |   126 +-
 .../spark/cli/BatchProfilerCLIOptions.java         |    15 +-
 .../spark/function/MessageRouterFunction.java      |     9 +-
 .../src/main/scripts/start_batch_profiler.sh       |    22 +-
 .../profiler/spark/cli/BatchProfilerCLITest.java   |    28 +-
 .../spark/cli/BatchProfilerZKIntegrationTest.java  |    82 +
 metron-analytics/metron-profiler-storm/pom.xml     |    23 +-
 .../org/apache/metron/hbase/bolt/BatchHelper.java  |     0
 .../org/apache/metron/hbase/bolt/HBaseBolt.java    |     2 +-
 .../metron/hbase/bolt/mapper/HBaseMapper.java      |     1 +
 .../metron/profiler/storm/ProfileHBaseMapper.java  |     2 +-
 .../metron/profiler/storm/ProfileSplitterBolt.java |    11 +-
 .../src/main/scripts/start_profiler_topology.sh    |     3 +-
 .../apache/metron/hbase/bolt/HBaseBoltTest.java    |     4 +-
 .../apache/metron/hbase/bolt/mapper}/Widget.java   |     2 +-
 .../metron/hbase/bolt/mapper}/WidgetMapper.java    |     5 +-
 .../profiler/storm/ProfileSplitterBoltTest.java    |     6 +-
 .../storm/integration/ConfigUploadComponent.java   |     3 +-
 .../storm/integration/ProfilerIntegrationTest.java |     4 +-
 metron-analytics/metron-statistics/pom.xml         |     5 +-
 metron-analytics/pom.xml                           |     2 +-
 metron-contrib/metron-docker/pom.xml               |     2 +-
 metron-contrib/metron-performance/pom.xml          |    10 +-
 .../src/main/assembly/assembly.xml                 |     2 +-
 .../metron/performance/load/LoadOptions.java       |     8 +-
 .../load/monitor/writers/CSVWriter.java            |     5 +-
 .../src/main/scripts/load_tool.sh                  |     2 +-
 .../metron/performance/load/LoadOptionsTest.java   |     5 +-
 metron-contrib/pom.xml                             |     2 +-
 metron-deployment/amazon-ec2/conf/defaults.yml     |     2 +-
 .../ansible/playbooks/docker_probe_install.yml     |     2 +-
 .../ansible/roles/ambari_master/defaults/main.yml  |     2 +-
 .../ansible/roles/ambari_master/tasks/ambari.yml   |     6 +
 .../roles/metron-builder/tasks/build-rpms.yml      |     4 +-
 metron-deployment/development/README.md            |     9 +
 metron-deployment/development/centos6/README.md    |    27 +-
 metron-deployment/development/centos6/Vagrantfile  |     1 +
 metron-deployment/development/centos6/ansible.cfg  |     1 +
 .../centos6/ansible/inventory/group_vars/all       |     2 +-
 metron-deployment/development/centos7/Vagrantfile  |     4 +-
 metron-deployment/development/centos7/ansible.cfg  |     1 +
 metron-deployment/development/ubuntu14/Vagrantfile |     1 +
 .../ubuntu14/ansible/inventory/group_vars/all      |     2 +-
 metron-deployment/packaging/ambari/.gitignore      |     2 -
 .../packaging/ambari/elasticsearch-mpack/pom.xml   |     4 +-
 .../5.6.14/configuration/elastic-site.xml          |     2 +-
 .../5.6.14/package/scripts/elastic_commands.py     |    14 +-
 .../5.6.14/package/scripts/elastic_master.py       |     7 +-
 .../5.6.14/package/scripts/elastic_slave.py        |     3 +-
 .../5.6.14/package/scripts/service_check.py        |     4 +-
 .../KIBANA/5.6.14/package/scripts/common.py        |     8 +-
 .../KIBANA/5.6.14/package/scripts/kibana_master.py |     2 +-
 .../packaging/ambari/metron-mpack/pom.xml          |    16 +-
 .../configuration/metron-enrichment-env.xml        |    82 -
 .../CURRENT/configuration/metron-parsers-env.xml   |     2 +-
 .../CURRENT/configuration/metron-rest-env.xml      |    13 +-
 .../common-services/METRON/CURRENT/metainfo.xml    |    17 +-
 .../CURRENT/package/scripts/alerts_ui_commands.py  |     4 +-
 .../CURRENT/package/scripts/alerts_ui_master.py    |    10 +-
 .../package/scripts/dashboard/dashboardindex.py    |    10 +-
 .../CURRENT/package/scripts/enrichment_commands.py |    21 +-
 .../CURRENT/package/scripts/enrichment_master.py   |    19 +-
 .../CURRENT/package/scripts/indexing_commands.py   |    95 +-
 .../CURRENT/package/scripts/indexing_master.py     |    32 +-
 .../package/scripts/management_ui_commands.py      |     6 +-
 .../package/scripts/management_ui_master.py        |     7 +-
 .../CURRENT/package/scripts/metron_client.py       |    11 +-
 .../CURRENT/package/scripts/metron_security.py     |     7 +-
 .../CURRENT/package/scripts/metron_service.py      |    12 +-
 .../CURRENT/package/scripts/params/params.py       |     2 +-
 .../CURRENT/package/scripts/params/params_linux.py |    24 +-
 .../package/scripts/params/status_params.py        |     4 +-
 .../CURRENT/package/scripts/parser_commands.py     |     9 +-
 .../CURRENT/package/scripts/parser_master.py       |     7 +-
 .../CURRENT/package/scripts/pcap_commands.py       |    11 +-
 .../METRON/CURRENT/package/scripts/pcap_master.py  |    13 +-
 .../CURRENT/package/scripts/profiler_commands.py   |     6 +-
 .../CURRENT/package/scripts/profiler_master.py     |    13 +-
 .../CURRENT/package/scripts/rest_commands.py       |     6 +-
 .../METRON/CURRENT/package/scripts/rest_master.py  |     8 +-
 .../CURRENT/package/scripts/service_check.py       |    14 +-
 .../package/templates/alerts-ui-app-config.json.j2 |     5 +-
 .../templates/management-ui-app-config.json.j2     |     4 +-
 .../METRON/CURRENT/package/templates/metron.j2     |     3 +
 .../METRON/CURRENT/service_advisor.py              |     6 +-
 .../METRON/CURRENT/themes/metron_theme.json        |    83 +-
 .../metron-mpack/src/main/resources/mpack.json     |     2 +-
 .../packaging/docker/deb-docker/README.md          |     2 +-
 .../packaging/docker/deb-docker/pom.xml            |     4 +-
 .../packaging/docker/rpm-docker/README.md          |     4 +-
 .../packaging/docker/rpm-docker/SPECS/metron.spec  |   165 +-
 .../packaging/docker/rpm-docker/build.sh           |     6 +-
 .../packaging/docker/rpm-docker/pom.xml            |    28 +-
 metron-deployment/pom.xml                          |     2 +-
 metron-interface/metron-alerts/README.md           |     4 +
 .../cypress/fixtures/context-menu.conf.json        |    49 +
 .../integration/alert-list/context-menu.spec.js    |    89 +
 .../cypress/integration/pcap/pcap.spec.js          |     2 +-
 metron-interface/metron-alerts/package-lock.json   | 32015 ++++++++-----------
 metron-interface/metron-alerts/package.json        |    42 +-
 metron-interface/metron-alerts/pom.xml             |     2 +-
 .../metron-alerts/scripts/package.json             |     2 +-
 .../alert-details/alert-details.component.html     |    56 +-
 .../alert-details/alert-details.component.scss     |    17 +-
 .../alert-details/alert-details.component.spec.ts  |    67 +-
 .../alert-details/alert-details.component.ts       |    41 +-
 .../alerts/alerts-list/alerts-list.component.html  |    55 +-
 .../alerts/alerts-list/alerts-list.component.scss  |    24 +
 .../alerts-list/alerts-list.component.spec.ts      |   148 +-
 .../alerts/alerts-list/alerts-list.component.ts    |   199 +-
 .../app/alerts/alerts-list/alerts-list.module.ts   |    89 +-
 .../app/alerts/alerts-list/query-builder.spec.ts   |   165 +
 .../src/app/alerts/alerts-list/query-builder.ts    |    42 +-
 .../table-view/table-view.component.html           |    89 +-
 .../table-view/table-view.component.spec.ts        |     9 +-
 .../alerts-list/table-view/table-view.component.ts |    47 +-
 .../alerts-list/tree-view/tree-view.component.html |     2 +-
 .../tree-view/tree-view.component.spec.ts          |    13 +-
 .../alerts-list/tree-view/tree-view.component.ts   |    69 +-
 .../configure-rows/configure-rows.component.html   |     8 +-
 .../configure-rows/configure-rows.component.scss   |     2 +-
 .../configure-rows.component.spec.ts               |    16 +-
 .../configure-rows/configure-rows.component.ts     |     5 +-
 .../alerts/configure-rows/configure-rows.module.ts |    24 +-
 .../show-hide-alert-entries.component.spec.ts      |   132 +
 .../show-hide/show-hide-alert-entries.component.ts |    51 +
 .../show-hide/show-hide.service.spec.ts            |   125 +
 .../configure-rows/show-hide/show-hide.service.ts  |    70 +
 .../timezone-config.component.spec.ts              |    76 +
 .../timezone-config/timezone-config.component.ts}  |    30 +-
 .../timezone-config.service.spec.ts                |    55 +
 .../timezone-config/timezone-config.service.ts     |    29 +-
 .../metron-alerts/src/app/app.component.html       |    69 +-
 .../metron-alerts/src/app/app.component.scss       |    31 +-
 .../metron-alerts/src/app/app.component.spec.ts    |    37 +-
 .../metron-alerts/src/app/app.component.ts         |    37 +-
 .../src/app/app.module.spec.ts}                    |     7 +-
 .../metron-alerts/src/app/app.module.ts            |    30 +-
 .../metron-alerts/src/app/model/alert-source.ts    |     1 +
 .../metron-alerts/src/app/model/filter.spec.ts     |    42 +-
 .../metron-alerts/src/app/model/filter.ts          |    69 +-
 .../src/app/service/app-config.service.spec.ts     |   154 +
 .../src/app/service/app-config.service.ts          |    35 +-
 .../app/service/elasticsearch-localstorage-impl.ts |     2 +-
 .../src/app/service/search.service.ts              |     5 +-
 .../src/app/shared/context-menu/README.md          |   203 +
 .../context-menu/context-menu.component.html}      |    22 +-
 .../context-menu/context-menu.component.scss}      |    67 +-
 .../context-menu/context-menu.component.spec.ts    |   281 +
 .../shared/context-menu/context-menu.component.ts  |   180 +
 .../context-menu/context-menu.module.spec.ts}      |    19 +-
 .../context-menu/context-menu.module.ts}           |    25 +-
 .../context-menu/context-menu.service.spec.ts      |   229 +
 .../shared/context-menu/context-menu.service.ts    |    94 +
 .../shared/context-menu/context-menu.util.spec.ts} |    36 +-
 .../app/shared/context-menu/context-menu.util.ts}  |     9 +-
 .../dynamic-item.model.spec.ts}                    |    37 +-
 .../app/shared/context-menu/dynamic-item.model.ts  |    31 +-
 .../shared/date-picker/date-picker.component.html  |    13 +-
 .../date-picker/date-picker.component.spec.ts      |    39 +
 .../shared/date-picker/date-picker.component.ts    |    56 +-
 .../metron-alerts/src/app/shared/shared.module.ts  |     5 +-
 .../src/app/shared/switch/switch.component.html    |     2 +-
 .../src/app/shared/switch/switch.component.ts      |    12 +-
 .../src/app/shared/switch/switch.module.ts         |    15 +-
 .../shared/time-range/time-range.component.scss    |     4 +-
 .../metron-alerts/src/app/utils/constants.ts       |    18 +-
 .../metron-alerts/src/app/utils/httpUtil.ts        |     4 +-
 .../metron-alerts/src/app/utils/utils.ts           |    16 +-
 .../metron-alerts/src/assets/app-config.json       |     5 +-
 .../src/assets/context-menu.conf.json              |    49 +
 .../metron-alerts/src/assets/images/logo-name.png  |   Bin 0 -> 3760 bytes
 .../src/assets/images/logo-symbol.png              |   Bin 0 -> 19063 bytes
 metron-interface/metron-alerts/src/slider.scss     |     4 +-
 metron-interface/metron-alerts/src/styles.scss     |    64 +
 metron-interface/metron-config/angular.json        |     1 -
 metron-interface/metron-config/package-lock.json   |  6018 ++--
 metron-interface/metron-config/package.json        |    51 +-
 metron-interface/metron-config/pom.xml             |     2 +-
 .../metron-config/scripts/package.json             |     2 +-
 .../metron-config/src/app/app.component.html       |    69 +-
 .../metron-config/src/app/app.component.scss       |    23 +
 .../metron-config/src/app/app.component.ts         |    37 +-
 .../metron-config/src/app/app.module.ts            |    25 +-
 .../metron-config/src/app/model/risk-level-rule.ts |     8 +-
 .../src/app/navbar/navbar.component.scss           |    10 +
 .../metron-config/src/app/navbar/navbar.html       |     8 +-
 .../app/sensors/effects/sensors.effects.spec.ts    |    20 +-
 .../src/app/sensors/effects/sensors.effects.ts     |     2 +-
 .../src/app/sensors/models/parser-config.model.ts  |     2 +
 .../src/app/sensors/reducers/sensors.reducers.ts   |     2 +-
 ...sensor-parser-config-readonly.component.spec.ts |     8 +-
 .../sensor-parser-config.component.html            |     8 +-
 .../sensor-parser-config.component.spec.ts         |    21 +-
 .../sensor-parser-config.component.ts              |    15 +-
 .../rule-editor/sensor-rule-editor.component.html  |    50 +-
 .../rule-editor/sensor-rule-editor.component.scss  |    21 +
 .../sensor-rule-editor.component.spec.ts           |    93 +-
 .../rule-editor/sensor-rule-editor.component.ts    |    22 +-
 .../rule-editor/sensor-rule-editor.module.ts       |     3 +-
 .../sensor-threat-triage.component.html            |    42 +-
 .../sensor-threat-triage.component.scss            |    63 +-
 .../sensor-threat-triage.component.spec.ts         |   145 +-
 .../sensor-threat-triage.component.ts              |   105 +-
 .../src/app/service/app-config.service.ts          |    14 +
 .../src/app/service/mock.app-config.service.ts     |     9 +
 .../sensor-enrichment-config.service.spec.ts       |     4 +-
 .../service/sensor-enrichment-config.service.ts    |     2 +-
 .../service/sensor-indexing-config.service.spec.ts |    10 +-
 .../app/service/sensor-indexing-config.service.ts  |     2 +-
 .../app/shared/ace-editor/ace-editor.component.ts  |    24 +-
 .../metron-config/src/app/shared/metron-alerts.ts  |     2 +-
 .../number-spinner/number-spinner.component.html   |     2 +-
 .../number-spinner/number-spinner.component.scss   |     9 +-
 .../metron-config/src/app/util/httpUtil.ts         |     2 +-
 .../src/assets/ace/mode-javascript.js              |     1 +
 .../metron-config/src/assets/app-config.json       |     4 +-
 .../metron-config/src/assets/images/logo-name.png  |   Bin 0 -> 3760 bytes
 .../src/assets/images/logo-symbol.png              |   Bin 0 -> 19063 bytes
 metron-interface/metron-config/src/styles.scss     |    66 +
 metron-interface/metron-config/tsconfig.json       |     1 +
 metron-interface/metron-rest-client/pom.xml        |     4 +-
 .../apache/metron/rest/model/TopologySummary.java  |    11 +-
 metron-interface/metron-rest/README.md             |    43 +-
 metron-interface/metron-rest/pom.xml               |    84 +-
 .../readme-images/debug-configuration.png          |   Bin 0 -> 119283 bytes
 .../readme-images/debug-maven-profile.png          |   Bin 0 -> 240634 bytes
 .../metron-rest/src/main/assembly/assembly.xml     |     2 +-
 .../src/main/config/rest_application.yml           |     4 +
 .../apache/metron/rest/MetronRestConstants.java    |     2 +
 .../org/apache/metron/rest/config/GrokConfig.java  |     3 +-
 .../org/apache/metron/rest/config/IndexConfig.java |     2 +-
 .../org/apache/metron/rest/config/StormConfig.java |    21 +-
 .../service/impl/CachedStormStatusServiceImpl.java |   127 +
 .../rest/service/impl/DockerStormCLIWrapper.java   |     4 +-
 .../metron/rest/service/impl/GrokServiceImpl.java  |     5 +-
 .../impl/SensorEnrichmentConfigServiceImpl.java    |    15 +-
 .../impl/SensorIndexingConfigServiceImpl.java      |     4 +-
 .../impl/SensorParserConfigServiceImpl.java        |     6 +-
 .../metron/rest/service/impl/StormCLIWrapper.java  |     4 +-
 .../rest/service/impl/StormStatusServiceImpl.java  |    14 +-
 .../metron/rest/user/UserSettingsClient.java       |    14 +-
 .../metron-rest/src/main/resources/application.yml |     2 +-
 .../metron-rest/src/main/scripts/metron-rest.sh    |     4 +-
 .../apache/metron/rest/config/HBaseConfigTest.java |     8 -
 .../org/apache/metron/rest/config/TestConfig.java  |    45 +-
 .../controller/GrokControllerIntegrationTest.java  |     3 +-
 .../controller/HdfsControllerIntegrationTest.java  |     3 +-
 .../controller/PcapControllerIntegrationTest.java  |     5 +-
 ...rEnrichmentConfigControllerIntegrationTest.java |    24 +-
 ...sorIndexingConfigControllerIntegrationTest.java |     9 +-
 .../UpdateControllerIntegrationTest.java           |     3 +-
 .../metron/rest/generator/SampleDataGenerator.java |     2 +-
 .../rest/mock/MockPcapToPdmlScriptWrapper.java     |     3 +-
 .../impl/CachedStormStatusServiceImplTest.java     |   158 +
 .../service/impl/DockerStormCLIWrapperTest.java    |     4 +-
 .../service/impl/GlobalConfigServiceImplTest.java  |     8 +-
 .../rest/service/impl/GrokServiceImplTest.java     |     3 +-
 .../rest/service/impl/PcapServiceImplTest.java     |     5 +-
 .../SensorEnrichmentConfigServiceImplTest.java     |    30 +-
 .../impl/SensorIndexingConfigServiceImplTest.java  |     8 +-
 .../impl/SensorParserConfigServiceImplTest.java    |    12 +-
 .../metron/rest/user/UserSettingsClientTest.java   |    22 +-
 metron-interface/pom.xml                           |     2 +-
 metron-platform/Performance-tuning-guide.md        |    12 +-
 metron-platform/README.md                          |     2 +-
 metron-platform/elasticsearch-shaded/pom.xml       |     4 +-
 .../metron-common-storm/pom.xml                    |     8 +-
 .../common/message/metadata/RawMessageUtil.java    |     3 +-
 .../message/metadata/RawMessageUtilTest.java       |    84 +-
 metron-platform/metron-common-streaming/pom.xml    |     2 +-
 metron-platform/metron-common/README.md            |     3 +-
 metron-platform/metron-common/pom.xml              |    53 +-
 .../metron-common/src/main/assembly/assembly.xml   |     2 +-
 .../java/org/apache/metron/common/Constants.java   |     6 +-
 .../common/configuration/ConfigurationsUtils.java  |    30 +-
 .../configuration/IndexingConfigurations.java      |    17 +
 .../common/configuration/SensorParserConfig.java   |     3 +-
 .../enrichment/SensorEnrichmentConfig.java         |     3 +-
 .../enrichment/SensorEnrichmentUpdateConfig.java   |    12 +-
 .../configuration/profiler/ProfileConfig.java      |     3 +-
 .../configuration/profiler/ProfilerConfig.java     |     3 +-
 .../writer/IndexingWriterConfiguration.java        |     5 +
 .../configuration/writer/WriterConfiguration.java  |     9 +
 .../apache/metron/common/error/MetronError.java    |     6 +-
 .../common/field/validation/SimpleValidation.java  |     3 +
 .../field/validation/network/IPValidation.java     |     2 +-
 .../field/validation/primitive/DateValidation.java |     3 +
 .../metron/common/hadoop/SequenceFileIterable.java |    10 +-
 .../metadata/EnvelopedRawMessageStrategy.java      |     8 +-
 .../org/apache/metron/common/utils/KafkaUtils.java |     3 +-
 .../org/apache/metron/common/utils/LazyLogger.java |    94 +
 .../metron/common/utils/LazyLoggerFactory.java     |    71 +
 .../apache/metron/common/utils/LazyLoggerImpl.java |   572 +
 .../configurations/ConfigurationsUpdater.java      |    13 +-
 .../metron-common/src/main/scripts/cluster_info.py |     2 +-
 .../metron-common/src/main/scripts/stellar         |     5 +-
 .../src/main/scripts/zk_load_configs.sh            |     3 +-
 .../cli/ConfigurationManagerIntegrationTest.java   |     9 +-
 .../common/configuration/ConfigurationTest.java    |     3 +-
 .../configuration/IndexingConfigurationsTest.java  |    82 +
 .../configuration/ParserConfigurationsTest.java    |     4 +-
 .../configuration/SensorEnrichmentConfigTest.java  |    10 +-
 .../configuration/SensorParserConfigTest.java      |     8 +-
 .../writer/EnrichmentWriterConfigurationTest.java  |     3 +-
 .../writer/ParserWriterConfigurationTest.java      |     4 +-
 .../writer/ProfilerWriterConfigurationTest.java    |     3 +-
 .../metron/common/error/MetronErrorTest.java       |     3 +-
 .../common/field/FieldNameConvertersTest.java      |     3 +-
 .../validation/network/DomainValidationTest.java   |     8 +
 .../validation/network/EmailValidationTest.java    |     6 +
 .../validation/network/URLValidationTest.java      |     8 +-
 .../validation/primitive/DateValidationTest.java   |     4 +
 .../primitive/IntegerValidationTest.java           |     6 +
 .../typosquat/TyposquattingStrategiesTest.java     |     4 +-
 .../apache/metron/common/utils/JSONUtilsTest.java  |     7 +-
 .../apache/metron/common/utils/KafkaUtilsTest.java |     9 +-
 .../metron/common/utils/LazyLoggerImplTest.java    |   759 +
 .../common/utils/LazzyLoggerImplPerfTest.java      |   118 +
 .../common/utils/file/ReaderSpliteratorTest.java   |     5 +-
 .../ZKConfigurationsCacheIntegrationTest.java      |    15 +-
 .../components/ConfigUploadComponent.java          |    18 +-
 metron-platform/metron-data-management/pom.xml     |    95 +-
 .../src/main/assembly/assembly.xml                 |     2 +-
 .../metron/dataloads/hbase/mr/PrunerMapper.java    |     3 +-
 .../nonbulk/flatfile/HBaseExtractorState.java      |     8 +-
 .../nonbulk/flatfile/importer/LocalImporter.java   |    12 +-
 .../nonbulk/flatfile/location/RawLocation.java     |    11 +-
 .../dataloads/nonbulk/taxii/TaxiiHandler.java      |    16 +-
 .../src/main/scripts/flatfile_loader.sh            |     7 +-
 .../src/main/scripts/flatfile_summarizer.sh        |     7 +-
 .../src/main/scripts/maxmind_enrichment_load.sh    |    10 +-
 .../src/main/scripts/prune_hdfs_files.sh           |     2 +-
 .../src/main/scripts/threatintel_bulk_prune.sh     |     2 +-
 .../src/main/scripts/threatintel_taxii_load.sh     |     2 +-
 .../extractor/stix/StixExtractorTest.java          |     6 +-
 .../metron/dataloads/hbase/mr/HBaseUtil.java       |    22 +-
 .../mr/LeastRecentlyUsedPrunerIntegrationTest.java |    22 +-
 ...pleEnrichmentFlatFileLoaderIntegrationTest.java |    63 +-
 .../flatfile/SimpleFlatFileSummarizerTest.java     |     3 +-
 .../nonbulk/taxii/TaxiiIntegrationTest.java        |     4 +-
 metron-platform/metron-elasticsearch/README.md     |   378 +-
 .../{ => metron-elasticsearch-common}/README.md    |     0
 .../metron-elasticsearch-common}/pom.xml           |   237 +-
 .../elasticsearch/bulk/BulkDocumentWriter.java     |     0
 .../bulk/BulkDocumentWriterResults.java            |     0
 .../bulk/ElasticsearchBulkDocumentWriter.java      |     2 +-
 .../bulk/ElasticsearchImportExport.java            |    10 +-
 .../metron/elasticsearch/bulk/WriteFailure.java    |     0
 .../metron/elasticsearch/bulk/WriteSuccess.java    |     0
 .../elasticsearch/client/ElasticsearchClient.java  |     0
 .../client/ElasticsearchClientFactory.java         |     0
 .../config/ElasticsearchClientConfig.java          |     0
 .../config/ElasticsearchClientOptions.java         |     0
 .../dao/ElasticsearchColumnMetadataDao.java        |     0
 .../metron/elasticsearch/dao/ElasticsearchDao.java |     0
 .../dao/ElasticsearchMetaAlertDao.java             |     0
 .../ElasticsearchMetaAlertRetrieveLatestDao.java   |     0
 .../dao/ElasticsearchMetaAlertSearchDao.java       |     0
 .../dao/ElasticsearchMetaAlertUpdateDao.java       |     0
 .../dao/ElasticsearchRequestSubmitter.java         |     0
 .../dao/ElasticsearchRetrieveLatestDao.java        |     8 +
 .../elasticsearch/dao/ElasticsearchSearchDao.java  |     0
 .../elasticsearch/dao/ElasticsearchUpdateDao.java  |     0
 .../elasticsearch/utils/ElasticsearchUtils.java    |     0
 .../metron/elasticsearch/utils/FieldMapping.java   |     0
 .../elasticsearch/utils/FieldProperties.java       |     0
 .../elasticsearch/writer/ElasticsearchWriter.java  |    13 +-
 .../writer/MessageIdBasedDocument.java             |     0
 .../src/main/resources/META-INF/LICENSE            |     0
 .../src/main/resources/META-INF/NOTICE             |     0
 .../bulk/ElasticsearchBulkDocumentWriterTest.java  |     0
 .../bulk/ElasticsearchImportExportTest.java        |     0
 .../dao/ElasticsearchColumnMetadataDaoTest.java    |     0
 .../elasticsearch/dao/ElasticsearchDaoTest.java    |     0
 .../dao/ElasticsearchMetaAlertDaoTest.java         |     0
 .../dao/ElasticsearchRequestSubmitterTest.java     |     0
 .../dao/ElasticsearchUpdateDaoTest.java            |     0
 ...ticsearchBulkDocumentWriterIntegrationTest.java |     2 +-
 .../ElasticsearchMetaAlertIntegrationTest.java     |     0
 .../ElasticsearchSearchIntegrationTest.java        |    10 +-
 .../ElasticsearchUpdateIntegrationTest.java        |    58 +-
 .../components/ElasticSearchComponent.java         |    18 +-
 .../writer/ElasticsearchWriterTest.java            |    62 +-
 .../src/test/resources/log4j.properties            |     0
 .../metron-elasticsearch-storm/README.md           |    20 +-
 .../metron-elasticsearch-storm}/pom.xml            |   191 +-
 .../src/main/assembly/assembly.xml                 |     0
 .../src/main/config/elasticsearch.properties       |     0
 .../src/main/config/elasticsearch.properties.j2    |     0
 .../main/scripts/start_elasticsearch_topology.sh   |     5 +-
 .../ElasticsearchIndexingIntegrationTest.java      |     6 +-
 metron-platform/metron-elasticsearch/pom.xml       |   392 +-
 .../metron-enrichment-common/pom.xml               |     3 +-
 .../enrichment/adapters/cif/CIFHbaseAdapter.java   |    18 +-
 .../adapters/simplehbase/SimpleHBaseAdapter.java   |    10 +-
 .../adapters/stellar/StellarAdapter.java           |     2 +-
 .../adapters/threatintel/ThreatIntelAdapter.java   |     2 +
 .../metron/enrichment/cache/ObjectCache.java       |   123 +
 .../metron/enrichment/cache/ObjectCacheConfig.java |   115 +
 .../metron/enrichment/cli/LatencySummarizer.java   |     4 +-
 .../enrichment/converter/EnrichmentHelper.java     |     7 +-
 .../metron/enrichment/lookup/EnrichmentLookup.java |    18 +-
 .../lookup/accesstracker/AccessTrackerUtil.java    |     4 +-
 .../accesstracker/PersistentAccessTracker.java     |     8 +-
 .../PersistentBloomTrackerCreator.java             |     9 +-
 .../enrichment/stellar/EnrichmentObjectGet.java    |   101 +
 .../metron/enrichment/stellar/ObjectGet.java       |    94 +-
 .../stellar/SimpleHBaseEnrichmentFunctions.java    |    20 +-
 .../metron/enrichment/utils/EnrichmentUtils.java   |     6 +-
 .../threatintel/ThreatIntelAdapterTest.java        |     4 +-
 .../ObjectCacheTest.java}                          |    63 +-
 .../integration/mock/MockHBaseConnector.java       |    52 -
 .../EnrichmentObjectGetIntegrationTest.java        |    72 +
 .../stellar/EnrichmentObjectGetTest.java           |   152 +
 .../stellar/ObjectGetIntegrationTest.java          |    70 +
 .../metron/enrichment/stellar/ObjectGetTest.java   |   115 +-
 .../metron-enrichment-storm/README.md              |    15 +-
 .../metron-enrichment-storm/enrichment_arch.png    |   Bin 113606 -> 0 bytes
 .../metron-enrichment-storm/pom.xml                |     8 +-
 .../main/config/enrichment-splitjoin.properties    |    63 -
 .../main/config/enrichment-splitjoin.properties.j2 |    63 -
 ...nt-unified.properties => enrichment.properties} |     0
 ...fied.properties.j2 => enrichment.properties.j2} |     0
 .../src/main/flux/enrichment/remote-splitjoin.yaml |   593 -
 .../{remote-unified.yaml => remote.yaml}           |     0
 .../metron/enrichment/bolt/EnrichmentJoinBolt.java |   122 -
 .../enrichment/bolt/EnrichmentSplitterBolt.java    |   184 -
 .../apache/metron/enrichment/bolt/JoinBolt.java    |   189 -
 .../apache/metron/enrichment/bolt/SplitBolt.java   |   113 -
 .../enrichment/bolt/ThreatIntelJoinBolt.java       |   123 -
 .../enrichment/bolt/ThreatIntelSplitterBolt.java   |    67 -
 .../src/main/scripts/start_enrichment_topology.sh  |    10 +-
 .../enrichment/bolt/EnrichmentJoinBoltTest.java    |    96 -
 .../bolt/EnrichmentSplitterBoltTest.java           |   106 -
 .../metron/enrichment/bolt/JoinBoltTest.java       |   193 -
 .../metron/enrichment/bolt/SplitBoltTest.java      |   123 -
 .../enrichment/bolt/ThreatIntelJoinBoltTest.java   |   222 -
 .../bolt/ThreatIntelSplitterBoltTest.java          |    46 -
 .../integration/EnrichmentIntegrationTest.java     |    94 +-
 .../UnifiedEnrichmentIntegrationTest.java          |    96 -
 metron-platform/metron-enrichment/pom.xml          |     6 +-
 metron-platform/metron-hbase-client/pom.xml        |     4 +-
 metron-platform/metron-hbase-server/README.md      |    27 +
 metron-platform/metron-hbase-server/pom.xml        |     8 +-
 .../EnrichmentCoprocessorIntegrationTest.java      |    11 +-
 .../coprocessor/EnrichmentCoprocessorTest.java     |     8 +-
 .../metron-hbase/{ => metron-hbase-common}/pom.xml |    71 +-
 .../java/org/apache/metron/hbase}/ColumnList.java  |     2 +-
 .../metron/hbase}/HBaseProjectionCriteria.java     |     9 +-
 .../org/apache/metron/hbase/HTableProvider.java    |    66 +
 .../java/org/apache/metron/hbase}/IColumn.java     |     2 +-
 .../java/org/apache/metron/hbase}/ICounter.java    |     2 +-
 .../java/org/apache/metron/hbase/TableConfig.java  |     0
 .../org/apache/metron/hbase/TableProvider.java     |     8 +-
 .../apache/metron/hbase/client/HBaseClient.java    |    13 +-
 .../metron/hbase/client/HBaseClientTest.java       |   157 +-
 .../metron/hbase/mock/MockHBaseTableProvider.java  |    18 +-
 .../org/apache/metron/hbase/mock/MockHTable.java   |    38 +-
 .../src/test/resources/log4j.properties            |     0
 metron-platform/metron-hbase/pom.xml               |   285 +-
 .../java/org/apache/metron/hbase/Connector.java    |    36 -
 .../org/apache/metron/hbase/HTableConnector.java   |   157 -
 .../org/apache/metron/hbase/HTableProvider.java    |    30 -
 .../org/apache/metron/hbase/TupleTableConfig.java  |   275 -
 metron-platform/metron-indexing/README.md          |   270 +-
 .../{ => metron-indexing-common}/README.md         |    81 +-
 .../{ => metron-indexing-common}/pom.xml           |    30 +-
 .../src/main/assembly/assembly.xml                 |    15 +-
 .../zeppelin/metron/metron-connection-report.json  |     0
 .../metron/metron-connection-volume-report.json    |     0
 .../config/zeppelin/metron/metron-ip-report.json   |     0
 .../zeppelin/metron/metron-yaf-telemetry.json      |     0
 .../src/main/config/zookeeper/indexing/asa.json    |     0
 .../src/main/config/zookeeper/indexing/bro.json    |     0
 .../src/main/config/zookeeper/indexing/error.json  |     0
 .../src/main/config/zookeeper/indexing/snort.json  |     0
 .../main/config/zookeeper/indexing/websphere.json  |     0
 .../src/main/config/zookeeper/indexing/yaf.json    |     0
 .../apache/metron/indexing/dao/AccessConfig.java   |     0
 .../metron/indexing/dao/ColumnMetadataDao.java     |     0
 .../org/apache/metron/indexing/dao/HBaseDao.java   |    12 +-
 .../org/apache/metron/indexing/dao/IndexDao.java   |     0
 .../metron/indexing/dao/IndexDaoFactory.java       |     0
 .../metron/indexing/dao/IndexUpdateCallback.java   |     0
 .../apache/metron/indexing/dao/MultiIndexDao.java  |     3 +-
 .../metron/indexing/dao/RetrieveLatestDao.java     |     0
 .../dao/metaalert/DeferredMetaAlertIndexDao.java   |     0
 .../dao/metaalert/MetaAlertAddRemoveRequest.java   |     0
 .../indexing/dao/metaalert/MetaAlertConfig.java    |     0
 .../indexing/dao/metaalert/MetaAlertConstants.java |     0
 .../dao/metaalert/MetaAlertCreateRequest.java      |     0
 .../indexing/dao/metaalert/MetaAlertDao.java       |     0
 .../dao/metaalert/MetaAlertRetrieveLatestDao.java  |     0
 .../indexing/dao/metaalert/MetaAlertSearchDao.java |     0
 .../indexing/dao/metaalert/MetaAlertStatus.java    |     0
 .../indexing/dao/metaalert/MetaAlertUpdateDao.java |     0
 .../metron/indexing/dao/metaalert/MetaScores.java  |     0
 .../lucene/AbstractLuceneMetaAlertUpdateDao.java   |     0
 .../metron/indexing/dao/search/AlertComment.java   |     0
 .../metron/indexing/dao/search/FieldType.java      |     0
 .../metron/indexing/dao/search/GetRequest.java     |     0
 .../apache/metron/indexing/dao/search/Group.java   |     0
 .../metron/indexing/dao/search/GroupOrder.java     |     0
 .../metron/indexing/dao/search/GroupOrderType.java |     0
 .../metron/indexing/dao/search/GroupRequest.java   |     0
 .../metron/indexing/dao/search/GroupResponse.java  |     0
 .../metron/indexing/dao/search/GroupResult.java    |     0
 .../dao/search/InvalidCreateException.java         |     0
 .../dao/search/InvalidSearchException.java         |     0
 .../metron/indexing/dao/search/SearchDao.java      |     0
 .../metron/indexing/dao/search/SearchRequest.java  |     0
 .../metron/indexing/dao/search/SearchResponse.java |     0
 .../metron/indexing/dao/search/SearchResult.java   |     0
 .../metron/indexing/dao/search/SortField.java      |     0
 .../metron/indexing/dao/search/SortOrder.java      |     0
 .../dao/update/CommentAddRemoveRequest.java        |     0
 .../metron/indexing/dao/update/Document.java       |     0
 .../dao/update/OriginalNotFoundException.java      |     0
 .../metron/indexing/dao/update/PatchException.java |    15 +-
 .../metron/indexing/dao/update/PatchOperation.java |    15 +-
 .../metron/indexing/dao/update/PatchRequest.java   |     0
 .../metron/indexing/dao/update/PatchUtils.java     |   105 +
 .../metron/indexing/dao/update/UpdateDao.java      |     3 +-
 .../metron/indexing/util/IndexingCacheUtil.java    |     0
 .../src/main/resources/META-INF/LICENSE            |     0
 .../src/main/resources/META-INF/NOTICE             |     0
 .../InMemoryMetaAlertRetrieveLatestDao.java        |     0
 .../apache/metron/indexing/dao/HBaseDaoTest.java   |     0
 .../apache/metron/indexing/dao/InMemoryDao.java    |     0
 .../metron/indexing/dao/InMemoryMetaAlertDao.java  |     0
 .../indexing/dao/InMemoryMetaAlertUpdateDao.java   |     0
 .../metron/indexing/dao/MultiIndexDaoTest.java     |   249 +
 .../metron/indexing/dao/SearchIntegrationTest.java |     0
 .../apache/metron/indexing/dao/UpdateDaoTest.java  |     0
 .../metron/indexing/dao/UpdateIntegrationTest.java |   140 +-
 .../dao/metaalert/MetaAlertIntegrationTest.java    |     0
 .../indexing/dao/metaalert/MetaScoresTest.java     |     0
 .../AbstractLuceneMetaAlertUpdateDaoTest.java      |     0
 .../metron/indexing/dao/update/PatchUtilsTest.java |   263 +
 .../integration/HBaseDaoIntegrationTest.java       |     5 -
 .../indexing/util/IndexingCacheUtilTest.java       |     0
 .../src/test/resources/log4j.properties            |     0
 .../metron-indexing-storm/README.md                |    79 +
 .../{ => metron-indexing-storm}/indexing_arch.png  |   Bin
 .../metron-indexing-storm}/pom.xml                 |   123 +-
 .../src/main/assembly/assembly.xml                 |     0
 .../src/main/config/hdfs.properties.j2             |     0
 .../src/main/flux/indexing/batch/remote.yaml       |     0
 .../main/flux/indexing/random_access/remote.yaml   |     0
 .../src/main/scripts/start_hdfs_topology.sh        |     5 +-
 .../integration/HDFSIndexingIntegrationTest.java   |    10 +-
 .../integration/IndexingIntegrationTest.java       |    34 +-
 metron-platform/metron-indexing/pom.xml            |   292 +-
 .../metron/indexing/dao/MultiIndexDaoTest.java     |    96 -
 metron-platform/metron-integration-test/pom.xml    |     3 +-
 .../apache/metron/integration/ProcessorResult.java |     3 +-
 .../apache/metron/integration/TestZKServer.java    |    79 +
 .../components/FluxTopologyComponent.java          |     8 +-
 .../integration/components/KafkaComponent.java     |    22 +-
 .../apache/metron/integration/utils/TestUtils.java |     6 +-
 .../data/jsonMapQuery/parsed/jsonMapExampleParsed  |    20 +-
 .../parsed/jsonMapExampleParsed                    |    12 +-
 .../src/main/sample/data/leef/parsed/leefParsed    |     4 +
 .../src/main/sample/data/leef/raw/leefOutput       |     4 +
 .../sample/data/syslog5424/parsed/Syslog5424Parsed |     4 +-
 .../sample/data/syslog5424/raw/Syslog5424Output    |     4 +-
 metron-platform/metron-job/pom.xml                 |     2 +-
 metron-platform/metron-management/pom.xml          |     5 +-
 .../src/main/assembly/assembly.xml                 |     2 +-
 .../metron/management/ConfigurationFunctions.java  |    11 +-
 .../apache/metron/management/GrokFunctions.java    |     3 +-
 .../metron/management/StellarParserRunner.java     |     8 +-
 .../management/ConfigurationFunctionsTest.java     |    31 +-
 .../metron/management/ParserFunctionsTest.java     |    14 +-
 metron-platform/metron-parsing/README.md           |    27 +-
 .../metron-parsers-common/3rdPartyParser.md        |    17 +
 .../metron-parsing/metron-parsers-common/pom.xml   |    13 +-
 .../org/apache/metron/parsers/BasicParser.java     |    39 +-
 .../java/org/apache/metron/parsers/GrokParser.java |    35 +-
 .../org/apache/metron/parsers/ParserComponent.java |     3 +
 .../apache/metron/parsers/ParserRunnerImpl.java    |     3 +
 .../org/apache/metron/parsers/csv/CSVParser.java   |     8 +-
 .../metron/parsers/interfaces/MessageParser.java   |    21 +-
 .../apache/metron/parsers/json/JSONMapParser.java  |    24 +-
 .../parsers/regex/RegularExpressionsParser.java    |    25 +-
 .../metron/parsers/syslog/BaseSyslogParser.java    |    44 +-
 .../org/apache/metron/parsers/utils/DateUtils.java |     9 +
 .../metron/parsers/AbstractParserConfigTest.java   |     9 +-
 .../org/apache/metron/parsers/BasicParserTest.java |   167 +
 .../org/apache/metron/parsers/GrokParserTest.java  |     3 +-
 .../apache/metron/parsers/MessageParserTest.java   |    13 +-
 .../metron/parsers/MultiLineGrokParserTest.java    |     5 +-
 .../parsers/MultiLineWithErrorsGrokParserTest.java |     5 +-
 .../metron/parsers/ParserRunnerImplTest.java       |    65 +-
 .../apache/metron/parsers/csv/CSVParserTest.java   |    29 +-
 .../EnvelopedParserIntegrationTest.java            |    16 +-
 .../parsers/integration/ParserIntegrationTest.java |    12 +-
 .../integration/validation/ParserDriver.java       |     6 +-
 .../validation/SampleDataValidation.java           |     5 +-
 .../parsers/json/JSONMapParserQueryTest.java       |    76 +-
 .../metron/parsers/json/JSONMapParserTest.java     |    63 +-
 .../json/JSONMapParserWrappedQueryTest.java        |    27 +-
 .../regex/RegularExpressionsParserTest.java        |    32 +-
 .../parsers/syslog/Syslog3164ParserTest.java       |     9 +-
 .../parsers/syslog/Syslog5424ParserTest.java       |    22 +-
 .../metron-parsing/metron-parsers/pom.xml          |     8 +-
 .../src/main/config/zookeeper/parsers/leef.json    |     4 +
 .../apache/metron/parsers/asa/BasicAsaParser.java  |    26 +-
 .../apache/metron/parsers/bro/BasicBroParser.java  |    12 +-
 .../org/apache/metron/parsers/cef/CEFParser.java   |   102 +-
 .../metron/parsers/fireeye/BasicFireEyeParser.java |     8 +-
 .../apache/metron/parsers/ise/BasicIseParser.java  |    13 +-
 .../apache/metron/parsers/ise/JavaCharStream.java  |    10 +-
 .../metron/parsers/lancope/BasicLancopeParser.java |     4 +-
 .../org/apache/metron/parsers/leef/LEEFParser.java |   284 +
 .../parsers/logstash/BasicLogstashParser.java      |     3 +-
 .../paloalto/BasicPaloAltoFirewallParser.java      |    13 +-
 .../metron/parsers/snort/BasicSnortParser.java     |     7 +-
 .../parsers/sourcefire/BasicSourcefireParser.java  |     4 +-
 .../org/apache/metron/parsers/SnortParserTest.java |    43 +-
 .../metron/parsers/asa/BasicAsaParserTest.java     |    67 +-
 .../metron/parsers/bro/BasicBroParserTest.java     |    98 +-
 .../apache/metron/parsers/cef/CEFParserTest.java   |   115 +-
 .../parsers/fireeye/BasicFireEyeParserTest.java    |    32 +-
 .../metron/parsers/ise/BasicIseParserTest.java     |    23 +-
 .../parsers/lancope/BasicLancopeParserTest.java    |    23 +-
 .../apache/metron/parsers/leef/LEEFParserTest.java |   262 +
 .../paloalto/BasicPaloAltoFirewallParserTest.java  |    57 +-
 .../sourcefire/BasicSourcefireParserTest.java      |    25 +-
 .../parsers/websphere/GrokWebSphereParserTest.java |    85 +-
 .../org/apache/metron/parsers/leef/sample.leef     |     4 +
 .../org/apache/metron/parsers/leef/sample.schema   |    27 +
 .../metron-parsing/metron-parsing-storm/README.md  |     8 +-
 .../metron-parsing/metron-parsing-storm/pom.xml    |    15 +-
 .../org/apache/metron/parsers/bolt/ParserBolt.java |     6 +-
 .../src/main/scripts/start_parser_topology.sh      |     8 +-
 .../integration/validation/StormParserDriver.java  |    40 +-
 .../integration/WriterBoltIntegrationTest.java     |     5 +-
 metron-platform/metron-parsing/pom.xml             |     2 +-
 metron-platform/metron-pcap-backend/pom.xml        |    42 +-
 .../src/main/assembly/assembly.xml                 |     2 +-
 .../src/main/scripts/pcap_inspector.sh             |     2 +-
 .../src/main/scripts/pcap_query.sh                 |     2 +-
 .../src/main/scripts/pcap_zeppelin_run.sh          |     2 +-
 .../src/main/scripts/start_pcap_topology.sh        |     6 +-
 .../org/apache/metron/pcap/query/PcapCliTest.java  |     8 +-
 metron-platform/metron-pcap/pom.xml                |    18 +-
 .../java/org/apache/metron/pcap/mr/PcapJob.java    |     9 +-
 .../apache/metron/pcap/utils/FileFilterUtil.java   |    12 +-
 .../apache/metron/pcap/mr/FileFilterUtilTest.java  |    37 +-
 metron-platform/metron-solr/README.md              |   153 +-
 .../metron-solr/{ => metron-solr-common}/README.md |     2 +-
 .../metron-solr/{ => metron-solr-common}/pom.xml   |   130 +-
 .../src/main/assembly/assembly.xml                 |     8 -
 .../src/main/config/schema/bro/schema.xml          |     0
 .../src/main/config/schema/bro}/solrconfig.xml     |     0
 .../src/main/config/schema/error/schema.xml        |     0
 .../src/main/config/schema/error}/solrconfig.xml   |     0
 .../src/main/config/schema/metaalert/schema.xml    |     0
 .../main/config/schema/metaalert}/solrconfig.xml   |     0
 .../src/main/config/schema/snort/schema.xml        |     0
 .../src/main/config/schema/snort}/solrconfig.xml   |     0
 .../src/main/config/schema/yaf/schema.xml          |     0
 .../src/main/config/schema/yaf}/solrconfig.xml     |     0
 .../java/org/apache/metron/solr/SolrConstants.java |     0
 .../metron/solr/client/SolrClientFactory.java      |     0
 .../metron/solr/dao/SolrColumnMetadataDao.java     |     0
 .../java/org/apache/metron/solr/dao/SolrDao.java   |     0
 .../apache/metron/solr/dao/SolrMetaAlertDao.java   |     0
 .../solr/dao/SolrMetaAlertRetrieveLatestDao.java   |     0
 .../metron/solr/dao/SolrMetaAlertSearchDao.java    |     0
 .../metron/solr/dao/SolrMetaAlertUpdateDao.java    |     0
 .../metron/solr/dao/SolrRetrieveLatestDao.java     |     0
 .../org/apache/metron/solr/dao/SolrSearchDao.java  |    50 +-
 .../org/apache/metron/solr/dao/SolrUpdateDao.java  |     0
 .../org/apache/metron/solr/dao/SolrUtilities.java  |     5 +-
 .../org/apache/metron/solr/schema/FieldType.java   |     0
 .../metron/solr/schema/SchemaTranslator.java       |     3 +-
 .../metron/solr/writer/MetronSolrClient.java       |     0
 .../org/apache/metron/solr/writer/SolrWriter.java  |     0
 .../src/main/scripts/create_collection.sh          |     0
 .../src/main/scripts/delete_collection.sh          |     0
 .../src/main/scripts/install_solr.sh               |     0
 .../src/main/scripts/start_solr.sh                 |     0
 .../src/main/scripts/stop_solr.sh                  |     0
 .../enrichment/integration/utils/SampleUtil.java   |     6 +-
 .../metron/solr/client/SolrClientFactoryTest.java  |     0
 .../metron/solr/dao/SolrColumnMetadataTest.java    |     0
 .../org/apache/metron/solr/dao/SolrDaoTest.java    |     0
 .../metron/solr/dao/SolrMetaAlertDaoTest.java      |     0
 .../apache/metron/solr/dao/SolrSearchDaoTest.java  |    22 +-
 .../apache/metron/solr/dao/SolrUpdateDaoTest.java  |     0
 .../apache/metron/solr/dao/SolrUtilitiesTest.java  |     5 +-
 .../integration/SolrMetaAlertIntegrationTest.java  |     4 +-
 .../SolrRetrieveLatestIntegrationTest.java         |    24 +-
 .../integration/SolrSearchIntegrationTest.java     |     5 +-
 .../integration/SolrUpdateIntegrationTest.java     |    58 +-
 .../solr/integration/components/SolrComponent.java |     0
 .../schema/SchemaValidationIntegrationTest.java    |     0
 .../solr/matcher/ModifiableSolrParamsMatcher.java  |     0
 .../solr/matcher/SolrInputDocumentListMatcher.java |     0
 .../solr/matcher/SolrInputDocumentMatcher.java     |     0
 .../metron/solr/matcher/SolrQueryMatcher.java      |     0
 .../metron/solr/writer/MetronSolrClientTest.java   |     0
 .../apache/metron/solr/writer/SolrWriterTest.java  |     0
 .../test/resources/config/test/conf/managed-schema |     0
 .../resources/config/test/conf}/solrconfig.xml     |     0
 .../src/test/resources/example_data/bro            |     0
 .../src/test/resources/example_data/error          |     0
 .../src/test/resources/example_data/snort          |     0
 .../src/test/resources/example_data/yaf            |     0
 .../src/test/resources/log4j.properties            |     0
 .../src/test/resources/log4j2.xml                  |     0
 .../test/resources/solr/conf/_rest_managed.json    |     0
 .../src/test/resources/solr/conf/currency.xml      |     0
 .../test/resources/solr/conf/lang/stopwords_en.txt |     0
 .../src/test/resources/solr/conf/protwords.txt     |     0
 .../src/test/resources/solr/conf/schema.xml        |     0
 .../src/test/resources/solr/conf/solrconfig.xml    |     0
 .../src/test/resources/solr/conf/stopwords.txt     |     0
 .../src/test/resources/solr/conf/synonyms.txt      |     0
 .../src/test/resources/solr/solr.xml               |     0
 .../metron-solr/metron-solr-storm/README.md        |    20 +-
 .../metron-solr-storm}/pom.xml                     |   168 +-
 .../src/main/assembly/assembly.xml                 |     0
 .../src/main/config/solr.properties                |     0
 .../src/main/config/solr.properties.j2             |     0
 .../src/main/scripts/start_solr_topology.sh        |     3 +-
 .../integration/SolrIndexingIntegrationTest.java   |    15 +-
 metron-platform/metron-solr/pom.xml                |   373 +-
 .../metron-storm-kafka-override/pom.xml            |     4 +-
 metron-platform/metron-storm-kafka/pom.xml         |     3 +-
 metron-platform/metron-test-utilities/pom.xml      |     2 +-
 .../metron/test/converters/BinaryConverters.java   |     4 +-
 .../apache/metron/test/filereaders/FileReader.java |     3 +-
 .../test/spouts/GenericInternalTestSpout.java      |     3 +-
 .../org/apache/metron/test/utils/KafkaLoader.java  |     5 +-
 .../metron-writer/metron-writer-common/pom.xml     |    49 +-
 .../apache/metron/writer/BatchTimeoutPolicy.java   |     1 +
 .../writer/hbase/SimpleHbaseEnrichmentWriter.java  |    31 +-
 .../metron-writer/metron-writer-storm/pom.xml      |     8 +-
 .../org/apache/metron/writer/hdfs/HdfsWriter.java  |    13 +-
 .../apache/metron/writer/hdfs/SourceHandler.java   |    11 +-
 .../writer/bolt/BulkMessageWriterBoltTest.java     |     3 +-
 metron-platform/metron-writer/pom.xml              |     2 +-
 metron-platform/metron-zookeeper/pom.xml           |     2 +-
 .../metron/zookeeper/SimpleEventListener.java      |     4 +-
 metron-platform/pom.xml                            |     2 +-
 metron-stellar/pom.xml                             |     2 +-
 metron-stellar/stellar-3rd-party-example/pom.xml   |     2 +-
 metron-stellar/stellar-common/README.md            |   108 +-
 metron-stellar/stellar-common/pom.xml              |    12 +-
 .../stellar-common/src/main/assembly/assembly.xml  |    12 -
 .../metron/stellar/common/utils/JSONUtils.java     |     6 +-
 .../metron/stellar/dsl/functions/RestConfig.java   |    23 +-
 .../stellar/dsl/functions/RestFunctions.java       |   657 +-
 .../stellar/dsl/functions/StringFunctions.java     |    20 +-
 .../src/main/scripts/deployed/stellar              |     4 +-
 .../stellar/common/shell/cli/StellarShellTest.java |     5 +-
 .../stellar/dsl/functions/BasicStellarTest.java    |     2 +
 .../stellar/dsl/functions/DateFunctionsTest.java   |    29 +-
 .../functions/RestFunctionsIntegrationTest.java    |   500 +
 .../stellar/dsl/functions/RestFunctionsTest.java   |   458 +-
 metron-stellar/stellar-zeppelin/README.md          |     8 +-
 metron-stellar/stellar-zeppelin/pom.xml            |     3 +-
 pom.xml                                            |    13 +-
 site-book/bin/generate-md.sh                       |     3 +-
 site-book/pom.xml                                  |     2 +-
 site/current-book/CONTRIBUTING.html                |    12 +-
 site/current-book/Upgrading.html                   |    28 +-
 site/current-book/index.html                       |    14 +-
 site/current-book/metron-analytics/index.html      |    12 +-
 .../metron-maas-service/index.html                 |    12 +-
 .../metron-profiler-client/index.html              |    12 +-
 .../metron-profiler-common/index.html              |    12 +-
 .../metron-profiler-repl/index.html                |    12 +-
 .../metron-profiler-spark/index.html               |    21 +-
 .../metron-profiler-storm/index.html               |    12 +-
 .../metron-analytics/metron-statistics/HLLP.html   |    12 +-
 .../metron-analytics/metron-statistics/index.html  |    12 +-
 .../metron-contrib/metron-docker/index.html        |    14 +-
 .../metron-contrib/metron-performance/index.html   |    12 +-
 .../metron-deployment/Kerberos-ambari-setup.html   |    12 +-
 .../metron-deployment/Kerberos-manual-setup.html   |    56 +-
 .../metron-deployment/amazon-ec2/index.html        |    12 +-
 .../metron-deployment/ansible/index.html           |    12 +-
 .../metron-deployment/ansible/roles/index.html     |    12 +-
 .../ansible/roles/opentaxii/index.html             |    12 +-
 .../ansible/roles/pcap_replay/index.html           |    12 +-
 .../ansible/roles/sensor-stubs/index.html          |    12 +-
 .../ansible/roles/sensor-test-mode/index.html      |    12 +-
 .../development/centos6/index.html                 |    12 +-
 .../development/fastcapa/index.html                |    12 +-
 .../metron-deployment/development/index.html       |    12 +-
 .../development/ubuntu14/index.html                |    12 +-
 site/current-book/metron-deployment/index.html     |    56 +-
 .../metron-deployment/other-examples/index.html    |    12 +-
 .../manual-install/Manual_Install_CentOS6.html     |    12 +-
 .../ambari/elasticsearch-mpack/index.html          |    12 +-
 .../metron-deployment/packaging/ambari/index.html  |    42 +-
 .../packaging/ambari/metron-mpack/index.html       |    19 +-
 .../packaging/docker/ansible-docker/index.html     |    12 +-
 .../packaging/docker/deb-docker/index.html         |    12 +-
 .../packaging/docker/rpm-docker/index.html         |    12 +-
 .../packaging/packer-build/index.html              |    12 +-
 site/current-book/metron-interface/index.html      |   232 +
 .../metron-interface/metron-alerts/index.html      |    59 +-
 .../metron-interface/metron-config/index.html      |    12 +-
 .../metron-interface/metron-rest/index.html        |   439 +-
 .../metron-platform/Performance-tuning-guide.html  |    25 +-
 site/current-book/metron-platform/index.html       |    19 +-
 .../metron-platform/metron-common/index.html       |   217 +-
 .../metron-data-management/index.html              |    39 +-
 .../metron-elasticsearch/index.html                |    25 +-
 .../metron-platform/metron-enrichment/index.html   |   450 +-
 .../{ => metron-enrichment-common}/index.html      |   259 +-
 .../{ => metron-enrichment-storm}/Performance.html |    82 +-
 .../metron-enrichment-storm/index.html             |   261 +
 .../index.html}                                    |   100 +-
 .../metron-platform/metron-indexing/index.html     |    15 +-
 .../metron-platform/metron-job/index.html          |    15 +-
 .../metron-platform/metron-management/index.html   |   896 +-
 .../metron-parsers/parser-testing.html             |   208 -
 .../org/apache/metron/parsers/paloalto/index.html  |   156 -
 .../{metron-parsers => metron-parsing}/index.html  |   437 +-
 .../metron-parsers-common}/3rdPartyParser.html     |    93 +-
 .../metron-parsers-common}/ParserChaining.html     |    95 +-
 .../metron-parsers-common}/index.html              |    73 +-
 .../message-parser-implementation-notes.html       |    91 +-
 .../metron-parsers-common/parser-testing.html      |   161 +
 .../org/apache/metron/parsers/paloalto/index.html  |   161 +
 .../metron-parsing/metron-parsers}/index.html      |    76 +-
 .../org/apache/metron/parsers/paloalto/index.html  |   157 +
 .../metron-parsing/metron-parsing-storm/index.html |   278 +
 .../metron-platform/metron-pcap-backend/index.html |    15 +-
 .../metron-platform/metron-solr/index.html         |    19 +-
 .../metron-platform/metron-writer/index.html       |   118 +-
 .../metron-sensors/fastcapa/index.html             |    12 +-
 site/current-book/metron-sensors/index.html        |    12 +-
 site/current-book/metron-sensors/pycapa/index.html |    12 +-
 .../stellar-3rd-party-example/index.html           |    12 +-
 .../stellar-common/3rdPartyStellar.html            |    12 +-
 .../metron-stellar/stellar-common/index.html       |   250 +-
 .../metron-stellar/stellar-zeppelin/index.html     |    24 +-
 .../use-cases/forensic_clustering/index.html       |    12 +-
 .../use-cases/geographic_login_outliers/index.html |    12 +-
 site/current-book/use-cases/index.html             |    12 +-
 .../use-cases/parser_chaining/index.html           |    12 +-
 .../use-cases/typosquat_detection/index.html       |    12 +-
 site/documentation/index.md                        |    12 +-
 882 files changed, 35112 insertions(+), 33083 deletions(-)

diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index af6c1e7..4c999a7 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -37,6 +37,8 @@ In order to streamline the review of the contribution we ask you follow these gu
   mvn site
   ```
 
+- [ ] Have you ensured that any documentation diagrams have been updated, along with their source files, using [draw.io](https://www.draw.io/)? See [Metron Development Guidelines](https://cwiki.apache.org/confluence/display/METRON/Development+Guidelines) for instructions.
+
 #### Note:
 Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.
 It is also recommended that [travis-ci](https://travis-ci.org) is set up for your personal repository such that your branches are built there before submitting a pull request.
diff --git a/.travis.yml b/.travis.yml
index 58f8861..02fdd28 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,33 +19,48 @@ sudo: required
 addons:
   chrome: stable
 
-env:
-  - SCRIPT="mvn surefire:test@unit-tests -T 2C"
-  - SCRIPT="mvn surefire:test@integration-tests"
-  - SCRIPT="mvn clean site --projects site-book"
-  - SCRIPT="mvn test --projects metron-interface/metron-config,metron-interface/metron-alerts"
-  - SCRIPT="./dev-utilities/build-utils/verify_licenses.sh"
-
 install: true
 language: java
 jdk:
   - oraclejdk8
 before_install:
-  - wget https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip
-  - unzip -qq apache-maven-3.3.9-bin.zip
   - export M2_HOME=$PWD/apache-maven-3.3.9
   - export PATH=$M2_HOME/bin:$PATH
+  - '[[ -d $M2_HOME ]] || curl --retry 10 -O https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip'
+  - '[[ -d $M2_HOME ]] || unzip -qq apache-maven-3.3.9-bin.zip'
   - npm config set cache $HOME/.npm-cache --global
   - npm config set prefix $HOME/.npm-prefix --global
 
-install:
-  - time mvn install -T 2C -q -DskipTests=true -Dmaven.javadoc.skip=true -B -V
-
-script:
-  - time $SCRIPT
-
 matrix:
   fast_finish: true
+  include:
+    - name: Unit Tests
+      script:
+        - time mvn install -T 2C -q -DskipTests=true -Dmaven.javadoc.skip=true -B -V -pl '!:metron-config,!:metron-alerts'
+        - time mvn surefire:test@unit-tests -T 2C
+
+    - name: Integration Tests
+      script:
+        - time mvn install -T 2C -q -DskipTests=true -Dmaven.javadoc.skip=true -B -V -pl '!:metron-config,!:metron-alerts'
+        - time mvn surefire:test@integration-tests
+
+    - name: Alerts UI Tests
+      script:
+        - time mvn install -T 2C -q -DskipTests=true -Dmaven.javadoc.skip=true -B -V -pl ':metron-alerts'
+        - time mvn test -pl ':metron-alerts'
+
+    - name: Management UI Tests
+      script:
+        - time mvn install -T 2C -q -DskipTests=true -Dmaven.javadoc.skip=true -B -V -pl ':metron-config'
+        - time mvn test -pl ':metron-config'
+
+    - name: Site Book
+      script:
+        - time mvn clean site -pl site-book
+
+    - name: Verify Licenses
+      script:
+        - time ./dev-utilities/build-utils/verify_licenses.sh
 
 before_cache:
   - rm -rf $HOME/.m2/repository/org/apache/metron
@@ -58,3 +73,4 @@ cache:
   - metron-interface/metron-config/node_modules
   - $HOME/.m2
   - $HOME/.npm
+  - $M2_HOME
diff --git a/README.md b/README.md
index 3390e55..1f4e030 100644
--- a/README.md
+++ b/README.md
@@ -132,7 +132,7 @@ component and Apache Kafka as the unified data bus.
 
 Some high level links to the relevant subparts of the architecture, for
 more information:
-* [Parsers](metron-platform/metron-parsers-common) : Parsing data from kafka into the Metron data model and passing it downstream to Enrichment.  
+* [Parsers](metron-platform/metron-parsing) : Parsing data from kafka into the Metron data model and passing it downstream to Enrichment.
 * [Enrichment](metron-platform/metron-enrichment) : Enriching data post-parsing and providing the ability to tag a message as an alert and assign a risk triage level via a custom rule language.
 * [Indexing](metron-platform/metron-indexing) : Indexing the data post-enrichment into HDFS, Elasticsearch or Solr.
 
@@ -146,4 +146,4 @@ Some useful utilities that cross all of these parts of the architecture:
 In order to allow for meta alerts to be queries alongside regular alerts in Elasticsearch 2.x,
 it is necessary to add an additional field to the templates and mapping for existing sensors.
 
-Please see a description of the steps necessary to make this change in the metron-elasticsearch [Using Metron with Elasticsearch 2.x](./metron-platform/metron-elasticsearch#using-metron-with-elasticsearch-2x)
+Please see a description of the steps necessary to make this change in metron-elasticsearch [Using Metron with Elasticsearch 5.6](./metron-platform/metron-elasticsearch/metron-elasticsearch-common#using-metron-with-elasticsearch-56)
diff --git a/Upgrading.md b/Upgrading.md
index d59aa57..66350c3 100644
--- a/Upgrading.md
+++ b/Upgrading.md
@@ -19,6 +19,20 @@ limitations under the License.
 This document constitutes a per-version listing of changes of
 configuration which are non-backwards compatible.
 
+
+## 0.7.2 to 0.7.3
+
+### [METRON-614: Eliminate use of the default Charset](https://issues.apache.org/jira/browse/METRON-614)
+The use of the system default Charset is being dropped throughout the code in favor or explicit Charsets, by default UTF-8. As part of this change, individual parsers may now set a configuration property `readCharset` to allow each parser to set the Charset used by its data.  This has potential upgrade implications:
+
+* If your system's default Charset and the input data is not UTF-8, you will need to configure each parser to use the appropriate Charset.
+* If you've directly implemented the `MessageParser` interface (instead of extending `BasicParser`) and you need to handle non-UTF-8 Charsets, you should do reading and handling of this configuration in your implementation by overriding `getReadCharset()`.
+
+## 0.7.1 to 0.7.2
+
+### [METRON-2164: Remove the Split-Join Enrichment Topology](https://issues.apache.org/jira/browse/METRON-2164)
+The Split-Join Enrichment topology has been deprecated since November 2018. Metron has defaulted to using the Unified Enrichment topology since that time. All users of the Split-Join Enrichment topology should migrate to the Unified Enrichment topology. Both topologies provide equivalent functionality.
+
 ## 0.7.0 to 0.7.1
 
 ### [METRON-2100: Update developer documentation for full dev management UI parser aggregation feature gap](https://issues.apache.org/jira/browse/METRON-2100)
diff --git a/dependencies_with_url.csv b/dependencies_with_url.csv
index 04f7935..595cf0e 100644
--- a/dependencies_with_url.csv
+++ b/dependencies_with_url.csv
@@ -494,7 +494,7 @@ org.sonatype.sisu:sisu-inject-bean:jar:2.2.2:compile
 org.sonatype.sisu:sisu-inject-plexus:jar:2.2.2:compile
 com.zaxxer:HikariCP:jar:2.7.8:compile,ASLv2,https://github.com/brettwooldridge/HikariCP
 org.hibernate.validator:hibernate-validator:jar:6.0.9.Final:compile,ASLv2,https://github.com/hibernate/hibernate-validator
-com.github.palindromicity:simple-syslog:jar:0.0.1:compile,ASLv2,https://github.com/palindromicity/simple-syslog
+com.github.palindromicity:simple-syslog:jar:0.0.3:compile,ASLv2,https://github.com/palindromicity/simple-syslog
 org.elasticsearch.client:elasticsearch-rest-high-level-client:jar:5.6.14:compile,ASLv2,https://github.com/elastic/elasticsearch/blob/master/LICENSE.txt
 org.elasticsearch.plugin:aggs-matrix-stats-client:jar:5.6.14:compile,ASLv2,https://github.com/elastic/elasticsearch/blob/master/LICENSE.txt
 org.fusesource.jansi:jansi:jar:1.16:compile,ASLv2,https://github.com/fusesource/jansi/blob/master/license.txt
diff --git a/metron-analytics/metron-maas-common/pom.xml b/metron-analytics/metron-maas-common/pom.xml
index 3635f4d..b404111 100644
--- a/metron-analytics/metron-maas-common/pom.xml
+++ b/metron-analytics/metron-maas-common/pom.xml
@@ -18,7 +18,7 @@
   <parent>
     <groupId>org.apache.metron</groupId>
     <artifactId>metron-analytics</artifactId>
-    <version>0.7.1</version>
+    <version>0.7.2</version>
   </parent>
   <artifactId>metron-maas-common</artifactId>
   <url>https://metron.apache.org/</url>
@@ -43,6 +43,7 @@
           <artifactId>hadoop-auth</artifactId>
         </exclusion>
       </exclusions>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>commons-cli</groupId>
diff --git a/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/util/RESTUtil.java b/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/util/RESTUtil.java
index e3b6d8e..8bb6e4e 100644
--- a/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/util/RESTUtil.java
+++ b/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/util/RESTUtil.java
@@ -19,6 +19,7 @@ package org.apache.metron.maas.util;
 
 import com.google.common.collect.Iterables;
 import com.google.common.io.CharStreams;
+import java.nio.charset.StandardCharsets;
 import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.HttpClient;
@@ -61,7 +62,8 @@ public enum RESTUtil {
               + response.getStatusLine().getStatusCode());
     }
 
-    return new BufferedReader(new InputStreamReader(response.getEntity().getContent()))
+    return new BufferedReader(new InputStreamReader(response.getEntity().getContent(),
+        StandardCharsets.UTF_8))
             .lines().collect(Collectors.joining("\n"));
   }
   public URL appendToUrl(URL endpointUrl, String params) throws MalformedURLException {
diff --git a/metron-analytics/metron-maas-service/pom.xml b/metron-analytics/metron-maas-service/pom.xml
index dfa6523..a1671b5 100644
--- a/metron-analytics/metron-maas-service/pom.xml
+++ b/metron-analytics/metron-maas-service/pom.xml
@@ -18,7 +18,7 @@
   <parent>
     <groupId>org.apache.metron</groupId>
     <artifactId>metron-analytics</artifactId>
-    <version>0.7.1</version>
+    <version>0.7.2</version>
   </parent>
   <artifactId>metron-maas-service</artifactId>
   <url>https://metron.apache.org/</url>
@@ -44,6 +44,12 @@
       <version>${project.parent.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.metron</groupId>
+      <artifactId>stellar-common</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
       <groupId>de.javakaffee</groupId>
       <artifactId>kryo-serializers</artifactId>
       <version>${global_kryo_serializers_version}</version>
diff --git a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/runner/Runner.java b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/runner/Runner.java
index 4103d3d..e35ab0a 100644
--- a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/runner/Runner.java
+++ b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/runner/Runner.java
@@ -21,6 +21,7 @@ import com.google.common.base.Charsets;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Iterables;
 import com.google.common.io.Files;
+import java.nio.charset.StandardCharsets;
 import org.apache.commons.cli.*;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
@@ -314,7 +315,7 @@ public class Runner {
         }
         if(content != null && content.length() > 0) {
           try {
-            Endpoint ep = ConfigUtil.INSTANCE.read(content.getBytes(), Endpoint.class);
+            Endpoint ep = ConfigUtil.INSTANCE.read(content.getBytes(StandardCharsets.UTF_8), Endpoint.class);
             return ep;
           }
           catch(Exception ex) {
diff --git a/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/MaasIntegrationTest.java b/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/MaasIntegrationTest.java
index a75f2a3..8752850 100644
--- a/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/MaasIntegrationTest.java
+++ b/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/MaasIntegrationTest.java
@@ -20,6 +20,7 @@ import java.io.*;
 import java.net.HttpURLConnection;
 import java.net.InetAddress;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.logging.Level;
@@ -279,7 +280,7 @@ public class MaasIntegrationTest {
       String line;
       Process p = Runtime.getRuntime().exec("ps -e");
       BufferedReader input =
-              new BufferedReader(new InputStreamReader(p.getInputStream()));
+              new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8));
       while ((line = input.readLine()) != null) {
         if(line.contains("dummy_rest.sh")) {
           String pid = Iterables.get(Splitter.on(" ").split(line.replaceAll("\\s+", " ").trim()), 0);
@@ -305,7 +306,7 @@ public class MaasIntegrationTest {
       }
 
       BufferedReader br = new BufferedReader(new InputStreamReader(
-              (conn.getInputStream())));
+              (conn.getInputStream()), StandardCharsets.UTF_8));
 
       String output = "";
       String line;
@@ -407,7 +408,7 @@ public class MaasIntegrationTest {
           try {
 
             String sCurrentLine;
-            br = new BufferedReader(new FileReader(output));
+            br = new BufferedReader(new InputStreamReader(new FileInputStream(output), StandardCharsets.UTF_8));
             int numOfline = 0;
             while ((sCurrentLine = br.readLine()) != null) {
               if (count) {
diff --git a/metron-analytics/metron-profiler-client/pom.xml b/metron-analytics/metron-profiler-client/pom.xml
index b667991..876e1d6 100644
--- a/metron-analytics/metron-profiler-client/pom.xml
+++ b/metron-analytics/metron-profiler-client/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>metron-analytics</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <artifactId>metron-profiler-client</artifactId>
     <url>https://metron.apache.org/</url>
@@ -59,13 +59,19 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>org.apache.metron</groupId>
+            <artifactId>stellar-common</artifactId>
+            <version>${project.parent.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
             <version>${guava_version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.metron</groupId>
-            <artifactId>metron-hbase</artifactId>
+            <artifactId>metron-hbase-common</artifactId>
             <version>${project.parent.version}</version>
             <exclusions>
                 <exclusion>
@@ -84,7 +90,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.metron</groupId>
-            <artifactId>metron-hbase</artifactId>
+            <artifactId>metron-hbase-common</artifactId>
             <version>${project.parent.version}</version>
             <scope>test</scope>
             <type>test-jar</type>
@@ -143,6 +149,8 @@
                 <artifactId>maven-shade-plugin</artifactId>
                 <version>${global_shade_version}</version>
                 <configuration>
+                    <shadedArtifactAttached>true</shadedArtifactAttached>
+                    <shadedClassifierName>uber</shadedClassifierName>
                     <createDependencyReducedPom>false</createDependencyReducedPom>
                     <artifactSet>
                         <excludes>
diff --git a/metron-analytics/metron-profiler-client/src/main/assembly/assembly.xml b/metron-analytics/metron-profiler-client/src/main/assembly/assembly.xml
index b0ab070..86c27e5 100644
--- a/metron-analytics/metron-profiler-client/src/main/assembly/assembly.xml
+++ b/metron-analytics/metron-profiler-client/src/main/assembly/assembly.xml
@@ -28,7 +28,7 @@
         <fileSet>
             <directory>${project.basedir}/target</directory>
             <includes>
-                <include>${project.artifactId}-${project.version}.jar</include>
+                <include>${project.artifactId}-${project.version}-uber.jar</include>
             </includes>
             <outputDirectory>lib</outputDirectory>
             <useDefaultExcludes>true</useDefaultExcludes>
diff --git a/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/HBaseProfilerClient.java b/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/HBaseProfilerClient.java
index 2e537da..f4bff2b 100644
--- a/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/HBaseProfilerClient.java
+++ b/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/HBaseProfilerClient.java
@@ -20,22 +20,22 @@
 
 package org.apache.metron.profiler.client;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.metron.common.utils.SerDeUtils;
+import org.apache.metron.hbase.TableProvider;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.ProfilePeriod;
 import org.apache.metron.profiler.hbase.ColumnBuilder;
 import org.apache.metron.profiler.hbase.RowKeyBuilder;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-
 /**
  * The default implementation of a ProfilerClient that fetches profile data persisted in HBase.
  */
@@ -44,7 +44,7 @@ public class HBaseProfilerClient implements ProfilerClient {
   /**
    * Used to access the profile data stored in HBase.
    */
-  private HTableInterface table;
+  private TableProvider tableProvider;
 
   /**
    * Generates the row keys necessary to scan HBase.
@@ -57,15 +57,21 @@ public class HBaseProfilerClient implements ProfilerClient {
   private ColumnBuilder columnBuilder;
 
   private long periodDurationMillis;
+  private String tableName;
+  private final Configuration hbaseConfig;
 
-  public HBaseProfilerClient(HTableInterface table,
+  public HBaseProfilerClient(TableProvider tableProvider,
                              RowKeyBuilder rowKeyBuilder,
                              ColumnBuilder columnBuilder,
-                             long periodDurationMillis) {
-    setTable(table);
+                             long periodDurationMillis,
+                             String tableName,
+                             Configuration hbaseConfig) {
+    setTableProvider(tableProvider);
     setRowKeyBuilder(rowKeyBuilder);
     setColumnBuilder(columnBuilder);
     this.periodDurationMillis = periodDurationMillis;
+    this.tableName = tableName;
+    this.hbaseConfig = hbaseConfig;
   }
 
   /**
@@ -135,7 +141,7 @@ public class HBaseProfilerClient implements ProfilerClient {
 
     // query HBase
     try {
-      Result[] results = table.get(gets);
+      Result[] results = tableProvider.getTable(hbaseConfig, tableName).get(gets);
       for(int i = 0; i < results.length; ++i) {
         Result result = results[i];
         ProfileMeasurement measurement = measurements.get(i);
@@ -164,8 +170,8 @@ public class HBaseProfilerClient implements ProfilerClient {
   }
 
 
-  public void setTable(HTableInterface table) {
-    this.table = table;
+  public void setTableProvider(TableProvider tableProvider) {
+    this.tableProvider = tableProvider;
   }
 
   public void setRowKeyBuilder(RowKeyBuilder rowKeyBuilder) {
diff --git a/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java b/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java
index a0e2bdf..405dd8b 100644
--- a/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java
+++ b/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java
@@ -20,8 +20,25 @@
 
 package org.apache.metron.profiler.client.stellar;
 
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
+import static org.apache.metron.profiler.client.stellar.Util.getArg;
+import static org.apache.metron.profiler.client.stellar.Util.getEffectiveConfig;
+import static org.apache.metron.profiler.client.stellar.Util.getPeriodDurationInMillis;
+
+import java.lang.invoke.MethodHandles;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.metron.hbase.HTableProvider;
 import org.apache.metron.hbase.TableProvider;
 import org.apache.metron.profiler.ProfileMeasurement;
@@ -39,25 +56,6 @@ import org.apache.metron.stellar.dsl.StellarFunction;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
-import static org.apache.metron.profiler.client.stellar.Util.getArg;
-import static org.apache.metron.profiler.client.stellar.Util.getEffectiveConfig;
-import static org.apache.metron.profiler.client.stellar.Util.getPeriodDurationInMillis;
-
 /**
  * A Stellar function that can retrieve data contained within a Profile.
  *
@@ -170,9 +168,10 @@ public class GetProfile implements StellarFunction {
     if (client == null || !cachedConfigMap.equals(effectiveConfig)) {
       RowKeyBuilder rowKeyBuilder = getRowKeyBuilder(effectiveConfig);
       ColumnBuilder columnBuilder = getColumnBuilder(effectiveConfig);
-      HTableInterface table = getTable(effectiveConfig);
       long periodDuration = getPeriodDurationInMillis(effectiveConfig);
-      client = new HBaseProfilerClient(table, rowKeyBuilder, columnBuilder, periodDuration);
+      String tableName = PROFILER_HBASE_TABLE.get(effectiveConfig, String.class);
+      Configuration hbaseConfig = HBaseConfiguration.create();
+      client = new HBaseProfilerClient(getTableProvider(effectiveConfig), rowKeyBuilder, columnBuilder, periodDuration, tableName, hbaseConfig);
       cachedConfigMap = effectiveConfig;
     }
     if(cachedConfigMap != null) {
@@ -248,24 +247,6 @@ public class GetProfile implements StellarFunction {
   }
 
   /**
-   * Create an HBase table used when accessing HBase.
-   * @param global The global configuration.
-   * @return
-   */
-  private HTableInterface getTable(Map<String, Object> global) {
-
-    String tableName = PROFILER_HBASE_TABLE.get(global, String.class);
-    TableProvider provider = getTableProvider(global);
-
-    try {
-      return provider.getTable(HBaseConfiguration.create(), tableName);
-
-    } catch (IOException e) {
-      throw new IllegalArgumentException(String.format("Unable to access table: %s", tableName), e);
-    }
-  }
-
-  /**
    * Create the TableProvider to use when accessing HBase.
    * @param global The global configuration.
    */
diff --git a/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/VerboseProfile.java b/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/VerboseProfile.java
index 9e857aa..0979525 100644
--- a/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/VerboseProfile.java
+++ b/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/VerboseProfile.java
@@ -18,8 +18,24 @@
 
 package org.apache.metron.profiler.client.stellar;
 
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_DEFAULT_VALUE;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
+import static org.apache.metron.profiler.client.stellar.Util.getArg;
+import static org.apache.metron.profiler.client.stellar.Util.getPeriodDurationInMillis;
+import static org.apache.metron.stellar.dsl.Context.Capabilities.GLOBAL_CONFIG;
+
+import java.lang.invoke.MethodHandles;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
 import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.metron.hbase.HTableProvider;
 import org.apache.metron.hbase.TableProvider;
 import org.apache.metron.profiler.ProfileMeasurement;
@@ -37,25 +53,6 @@ import org.apache.metron.stellar.dsl.StellarFunction;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_DEFAULT_VALUE;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
-import static org.apache.metron.profiler.client.stellar.Util.getArg;
-import static org.apache.metron.profiler.client.stellar.Util.getPeriodDurationInMillis;
-import static org.apache.metron.stellar.dsl.Context.Capabilities.GLOBAL_CONFIG;
-
 /**
  * A Stellar function that can retrieve profile measurements.
  *
@@ -130,9 +127,9 @@ public class VerboseProfile implements StellarFunction {
     if (client == null) {
       RowKeyBuilder rowKeyBuilder = getRowKeyBuilder(globals);
       ColumnBuilder columnBuilder = getColumnBuilder(globals);
-      HTableInterface table = getTable(globals);
+      TableProvider provider = getTableProvider(globals);
       long periodDuration = getPeriodDurationInMillis(globals);
-      client = new HBaseProfilerClient(table, rowKeyBuilder, columnBuilder, periodDuration);
+      client = new HBaseProfilerClient(provider, rowKeyBuilder, columnBuilder, periodDuration, getTableName(globals), HBaseConfiguration.create());
     }
 
     // is there a default value?
@@ -185,20 +182,8 @@ public class VerboseProfile implements StellarFunction {
     return new SaltyRowKeyBuilder(saltDivisor, getPeriodDurationInMillis(global), TimeUnit.MILLISECONDS);
   }
 
-  /**
-   * Create an HBase table used when accessing HBase.
-   * @param global The global configuration.
-   * @return
-   */
-  private HTableInterface getTable(Map<String, Object> global) {
-    String tableName = PROFILER_HBASE_TABLE.get(global, String.class);
-    TableProvider provider = getTableProvider(global);
-    try {
-      return provider.getTable(HBaseConfiguration.create(), tableName);
-
-    } catch (IOException e) {
-      throw new IllegalArgumentException(String.format("Unable to access table: %s", tableName), e);
-    }
+  private String getTableName(Map<String, Object> global) {
+    return PROFILER_HBASE_TABLE.get(global, String.class);
   }
 
   /**
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/HBaseProfilerClientTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/HBaseProfilerClientTest.java
index cc3748e..c7ad11a 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/HBaseProfilerClientTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/HBaseProfilerClientTest.java
@@ -20,6 +20,13 @@
 
 package org.apache.metron.profiler.client;
 
+import static org.junit.Assert.assertEquals;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.hbase.mock.MockHTable;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.hbase.ColumnBuilder;
@@ -32,14 +39,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
 /**
  * Tests the HBaseProfilerClient.
  *
@@ -59,26 +58,29 @@ public class HBaseProfilerClientTest {
 
   private HBaseProfilerClient client;
   private StellarStatefulExecutor executor;
-  private MockHTable table;
+  private MockHBaseTableProvider provider;
   private ProfileWriter profileWriter;
 
   @Before
   public void setup() throws Exception {
-    table = new MockHTable(tableName, columnFamily);
+    provider = new MockHBaseTableProvider();
     executor = new DefaultStellarStatefulExecutor();
+    MockHBaseTableProvider.addToCache(tableName, columnFamily);
 
     // writes values to be read during testing
     long periodDurationMillis = periodUnits.toMillis(periodDuration);
     RowKeyBuilder rowKeyBuilder = new SaltyRowKeyBuilder();
     ColumnBuilder columnBuilder = new ValueOnlyColumnBuilder(columnFamily);
-    profileWriter = new ProfileWriter(rowKeyBuilder, columnBuilder, table, periodDurationMillis);
+    profileWriter = new ProfileWriter(rowKeyBuilder, columnBuilder, provider, periodDurationMillis,
+        tableName, null);
 
-    client = new HBaseProfilerClient(table, rowKeyBuilder, columnBuilder, periodDurationMillis);
+    client = new HBaseProfilerClient(provider, rowKeyBuilder, columnBuilder, periodDurationMillis,
+        tableName, null);
   }
 
   @After
   public void tearDown() throws Exception {
-    table.clear();
+    ((MockHTable) provider.getTable(null, tableName)).clear();
   }
 
   @Test
@@ -200,4 +202,4 @@ public class HBaseProfilerClientTest {
     List<ProfileMeasurement> results = client.fetch(Integer.class, profile, entity, group, startFetchAt, endFetchAt, Optional.empty());
     assertEquals(0, results.size());
   }
-}
\ No newline at end of file
+}
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
index 38f1c3e..c2fa4e7 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
@@ -20,12 +20,17 @@
 
 package org.apache.metron.profiler.client;
 
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.client.Durability;
-import org.apache.hadoop.hbase.client.HTableInterface;
+import org.apache.metron.hbase.ColumnList;
 import org.apache.metron.hbase.HTableProvider;
-import org.apache.metron.hbase.bolt.mapper.ColumnList;
+import org.apache.metron.hbase.TableProvider;
 import org.apache.metron.hbase.client.HBaseClient;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.ProfilePeriod;
@@ -34,12 +39,6 @@ import org.apache.metron.profiler.hbase.RowKeyBuilder;
 import org.apache.metron.profiler.hbase.SaltyRowKeyBuilder;
 import org.apache.metron.profiler.hbase.ValueOnlyColumnBuilder;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Function;
-
 /**
  * Writes ProfileMeasurement values that can be read during automated testing.
  */
@@ -50,11 +49,11 @@ public class ProfileWriter {
   private HBaseClient hbaseClient;
   private HBaseProfilerClient client;
 
-  public ProfileWriter(RowKeyBuilder rowKeyBuilder, ColumnBuilder columnBuilder, HTableInterface table, long periodDurationMillis) {
+  public ProfileWriter(RowKeyBuilder rowKeyBuilder, ColumnBuilder columnBuilder, TableProvider tableProvider, long periodDurationMillis, String tableName, Configuration configuration) {
     this.rowKeyBuilder = rowKeyBuilder;
     this.columnBuilder = columnBuilder;
-    this.hbaseClient = new HBaseClient((c, t) -> table, table.getConfiguration(), table.getName().getNameAsString());
-    this.client = new HBaseProfilerClient(table, rowKeyBuilder, columnBuilder, periodDurationMillis);
+    this.hbaseClient = new HBaseClient(tableProvider, configuration, tableName);
+    this.client = new HBaseProfilerClient(tableProvider, rowKeyBuilder, columnBuilder, periodDurationMillis, tableName, configuration);
   }
 
   /**
@@ -110,7 +109,7 @@ public class ProfileWriter {
     config.set("hbase.zookeeper.quorum", "node1");
 
     HTableProvider provider = new HTableProvider();
-    HTableInterface table = provider.getTable(config, "profiler");
+    String tableName = "profiler";
 
     long periodDurationMillis = TimeUnit.MINUTES.toMillis(15);
     long when = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(2);
@@ -119,7 +118,7 @@ public class ProfileWriter {
             .withEntity("192.168.66.121")
             .withPeriod(when, periodDurationMillis, TimeUnit.MILLISECONDS);
 
-    ProfileWriter writer = new ProfileWriter(rowKeyBuilder, columnBuilder, table, periodDurationMillis);
+    ProfileWriter writer = new ProfileWriter(rowKeyBuilder, columnBuilder, provider, periodDurationMillis, tableName, config);
     writer.write(measure, 2 * 24 * 4, Collections.emptyList(), val -> new Random().nextInt(10));
   }
 }
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/GetProfileTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/GetProfileTest.java
index 3fbed1c..c9f7d21 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/GetProfileTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/GetProfileTest.java
@@ -20,7 +20,21 @@
 
 package org.apache.metron.profiler.client.stellar;
 
-import org.apache.hadoop.hbase.client.HTableInterface;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import org.apache.hadoop.hbase.client.Table;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.client.ProfileWriter;
@@ -38,21 +52,6 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
-
 /**
  * Tests the GetProfile class.
  */
@@ -89,13 +88,13 @@ public class GetProfileTest {
   @Before
   public void setup() {
     state = new HashMap<>();
-    final HTableInterface table = MockHBaseTableProvider.addToCache(tableName, columnFamily);
+    final Table table = MockHBaseTableProvider.addToCache(tableName, columnFamily);
 
     // used to write values to be read during testing
     long periodDurationMillis = TimeUnit.MINUTES.toMillis(15);
     RowKeyBuilder rowKeyBuilder = new SaltyRowKeyBuilder();
     ColumnBuilder columnBuilder = new ValueOnlyColumnBuilder(columnFamily);
-    profileWriter = new ProfileWriter(rowKeyBuilder, columnBuilder, table, periodDurationMillis);
+    profileWriter = new ProfileWriter(rowKeyBuilder, columnBuilder, new MockHBaseTableProvider(), periodDurationMillis, tableName, null);
 
     // global properties
     Map<String, Object> global = new HashMap<String, Object>() {{
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/VerboseProfileTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/VerboseProfileTest.java
index bd39007..ee02bd5 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/VerboseProfileTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/VerboseProfileTest.java
@@ -20,7 +20,28 @@
 
 package org.apache.metron.profiler.client.stellar;
 
-import org.apache.hadoop.hbase.client.HTableInterface;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
+import static org.apache.metron.profiler.client.stellar.VerboseProfile.ENTITY_KEY;
+import static org.apache.metron.profiler.client.stellar.VerboseProfile.GROUPS_KEY;
+import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_END_KEY;
+import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_KEY;
+import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_START_KEY;
+import static org.apache.metron.profiler.client.stellar.VerboseProfile.PROFILE_KEY;
+import static org.apache.metron.profiler.client.stellar.VerboseProfile.VALUE_KEY;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import org.apache.hadoop.hbase.client.Table;
+import org.apache.metron.hbase.TableProvider;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.client.ProfileWriter;
@@ -36,27 +57,6 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.ENTITY_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.GROUPS_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_END_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_START_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.PROFILE_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.VALUE_KEY;
-
 /**
  * Tests the VerboseProfile class.
  */
@@ -79,13 +79,15 @@ public class VerboseProfileTest {
   @Before
   public void setup() {
     state = new HashMap<>();
-    final HTableInterface table = MockHBaseTableProvider.addToCache(tableName, columnFamily);
+    final Table table = MockHBaseTableProvider.addToCache(tableName, columnFamily);
+    TableProvider provider = new MockHBaseTableProvider();
 
     // used to write values to be read during testing
     long periodDurationMillis = TimeUnit.MINUTES.toMillis(15);
     RowKeyBuilder rowKeyBuilder = new SaltyRowKeyBuilder();
     ColumnBuilder columnBuilder = new ValueOnlyColumnBuilder(columnFamily);
-    profileWriter = new ProfileWriter(rowKeyBuilder, columnBuilder, table, periodDurationMillis);
+    profileWriter = new ProfileWriter(rowKeyBuilder, columnBuilder, provider, periodDurationMillis,
+        tableName, null);
 
     // global properties
     globals = new HashMap<String, Object>() {{
diff --git a/metron-analytics/metron-profiler-common/pom.xml b/metron-analytics/metron-profiler-common/pom.xml
index 67952e5..13d5abe 100644
--- a/metron-analytics/metron-profiler-common/pom.xml
+++ b/metron-analytics/metron-profiler-common/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <artifactId>metron-analytics</artifactId>
         <groupId>org.apache.metron</groupId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <artifactId>metron-profiler-common</artifactId>
     <url>https://metron.apache.org/</url>
@@ -34,7 +34,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.metron</groupId>
-            <artifactId>metron-hbase</artifactId>
+            <artifactId>metron-hbase-common</artifactId>
             <version>${project.parent.version}</version>
             <exclusions>
                 <exclusion>
@@ -48,6 +48,12 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>org.apache.metron</groupId>
+            <artifactId>stellar-common</artifactId>
+            <version>${project.parent.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.hbase</groupId>
             <artifactId>hbase-client</artifactId>
             <version>${global_hbase_version}</version>
diff --git a/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/hbase/ColumnBuilder.java b/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/hbase/ColumnBuilder.java
index 7fc5daa..bc4deff 100644
--- a/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/hbase/ColumnBuilder.java
+++ b/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/hbase/ColumnBuilder.java
@@ -20,7 +20,7 @@
 
 package org.apache.metron.profiler.hbase;
 
-import org.apache.metron.hbase.bolt.mapper.ColumnList;
+import org.apache.metron.hbase.ColumnList;
 import org.apache.metron.profiler.ProfileMeasurement;
 
 import java.io.Serializable;
diff --git a/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/hbase/ValueOnlyColumnBuilder.java b/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/hbase/ValueOnlyColumnBuilder.java
index 88ec806..0a4a99d 100644
--- a/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/hbase/ValueOnlyColumnBuilder.java
+++ b/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/hbase/ValueOnlyColumnBuilder.java
@@ -23,7 +23,7 @@ package org.apache.metron.profiler.hbase;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.metron.common.utils.SerDeUtils;
 import org.apache.metron.profiler.ProfileMeasurement;
-import org.apache.metron.hbase.bolt.mapper.ColumnList;
+import org.apache.metron.hbase.ColumnList;
 
 /**
  * A ColumnBuilder that writes only the value of a ProfileMeasurement.
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageDistributorTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageDistributorTest.java
index e04404c..cf11eb7 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageDistributorTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageDistributorTest.java
@@ -21,7 +21,6 @@
 package org.apache.metron.profiler;
 
 import com.github.benmanes.caffeine.cache.Ticker;
-import com.google.common.util.concurrent.MoreExecutors;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.configuration.profiler.ProfileConfig;
 import org.apache.metron.common.utils.JSONUtils;
@@ -33,12 +32,9 @@ import org.junit.Test;
 
 import java.io.IOException;
 import java.util.List;
-import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 
-import static java.util.concurrent.TimeUnit.HOURS;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static java.util.concurrent.TimeUnit.MINUTES;
+import static java.util.concurrent.TimeUnit.*;
 import static org.junit.Assert.assertEquals;
 
 public class DefaultMessageDistributorTest {
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/hbase/SaltyRowKeyBuilderTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/hbase/SaltyRowKeyBuilderTest.java
index e92a447..f39659b 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/hbase/SaltyRowKeyBuilderTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/hbase/SaltyRowKeyBuilderTest.java
@@ -20,6 +20,7 @@
 
 package org.apache.metron.profiler.hbase;
 
+import java.nio.charset.StandardCharsets;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.ProfilePeriod;
 import org.junit.Assert;
@@ -78,9 +79,9 @@ public class SaltyRowKeyBuilderTest {
     ByteBuffer buffer = ByteBuffer
             .allocate(100)
             .put(SaltyRowKeyBuilder.getSalt(measurement.getPeriod(), saltDivisor))
-            .put(measurement.getProfileName().getBytes())
-            .put(measurement.getEntity().getBytes())
-            .put("group1".getBytes())
+            .put(measurement.getProfileName().getBytes(StandardCharsets.UTF_8))
+            .put(measurement.getEntity().getBytes(StandardCharsets.UTF_8))
+            .put("group1".getBytes(StandardCharsets.UTF_8))
             .putLong(1635701L);
 
     buffer.flip();
@@ -104,10 +105,10 @@ public class SaltyRowKeyBuilderTest {
     ByteBuffer buffer = ByteBuffer
             .allocate(100)
             .put(SaltyRowKeyBuilder.getSalt(measurement.getPeriod(), saltDivisor))
-            .put(measurement.getProfileName().getBytes())
-            .put(measurement.getEntity().getBytes())
-            .put("group1".getBytes())
-            .put("group2".getBytes())
+            .put(measurement.getProfileName().getBytes(StandardCharsets.UTF_8))
+            .put(measurement.getEntity().getBytes(StandardCharsets.UTF_8))
+            .put("group1".getBytes(StandardCharsets.UTF_8))
+            .put("group2".getBytes(StandardCharsets.UTF_8))
             .putLong(1635701L);
 
     buffer.flip();
@@ -131,9 +132,9 @@ public class SaltyRowKeyBuilderTest {
     ByteBuffer buffer = ByteBuffer
             .allocate(100)
             .put(SaltyRowKeyBuilder.getSalt(measurement.getPeriod(), saltDivisor))
-            .put(measurement.getProfileName().getBytes())
-            .put(measurement.getEntity().getBytes())
-            .put("200".getBytes())
+            .put(measurement.getProfileName().getBytes(StandardCharsets.UTF_8))
+            .put(measurement.getEntity().getBytes(StandardCharsets.UTF_8))
+            .put("200".getBytes(StandardCharsets.UTF_8))
             .putLong(1635701L);
 
     buffer.flip();
@@ -157,10 +158,10 @@ public class SaltyRowKeyBuilderTest {
     ByteBuffer buffer = ByteBuffer
             .allocate(100)
             .put(SaltyRowKeyBuilder.getSalt(measurement.getPeriod(), saltDivisor))
-            .put(measurement.getProfileName().getBytes())
-            .put(measurement.getEntity().getBytes())
-            .put("200".getBytes())
-            .put("group1".getBytes())
+            .put(measurement.getProfileName().getBytes(StandardCharsets.UTF_8))
+            .put(measurement.getEntity().getBytes(StandardCharsets.UTF_8))
+            .put("200".getBytes(StandardCharsets.UTF_8))
+            .put("group1".getBytes(StandardCharsets.UTF_8))
             .putLong(1635701L);
 
     buffer.flip();
@@ -184,8 +185,8 @@ public class SaltyRowKeyBuilderTest {
     ByteBuffer buffer = ByteBuffer
             .allocate(100)
             .put(SaltyRowKeyBuilder.getSalt(measurement.getPeriod(), saltDivisor))
-            .put(measurement.getProfileName().getBytes())
-            .put(measurement.getEntity().getBytes())
+            .put(measurement.getProfileName().getBytes(StandardCharsets.UTF_8))
+            .put(measurement.getEntity().getBytes(StandardCharsets.UTF_8))
             .putLong(1635701L);
 
     buffer.flip();
diff --git a/metron-analytics/metron-profiler-repl/pom.xml b/metron-analytics/metron-profiler-repl/pom.xml
index 812e176..f3714b8 100644
--- a/metron-analytics/metron-profiler-repl/pom.xml
+++ b/metron-analytics/metron-profiler-repl/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <artifactId>metron-analytics</artifactId>
         <groupId>org.apache.metron</groupId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <artifactId>metron-profiler-repl</artifactId>
     <url>https://metron.apache.org/</url>
@@ -77,6 +77,12 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>org.apache.metron</groupId>
+            <artifactId>stellar-common</artifactId>
+            <version>${project.parent.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-api</artifactId>
             <version>${global_log4j_core_version}</version>
@@ -96,6 +102,8 @@
                 <artifactId>maven-shade-plugin</artifactId>
                 <version>${global_shade_version}</version>
                 <configuration>
+                    <shadedArtifactAttached>true</shadedArtifactAttached>
+                    <shadedClassifierName>uber</shadedClassifierName>
                     <createDependencyReducedPom>true</createDependencyReducedPom>
                 </configuration>
                 <executions>
diff --git a/metron-analytics/metron-profiler-repl/src/main/assembly/assembly.xml b/metron-analytics/metron-profiler-repl/src/main/assembly/assembly.xml
index fa6f0c1..6f883d3 100644
--- a/metron-analytics/metron-profiler-repl/src/main/assembly/assembly.xml
+++ b/metron-analytics/metron-profiler-repl/src/main/assembly/assembly.xml
@@ -27,7 +27,7 @@
         <fileSet>
             <directory>${project.basedir}/target</directory>
             <includes>
-                <include>${project.artifactId}-${project.version}.jar</include>
+                <include>${project.artifactId}-${project.version}-uber.jar</include>
             </includes>
             <outputDirectory>lib</outputDirectory>
             <useDefaultExcludes>true</useDefaultExcludes>
diff --git a/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/StandAloneProfilerTest.java b/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/StandAloneProfilerTest.java
index 94c8fc8..8c63a75 100644
--- a/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/StandAloneProfilerTest.java
+++ b/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/StandAloneProfilerTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.metron.profiler.repl;
 
+import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
 import org.apache.metron.common.utils.JSONUtils;
@@ -233,7 +234,7 @@ public class StandAloneProfilerTest {
    */
   private ProfilerConfig toProfilerConfig(String configAsJSON) throws Exception {
 
-    InputStream in = new ByteArrayInputStream(configAsJSON.getBytes("UTF-8"));
+    InputStream in = new ByteArrayInputStream(configAsJSON.getBytes(StandardCharsets.UTF_8));
     return JSONUtils.INSTANCE.load(in, ProfilerConfig.class);
   }
 
diff --git a/metron-analytics/metron-profiler-spark/README.md b/metron-analytics/metron-profiler-spark/README.md
index 5ee8510..8750550 100644
--- a/metron-analytics/metron-profiler-spark/README.md
+++ b/metron-analytics/metron-profiler-spark/README.md
@@ -42,8 +42,7 @@ The portion of a profile produced by the Batch Profiler should be indistinguisha
 For an introduction to the Profiler, see the [Profiler README](../metron-profiler-common/README.md).
 
 ## Getting Started
-
-1. Create a profile definition by editing `$METRON_HOME/config/zookeeper/profiler.json` as follows.  
+1. If a profile file does not already exist, you can create a profile definition by editing `$METRON_HOME/config/zookeeper/profiler.json` as follows.
 
     ```
     cat $METRON_HOME/config/zookeeper/profiler.json
@@ -60,7 +59,8 @@ For an introduction to the Profiler, see the [Profiler README](../metron-profile
       "timestampField": "timestamp"
     }
     ```
-
+    See [Specifying profiles](#specifying-profiles) for information on how to load profile definitions from zookeeper.
+ 
 1. Ensure that you have archived telemetry available for the Batch Profiler to consume.  By default, Metron will store this in HDFS at `/apps/metron/indexing/indexed/*/*`.
 
     ```
@@ -80,7 +80,6 @@ For an introduction to the Profiler, see the [Profiler README](../metron-profile
 	  ```
 	  log4j.logger.org.apache.metron.profiler.spark=DEBUG
 	  ```
-
 1. Run the Batch Profiler.
 
     ```
@@ -91,6 +90,41 @@ For an introduction to the Profiler, see the [Profiler README](../metron-profile
 
 1. Query for the profile data using the [Profiler Client](../metron-profiler-client/README.md).
 
+## Specifying profiles
+
+The profile to use for batch processing can be specified as either a JSON file on disk
+or by utilizing a profile already loaded into zookeeper for use by the streaming profiler.
+
+### Loading a profile from disk
+
+1. If a profile file does not already exist, you can create a profile definition by editing `$METRON_HOME/config/zookeeper/profiler.json` as follows.
+
+    ```
+    cat $METRON_HOME/config/zookeeper/profiler.json
+    {
+      "profiles": [
+        {
+          "profile": "hello-world",
+          "foreach": "'global'",
+          "init":    { "count": "0" },
+          "update":  { "count": "count + 1" },
+          "result":  "count"
+        }
+      ],
+      "timestampField": "timestamp"
+    }
+    ```
+1.  When launching the batch profiler directly, use the `--profiles <path to profiler.json>` option. 
+If using the wrapper script to launch the batch profiler, it will automatically add the command argument
+`--profiles  $METRON_HOME/config/zookeeper/profiler.json ` to the batch launching process if `$SPARK_PROFILER_USE_ZOOKEEPER` is not defined.
+
+### Loading a profile from zookeeper
+
+Choose to use profiles already loaded into zookeeper (e.g. for use by the streaming profiler) by setting the environment variable `$SPARK_PROFILER_USE_ZOOKEEPER`. 
+This will cause the wrapper script to add `--zookeeper $ZOOKEEPER` to the batch launching process, 
+which will cause the spark profiler to extract profiles from the zookeeper quorum located at `$ZOOKEEPER`. 
+
+
 ## Installation
 
 The Batch Profiler package is installed automatically when installing Metron using the Ambari MPack.  See the following notes when installing the Batch Profiler without the Ambari MPack.
@@ -147,9 +181,11 @@ The Batch Profiler requires Spark version 2.3.0+.
 
 A script located at `$METRON_HOME/bin/start_batch_profiler.sh` has been provided to simplify running the Batch Profiler.  This script makes the following assumptions.
 
-  * The script builds the profiles defined in `$METRON_HOME/config/zookeeper/profiler.json`.
-
+  * The script either 
+       * builds the profiles defined in `$METRON_HOME/config/zookeeper/profiler.json`. or
+       * utilises the profiles already loaded into zookeeper quorum at `$ZOOKEEPER` if the environment variable `$SPARK_PROFILER_USE_ZOOKEEPER` is set.
   * The properties defined in `$METRON_HOME/config/batch-profiler.properties` are passed to both the Profiler and Spark.  You can define both Spark and Profiler properties in this same file.
+  * The script will also configure the event time field to use if the field value is stored in the `${SPARK_PROFILER_EVENT_TIMESTAMP_FIELD}` environment variable.
 
   * The script assumes that Spark is installed at `/usr/hdp/current/spark2-client`.  This can be overridden if you define an environment variable called `SPARK_HOME` prior to executing the script.
 
@@ -171,6 +207,8 @@ The Batch Profiler accepts the following arguments when run from the command lin
 | Argument                              | Description
 |---                                    |---
 | [`-p`, `--profiles`](#--profiles)     | Path to the profile definitions.
+| [`-z`, `--zookeeper`](#--zookeeper)   | Zookeeper quorum to read profile definitions from.
+| [`-t`, `--timestampfield`](#--timestampfield) | Which data field to use for event time.
 | [`-c`, `--config`](#--config)         | Path to the profiler properties file.
 | [`-g`, `--globals`](#--globals)       | Path to the Stellar global config file.
 | [`-r`, `--reader`](#--reader)         | Path to properties for the DataFrameReader.
@@ -178,7 +216,16 @@ The Batch Profiler accepts the following arguments when run from the command lin
 
 #### `--profiles`
 
-The path to a file containing the profile definition in JSON.
+The path to a file containing the profile definition in JSON. Only one of `--zookeeper` or `--profiles` should be used
+
+#### `--zookeeper`
+
+Read profile definitions from the zookeeper quorum at this address. Only one of `--zookeeper` or `--profiles` should be used.
+
+#### `--timestampfield`
+
+Specifies which data field to utilising for event time information. The field to use for event time is usually stored as part of the profile. 
+It can be overridden via this setting.
 
 #### `--config`
 
diff --git a/metron-analytics/metron-profiler-spark/pom.xml b/metron-analytics/metron-profiler-spark/pom.xml
index 40bd551..a087663 100644
--- a/metron-analytics/metron-profiler-spark/pom.xml
+++ b/metron-analytics/metron-profiler-spark/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>metron-analytics</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <artifactId>metron-profiler-spark</artifactId>
     <url>https://metron.apache.org/</url>
@@ -63,6 +63,7 @@
             <groupId>org.apache.metron</groupId>
             <artifactId>stellar-common</artifactId>
             <version>${project.parent.version}</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.metron</groupId>
@@ -81,7 +82,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.metron</groupId>
-            <artifactId>metron-hbase</artifactId>
+            <artifactId>metron-hbase-common</artifactId>
             <version>${project.parent.version}</version>
             <exclusions>
                 <exclusion>
@@ -96,7 +97,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.metron</groupId>
-            <artifactId>metron-hbase</artifactId>
+            <artifactId>metron-hbase-common</artifactId>
             <version>${project.parent.version}</version>
             <scope>test</scope>
             <type>test-jar</type>
@@ -144,6 +145,12 @@
             <version>${global_log4j_core_version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.metron</groupId>
+            <artifactId>metron-integration-test</artifactId>
+            <version>${project.parent.version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
@@ -152,6 +159,8 @@
                 <artifactId>maven-shade-plugin</artifactId>
                 <version>${global_shade_version}</version>
                 <configuration>
+                    <shadedArtifactAttached>true</shadedArtifactAttached>
+                    <shadedClassifierName>uber</shadedClassifierName>
                     <createDependencyReducedPom>true</createDependencyReducedPom>
                 </configuration>
                 <executions>
diff --git a/metron-analytics/metron-profiler-spark/src/main/assembly/assembly.xml b/metron-analytics/metron-profiler-spark/src/main/assembly/assembly.xml
index 02f97eb..cb707be 100644
--- a/metron-analytics/metron-profiler-spark/src/main/assembly/assembly.xml
+++ b/metron-analytics/metron-profiler-spark/src/main/assembly/assembly.xml
@@ -51,7 +51,7 @@
         <fileSet>
             <directory>${project.basedir}/target</directory>
             <includes>
-                <include>${project.artifactId}-${project.version}.jar</include>
+                <include>${project.artifactId}-${project.version}-uber.jar</include>
             </includes>
             <outputDirectory>lib</outputDirectory>
             <useDefaultExcludes>true</useDefaultExcludes>
diff --git a/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/BatchProfilerConfig.java b/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/BatchProfilerConfig.java
index 148d970..7d728be 100644
--- a/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/BatchProfilerConfig.java
+++ b/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/BatchProfilerConfig.java
@@ -19,14 +19,13 @@
  */
 package org.apache.metron.profiler.spark;
 
-import org.apache.hadoop.hbase.client.Durability;
-import org.apache.metron.stellar.common.utils.ConversionUtils;
+import static org.apache.metron.profiler.spark.reader.TelemetryReaders.JSON;
 
 import java.util.Map;
 import java.util.Properties;
-
-import static org.apache.metron.profiler.spark.reader.TelemetryReaders.JSON;
-import static org.apache.metron.profiler.spark.reader.TelemetryReaders.TEXT;
+import org.apache.hadoop.hbase.client.Durability;
+import org.apache.metron.hbase.HTableProvider;
+import org.apache.metron.stellar.common.utils.ConversionUtils;
 
 /**
  * Defines the configuration values recognized by the Batch Profiler.
@@ -39,7 +38,7 @@ public enum BatchProfilerConfig {
 
   HBASE_SALT_DIVISOR("profiler.hbase.salt.divisor", 1000, Integer.class),
 
-  HBASE_TABLE_PROVIDER("profiler.hbase.table.provider", "org.apache.metron.hbase.HTableProvider", String.class),
+  HBASE_TABLE_PROVIDER("profiler.hbase.table.provider", HTableProvider.class.getName(), String.class),
 
   HBASE_TABLE_NAME("profiler.hbase.table", "profiler", String.class),
 
diff --git a/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLI.java b/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLI.java
index 29fe4a2..9171f01 100644
--- a/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLI.java
+++ b/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLI.java
@@ -17,15 +17,22 @@
  *  limitations under the License.
  *
  */
+
 package org.apache.metron.profiler.spark.cli;
 
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.MissingOptionException;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.PosixParser;
 import org.apache.commons.io.IOUtils;
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.metron.common.configuration.ConfigurationsUtils;
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
 import org.apache.metron.profiler.spark.BatchProfiler;
+import org.apache.metron.zookeeper.ZKCache;
 import org.apache.spark.SparkConf;
 import org.apache.spark.sql.SparkSession;
 import org.slf4j.Logger;
@@ -35,19 +42,23 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.Serializable;
 import java.lang.invoke.MethodHandles;
+import java.util.Optional;
 import java.util.Properties;
 
-import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.PROFILER_PROPS_FILE;
 import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.GLOBALS_FILE;
+import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.PROFILER_PROPS_FILE;
 import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.PROFILE_DEFN_FILE;
+import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.PROFILE_TIMESTAMP_FLD;
+import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.PROFILE_ZK;
 import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.READER_PROPS_FILE;
 import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.parse;
 
 /**
- * The main entry point which launches the Batch Profiler in Spark.
- *
+ * The main entry point which launches the Batch Profiler iin Spark.
+ * Profiles can be read from either files (utilising --profiles)
+ * or zookeeper (utilising --zookeeper)
  * With this class the Batch Profiler can be submitted using the following command.
- *
+ * <p></p>
  * <pre>{@code
  *  $SPARK_HOME/bin/spark-submit \
  *    --class org.apache.metron.profiler.spark.cli.BatchProfilerCLI \
@@ -58,6 +69,17 @@ import static org.apache.metron.profiler.spark.cli.BatchProfilerCLIOptions.parse
  *     --profiles profiles.json \
  *     --reader reader.properties
  * }</pre>
+ * <p></p>
+ *  Or to pull the profile information from zookeeper
+ *  <pre>{@code
+ *   $SPARK_HOME/bin/spark-submit \
+ *     --class org.apache.metron.profiler.spark.cli.BatchProfilerCLI \
+ *     --properties-file spark.properties \
+ *     metron-profiler-spark-<version>.jar \
+ *     --globals global.properties \
+ *     --zookeeper ZookeeperQuorumForProfiles
+ *     --reader reader.properties
+ *  }</pre>
  */
 public class BatchProfilerCLI implements Serializable {
 
@@ -68,17 +90,19 @@ public class BatchProfilerCLI implements Serializable {
   public static Properties readerProps;
   public static ProfilerConfig profiles;
 
-  public static void main(String[] args) throws IOException, org.apache.commons.cli.ParseException {
+  public static void main(String[] args) throws IOException, org.apache.commons.cli.ParseException, Exception {
     // parse the command line
     CommandLine commandLine = parseCommandLine(args);
+
+    // read profile information
+    profiles = Preconditions.checkNotNull(handleProfileDefinitions(commandLine), "An error occurred while reading profile data");
     profilerProps = handleProfilerProperties(commandLine);
     globals = handleGlobals(commandLine);
-    profiles = handleProfileDefinitions(commandLine);
     readerProps = handleReaderProperties(commandLine);
 
     // the batch profiler must use 'event time'
     if(!profiles.getTimestampField().isPresent()) {
-      throw new IllegalArgumentException("The Batch Profiler must use event time. The 'timestampField' must be defined.");
+      throw new IllegalArgumentException("The Batch Profiler must use event time. The 'timestampField' must be defined in the profile definitions file or via the --timestampField argument.");
     }
 
     // one or more profiles must be defined
@@ -97,6 +121,54 @@ public class BatchProfilerCLI implements Serializable {
   }
 
   /**
+   * Extracts profile information from a file or from zookeeper
+   * @param commandLine Command line information.
+   * @return Profile information
+   * @throws MissingOptionException if command line options are missing
+   * @throws IOException If there are disk or network issues retrieving profiles
+   */
+  private static ProfilerConfig handleProfileDefinitions(CommandLine commandLine) throws MissingOptionException, IOException {
+    final String PROFILE_LOCATION_ERROR =
+            "A single profile location (--profiles or --zookeeper) must be specified";
+    ProfilerConfig profiles;
+
+    if ((!PROFILE_ZK.has(commandLine)) && (!PROFILE_DEFN_FILE.has(commandLine))) {
+      throw new MissingOptionException(PROFILE_LOCATION_ERROR);
+    }
+    if (PROFILE_ZK.has(commandLine) && PROFILE_DEFN_FILE.has(commandLine)) {
+      throw new IllegalArgumentException(PROFILE_LOCATION_ERROR);
+    }
+
+    if (PROFILE_ZK.has(commandLine)) {
+      profiles = handleProfileDefinitionsZK(commandLine);
+    } else {
+      profiles = handleProfileDefinitionsFile(commandLine);
+    }
+
+    // event time can specified via command line override
+    if (PROFILE_TIMESTAMP_FLD.has(commandLine)) {
+      final String timestampField = PROFILE_TIMESTAMP_FLD.get(commandLine);
+      Preconditions.checkArgument(!Strings.isNullOrEmpty(timestampField), "timestampField must be not be empty if specified");
+      profiles.setTimestampField(timestampField);
+    }
+    LOG.info("Utilising profile: {}", profiles.toString());
+    return profiles;
+  }
+
+  /**
+   * Loads Zookeeper client if one is configured.
+   * @param zkQuorum Address if zookeeper server
+   * @return CuratorFramework client if zookeeper configuration defined
+   */
+  private static CuratorFramework createZKClient(final String zkQuorum) {
+    LOG.info("Loading profiler properties from zookeeper quorum '{}'", zkQuorum);
+    final CuratorFramework zkClient = ZKCache.createClient(zkQuorum, Optional.empty());
+    zkClient.start();
+    LOG.info("Zookeeper client created successfully");
+    return zkClient;
+  }
+
+  /**
    * Load the Stellar globals from a file.
    *
    * @param commandLine The command line.
@@ -155,7 +227,7 @@ public class BatchProfilerCLI implements Serializable {
    *
    * @param commandLine The command line.
    */
-  private static ProfilerConfig handleProfileDefinitions(CommandLine commandLine) throws IOException {
+  private static ProfilerConfig handleProfileDefinitionsFile(CommandLine commandLine) throws IOException {
     ProfilerConfig profiles;
     if(PROFILE_DEFN_FILE.has(commandLine)) {
       String profilePath = PROFILE_DEFN_FILE.get(commandLine);
@@ -173,9 +245,45 @@ public class BatchProfilerCLI implements Serializable {
   }
 
   /**
+   * Load the profile definitions from ZK server identified in command line
+   * @param commandLine Address of Zookeeper server
+   * @return ProfileConfig object stored in zookeeper
+   * @throws IOException if error occurs during zookeeper read
+   */
+  private static ProfilerConfig handleProfileDefinitionsZK(final CommandLine commandLine) throws IOException  {
+    Preconditions.checkArgument(PROFILE_ZK.has(commandLine));
+    ProfilerConfig profiles;
+    final String zkQuorum = PROFILE_ZK.get(commandLine);
+    try (final CuratorFramework zkClient = createZKClient(zkQuorum)) {
+      profiles = readProfileFromZK(zkClient);
+    }
+    return profiles;
+  }
+
+  /**
+   * Reads profile information utilizing the passed zookeeper client
+   * @param zkClient Started zookeeper client
+   * @throws IOException if error occurs while reading profile information from zookeeper
+   */
+  static ProfilerConfig readProfileFromZK(CuratorFramework zkClient) throws IOException {
+    ProfilerConfig profiles;
+    try {
+      LOG.info("Loading profiles from zookeeper");
+      profiles = ConfigurationsUtils.readProfilerConfigFromZookeeper(zkClient);
+      LOG.info("Loaded {} profile(s)", profiles.getProfiles().size());
+    } catch (Exception ex) {
+      throw new IOException(
+              String.format("Error reading configuration from Zookeeper client %s",
+                      zkClient.toString()),
+              ex);
+    }
+    return profiles;
+  }
+
+  /**
    * Parse the command line arguments submitted by the user.
    * @param args The command line arguments to parse.
-   * @throws org.apache.commons.cli.ParseException
+   * @throws org.apache.commons.cli.ParseException if command line has errors
    */
   private static CommandLine parseCommandLine(String[] args) throws ParseException {
     CommandLineParser parser = new PosixParser();
diff --git a/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLIOptions.java b/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLIOptions.java
index d58728a..5d66d3b 100644
--- a/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLIOptions.java
+++ b/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLIOptions.java
@@ -17,6 +17,7 @@
  *  limitations under the License.
  *
  */
+
 package org.apache.metron.profiler.spark.cli;
 
 import com.google.common.base.Joiner;
@@ -34,10 +35,22 @@ import java.util.function.Supplier;
  * Profiler.
  */
 public enum BatchProfilerCLIOptions {
+  PROFILE_ZK(() -> {
+    Option o = new Option("z", "zookeeper", true, "Zookeeper quorum for profile definitions");
+    o.setRequired(false);
+    return o;
+  }),
+
+  PROFILE_TIMESTAMP_FLD(() -> {
+    Option o = new Option("t", "timestampfield", true,
+            "The name of a field to source event time from");
+    o.setRequired(false);
+    return o;
+  }),
 
   PROFILE_DEFN_FILE(() -> {
     Option o = new Option("p", "profiles", true, "Path to the profile definitions.");
-    o.setRequired(true);
+    o.setRequired(false);
     return o;
   }),
 
diff --git a/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/function/MessageRouterFunction.java b/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/function/MessageRouterFunction.java
index 31734d0..f38ed3b 100644
--- a/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/function/MessageRouterFunction.java
+++ b/metron-analytics/metron-profiler-spark/src/main/java/org/apache/metron/profiler/spark/function/MessageRouterFunction.java
@@ -20,6 +20,8 @@
 package org.apache.metron.profiler.spark.function;
 
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
+import org.apache.metron.common.utils.LazyLogger;
+import org.apache.metron.common.utils.LazyLoggerFactory;
 import org.apache.metron.profiler.DefaultMessageRouter;
 import org.apache.metron.profiler.MessageRoute;
 import org.apache.metron.profiler.MessageRouter;
@@ -27,12 +29,9 @@ import org.apache.metron.profiler.clock.Clock;
 import org.apache.metron.profiler.clock.ClockFactory;
 import org.apache.metron.profiler.clock.EventTimeOnlyClockFactory;
 import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.stellar.dsl.StellarFunctions;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.lang.invoke.MethodHandles;
 import java.util.Collections;
@@ -46,7 +45,7 @@ import java.util.Optional;
  */
 public class MessageRouterFunction implements FlatMapFunction<String, MessageRoute> {
 
-  protected static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+  protected static final LazyLogger LOG = LazyLoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   /**
    * The global configuration used for the execution of Stellar.
@@ -112,7 +111,7 @@ public class MessageRouterFunction implements FlatMapFunction<String, MessageRou
           LOG.trace("Found {} route(s) for a message", routes.size());
 
         } else {
-          LOG.trace("Ignoring message; timestamp={} not in [{},{}]", timestamp, prettyPrint(begin), prettyPrint(end));
+          LOG.trace("Ignoring message; timestamp={} not in [{},{}]", () -> timestamp, () -> prettyPrint(begin), () -> prettyPrint(end));
         }
 
       } else {
diff --git a/metron-analytics/metron-profiler-spark/src/main/scripts/start_batch_profiler.sh b/metron-analytics/metron-profiler-spark/src/main/scripts/start_batch_profiler.sh
index c489af7..134af6e 100644
--- a/metron-analytics/metron-profiler-spark/src/main/scripts/start_batch_profiler.sh
+++ b/metron-analytics/metron-profiler-spark/src/main/scripts/start_batch_profiler.sh
@@ -18,15 +18,31 @@
 #
 METRON_VERSION=${project.version}
 METRON_HOME=/usr/metron/${METRON_VERSION}
-PROFILER_JAR=${METRON_HOME}/lib/${project.artifactId}-${METRON_VERSION}.jar
+PROFILER_JAR=${METRON_HOME}/lib/${project.artifactId}-${METRON_VERSION}-uber.jar
+STELLAR_JAR=${METRON_HOME}/lib/stellar-common-$METRON_VERSION-uber.jar
 MAIN_CLASS=org.apache.metron.profiler.spark.cli.BatchProfilerCLI
 PROFILER_PROPS=${PROFILER_PROPS:-"${METRON_HOME}/config/batch-profiler.properties"}
-PROFILES_FILE=${PROFILES:-"${METRON_HOME}/config/zookeeper/profiler.json"}
 SPARK_HOME=${SPARK_HOME:-"/usr/hdp/current/spark2-client"}
 
+PROFILES_FILE=${PROFILES:-"${METRON_HOME}/config/zookeeper/profiler.json"}
+ZOOKEEPER_LOCATION=${ZOOKEEPER:-"node1:2181"}
+
+# allow for an override on event time source via environment variable
+if [ -n "$SPARK_PROFILER_EVENT_TIMESTAMP_FIELD" ]; then
+  EVENT_TIMESTAMP="--timestampfield ${SPARK_PROFILER_EVENT_TIMESTAMP_FIELD}"
+fi
+
+if [ -n "$SPARK_PROFILER_USE_ZOOKEEPER" ]; then
+  PROFILES_LOCATION="--zookeeper ${ZOOKEEPER_LOCATION}"
+else
+  PROFILES_LOCATION="--profiles ${PROFILES_FILE}"
+fi
+
 ${SPARK_HOME}/bin/spark-submit \
     --class ${MAIN_CLASS} \
+    --jars ${STELLAR_JAR} \
     --properties-file ${PROFILER_PROPS} \
     ${PROFILER_JAR} \
     --config ${PROFILER_PROPS} \
-    --profiles ${PROFILES_FILE}
+    ${PROFILES_LOCATION} ${EVENT_TIMESTAMP} \
+    "$@"
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLITest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLITest.java
index c27495e..5be195a 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLITest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLITest.java
@@ -19,6 +19,7 @@
 
 package org.apache.metron.profiler.spark.cli;
 
+import org.apache.commons.cli.MissingArgumentException;
 import org.apache.commons.cli.MissingOptionException;
 import org.junit.Test;
 
@@ -40,7 +41,8 @@ public class BatchProfilerCLITest {
   }
 
   /**
-   * The user must define the -p, --profiles option.  The Profiler cannot work without profiles.
+   * The user must define the -p, --profiles, -z, --zookeeper options.
+   * The Profiler cannot work without profiles.
    */
   @Test(expected = MissingOptionException.class)
   public void mustDefineProfilesOption() throws Exception {
@@ -49,6 +51,30 @@ public class BatchProfilerCLITest {
   }
 
   /**
+   * The user must define one of  -p, --profiles, -z, --zookeeper options.
+   */
+  @Test(expected = IllegalArgumentException.class)
+  public void mustDefineOnlyOneProfilesOption() throws Exception {
+    String[] args = new String[] {
+            "--profiles", "src/test/resources/profiles-no-timestamp-field.json",
+            "--zookeeper", "node1:2181"
+    };
+    BatchProfilerCLI.main(args);
+  }
+
+  /**
+   * If a timestamp option is given, it must contain a field name
+   */
+  @Test(expected = MissingArgumentException.class)
+  public void mustDefineFieldnametoGoWithTimestamp() throws Exception {
+    String[] args = new String[] {
+            "--timestampfield"
+    };
+    BatchProfilerCLI.main(args);
+  }
+
+
+  /**
    * If the profile definition contains no valid profiles, we have a problem.
    */
   @Test(expected = IllegalArgumentException.class)
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerZKIntegrationTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerZKIntegrationTest.java
new file mode 100644
index 0000000..d77e775
--- /dev/null
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerZKIntegrationTest.java
@@ -0,0 +1,82 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.metron.profiler.spark.cli;
+
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.common.configuration.ConfigurationsUtils;
+import org.apache.metron.common.configuration.profiler.ProfilerConfig;
+import org.apache.metron.integration.TestZKServer;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.nio.charset.StandardCharsets;
+
+public class BatchProfilerZKIntegrationTest {
+  /**
+   * {
+   *   "profiles": [
+   *      {
+   *        "profile": "profile1",
+   *        "foreach": "ip_src_addr",
+   *        "init":   { "count": "0" },
+   *        "update": { "count": "count + 1" },
+   *        "result":   "count"
+   *      }
+   *   ]
+   * }
+   */
+  @Multiline
+  private String profile;
+
+  @Test
+  public void testProfilerZookeeperIntegration() throws Exception {
+    final byte[] profileExpectedByte = profile.getBytes(StandardCharsets.UTF_8);
+    final ProfilerConfig expectedProfileConfig = ProfilerConfig.fromBytes(profileExpectedByte);
+
+    TestZKServer.runWithZK( (zkServer, zkClient) -> {
+      // write bytes to zookeeper
+      ConfigurationsUtils.writeProfilerConfigToZookeeper(profileExpectedByte, zkClient);
+
+      // read bytes from zookeeper utilizing Batch Profiler functions
+      final ProfilerConfig profiles = BatchProfilerCLI.readProfileFromZK(zkClient);
+
+      // compare expected values
+      Assert.assertEquals("Profile read from zookeeper has changes", expectedProfileConfig, profiles);
+    });
+  }
+
+  @Test
+  public void testProfileZookeeperIntegrationFails() throws Exception {
+    final byte[] profileExpectedByte = profile.getBytes(StandardCharsets.UTF_8);
+    final ProfilerConfig expectedProfileConfig = ProfilerConfig.fromBytes(profileExpectedByte);
+    expectedProfileConfig.setTimestampField("foobar");
+
+    TestZKServer.runWithZK( (zkServer, zkClient) -> {
+      // write bytes to zookeeper
+      ConfigurationsUtils.writeProfilerConfigToZookeeper(profileExpectedByte, zkClient);
+
+      // read bytes from zookeeper utilizing Batch Profiler functions
+      final ProfilerConfig profiles = BatchProfilerCLI.readProfileFromZK(zkClient);
+
+      // compare expected values
+      Assert.assertNotEquals("Profile zookeeper integration test fails to detect change", expectedProfileConfig, profiles);
+    });
+  }
+}
diff --git a/metron-analytics/metron-profiler-storm/pom.xml b/metron-analytics/metron-profiler-storm/pom.xml
index fe615e2..2ec108a 100644
--- a/metron-analytics/metron-profiler-storm/pom.xml
+++ b/metron-analytics/metron-profiler-storm/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>metron-analytics</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <artifactId>metron-profiler-storm</artifactId>
     <url>https://metron.apache.org/</url>
@@ -130,18 +130,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.metron</groupId>
-            <artifactId>metron-hbase</artifactId>
-            <version>${project.parent.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.metron</groupId>
-            <artifactId>metron-hbase</artifactId>
+            <artifactId>metron-hbase-common</artifactId>
             <version>${project.parent.version}</version>
             <scope>test</scope>
             <type>test-jar</type>
@@ -177,6 +166,12 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>org.apache.metron</groupId>
+            <artifactId>stellar-common</artifactId>
+            <version>${project.parent.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>com.esotericsoftware</groupId>
             <artifactId>kryo-shaded</artifactId>
             <version>${global_kryo_version}</version>
@@ -336,6 +331,8 @@
                 <artifactId>maven-shade-plugin</artifactId>
                 <version>${global_shade_version}</version>
                 <configuration>
+                    <shadedArtifactAttached>true</shadedArtifactAttached>
+                    <shadedClassifierName>uber</shadedClassifierName>
                     <createDependencyReducedPom>true</createDependencyReducedPom>
                 </configuration>
                 <executions>
diff --git a/metron-platform/metron-hbase/src/main/java/org/apache/metron/hbase/bolt/BatchHelper.java b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/hbase/bolt/BatchHelper.java
similarity index 100%
rename from metron-platform/metron-hbase/src/main/java/org/apache/metron/hbase/bolt/BatchHelper.java
rename to metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/hbase/bolt/BatchHelper.java
diff --git a/metron-platform/metron-hbase/src/main/java/org/apache/metron/hbase/bolt/HBaseBolt.java b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/hbase/bolt/HBaseBolt.java
similarity index 99%
rename from metron-platform/metron-hbase/src/main/java/org/apache/metron/hbase/bolt/HBaseBolt.java
rename to metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/hbase/bolt/HBaseBolt.java
index 6953b18..ec860a5 100644
--- a/metron-platform/metron-hbase/src/main/java/org/apache/metron/hbase/bolt/HBaseBolt.java
+++ b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/hbase/bolt/HBaseBolt.java
@@ -29,7 +29,7 @@ import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.client.Durability;
 import org.apache.metron.hbase.HTableProvider;
 import org.apache.metron.hbase.TableProvider;
-import org.apache.metron.hbase.bolt.mapper.ColumnList;
+import org.apache.metron.hbase.ColumnList;
 import org.apache.metron.hbase.bolt.mapper.HBaseMapper;
 import org.apache.metron.hbase.client.HBaseClient;
 import org.apache.storm.Config;
diff --git a/metron-platform/metron-hbase/src/main/java/org/apache/metron/hbase/bolt/mapper/HBaseMapper.java b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/hbase/bolt/mapper/HBaseMapper.java
similarity index 97%
rename from metron-platform/metron-hbase/src/main/java/org/apache/metron/hbase/bolt/mapper/HBaseMapper.java
rename to metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/hbase/bolt/mapper/HBaseMapper.java
index 6c7e5fb..9aba92f 100644
--- a/metron-platform/metron-hbase/src/main/java/org/apache/metron/hbase/bolt/mapper/HBaseMapper.java
+++ b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/hbase/bolt/mapper/HBaseMapper.java
@@ -20,6 +20,7 @@
 
 package org.apache.metron.hbase.bolt.mapper;
 
+import org.apache.metron.hbase.ColumnList;
 import org.apache.storm.tuple.Tuple;
 import java.io.Serializable;
 import java.util.Optional;
diff --git a/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileHBaseMapper.java b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileHBaseMapper.java
index f36496c..bbb5860 100644
--- a/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileHBaseMapper.java
+++ b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileHBaseMapper.java
@@ -21,7 +21,7 @@
 package org.apache.metron.profiler.storm;
 
 import org.apache.metron.common.configuration.profiler.ProfileConfig;
-import org.apache.metron.hbase.bolt.mapper.ColumnList;
+import org.apache.metron.hbase.ColumnList;
 import org.apache.metron.hbase.bolt.mapper.HBaseMapper;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.hbase.ColumnBuilder;
diff --git a/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileSplitterBolt.java b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileSplitterBolt.java
index 2161910..d28db4a 100644
--- a/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileSplitterBolt.java
+++ b/metron-analytics/metron-profiler-storm/src/main/java/org/apache/metron/profiler/storm/ProfileSplitterBolt.java
@@ -20,12 +20,12 @@
 
 package org.apache.metron.profiler.storm;
 
-import org.apache.metron.storm.common.bolt.ConfiguredProfilerBolt;
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
 import org.apache.metron.profiler.DefaultMessageRouter;
 import org.apache.metron.profiler.MessageRoute;
 import org.apache.metron.profiler.MessageRouter;
 import org.apache.metron.stellar.dsl.Context;
+import org.apache.metron.storm.common.bolt.ConfiguredProfilerBolt;
 import org.apache.storm.task.OutputCollector;
 import org.apache.storm.task.TopologyContext;
 import org.apache.storm.topology.OutputFieldsDeclarer;
@@ -40,14 +40,11 @@ import org.slf4j.LoggerFactory;
 
 import java.io.UnsupportedEncodingException;
 import java.lang.invoke.MethodHandles;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.metron.storm.kafka.flux.SimpleStormKafkaBuilder.FieldsConfiguration.OFFSET;
-import static org.apache.metron.storm.kafka.flux.SimpleStormKafkaBuilder.FieldsConfiguration.PARTITION;
-import static org.apache.metron.storm.kafka.flux.SimpleStormKafkaBuilder.FieldsConfiguration.TIMESTAMP;
-import static org.apache.metron.storm.kafka.flux.SimpleStormKafkaBuilder.FieldsConfiguration.TOPIC;
-import static org.apache.metron.storm.kafka.flux.SimpleStormKafkaBuilder.FieldsConfiguration.VALUE;
+import static org.apache.metron.storm.kafka.flux.SimpleStormKafkaBuilder.FieldsConfiguration.*;
 
 /**
  * The Storm bolt responsible for filtering incoming messages and directing
@@ -170,7 +167,7 @@ public class ProfileSplitterBolt extends ConfiguredProfilerBolt {
       return;
     }
 
-    JSONObject message = (JSONObject) parser.parse(new String(data, "UTF8"));
+    JSONObject message = (JSONObject) parser.parse(new String(data, StandardCharsets.UTF_8));
     routeMessage(input, message, config);
   }
 
diff --git a/metron-analytics/metron-profiler-storm/src/main/scripts/start_profiler_topology.sh b/metron-analytics/metron-profiler-storm/src/main/scripts/start_profiler_topology.sh
index 6ec78f5..0a0ea4e 100644
--- a/metron-analytics/metron-profiler-storm/src/main/scripts/start_profiler_topology.sh
+++ b/metron-analytics/metron-profiler-storm/src/main/scripts/start_profiler_topology.sh
@@ -19,4 +19,5 @@
 METRON_VERSION=${project.version}
 METRON_HOME=/usr/metron/$METRON_VERSION
 TOPOLOGY_JAR=${project.artifactId}-$METRON_VERSION-uber.jar
-storm jar $METRON_HOME/lib/$TOPOLOGY_JAR org.apache.storm.flux.Flux --remote $METRON_HOME/flux/profiler/remote.yaml --filter $METRON_HOME/config/profiler.properties
+STELLAR_JAR=stellar-common-$METRON_VERSION-uber.jar
+storm jar $METRON_HOME/lib/$TOPOLOGY_JAR org.apache.storm.flux.Flux --remote $METRON_HOME/flux/profiler/remote.yaml --filter $METRON_HOME/config/profiler.properties --jars "$METRON_HOME/lib/$STELLAR_JAR"
diff --git a/metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java
similarity index 97%
rename from metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java
rename to metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java
index 6057095..bae3728 100644
--- a/metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java
@@ -23,8 +23,8 @@ package org.apache.metron.hbase.bolt;
 import org.apache.metron.hbase.TableProvider;
 import org.apache.storm.Constants;
 import org.apache.storm.tuple.Tuple;
-import org.apache.metron.hbase.Widget;
-import org.apache.metron.hbase.WidgetMapper;
+import org.apache.metron.hbase.bolt.mapper.Widget;
+import org.apache.metron.hbase.bolt.mapper.WidgetMapper;
 import org.apache.metron.hbase.client.HBaseClient;
 import org.apache.metron.test.bolt.BaseBoltTest;
 import org.junit.Assert;
diff --git a/metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/Widget.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/mapper/Widget.java
similarity index 97%
rename from metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/Widget.java
rename to metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/mapper/Widget.java
index 3733e5d..cadea52 100644
--- a/metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/Widget.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/mapper/Widget.java
@@ -18,7 +18,7 @@
  *
  */
 
-package org.apache.metron.hbase;
+package org.apache.metron.hbase.bolt.mapper;
 
 /**
  * A simple POJO used for testing.
diff --git a/metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/WidgetMapper.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/mapper/WidgetMapper.java
similarity index 93%
rename from metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/WidgetMapper.java
rename to metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/mapper/WidgetMapper.java
index 6d56a4b..34e2dfb 100644
--- a/metron-platform/metron-hbase/src/test/java/org/apache/metron/hbase/WidgetMapper.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/mapper/WidgetMapper.java
@@ -18,12 +18,11 @@
  *
  */
 
-package org.apache.metron.hbase;
+package org.apache.metron.hbase.bolt.mapper;
 
 import org.apache.storm.tuple.Tuple;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.metron.hbase.bolt.mapper.ColumnList;
-import org.apache.metron.hbase.bolt.mapper.HBaseMapper;
+import org.apache.metron.hbase.ColumnList;
 
 import java.util.Optional;
 
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileSplitterBoltTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileSplitterBoltTest.java
index 360ef4b..c841122 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileSplitterBoltTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileSplitterBoltTest.java
@@ -20,6 +20,7 @@
 
 package org.apache.metron.profiler.storm;
 
+import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.configuration.profiler.ProfileConfig;
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
@@ -220,7 +221,8 @@ public class ProfileSplitterBoltTest extends BaseBoltTest {
     message = (JSONObject) parser.parse(input);
 
     // ensure the tuple returns the expected json message
-    when(tuple.getBinaryByField(VALUE.getFieldName())).thenReturn(input.getBytes());
+    when(tuple.getBinaryByField(VALUE.getFieldName())).thenReturn(input.getBytes(
+        StandardCharsets.UTF_8));
   }
 
   /**
@@ -430,7 +432,7 @@ public class ProfileSplitterBoltTest extends BaseBoltTest {
    * @throws Exception
    */
   private ProfilerConfig toProfilerConfig(String configAsJSON) throws Exception {
-    InputStream in = new ByteArrayInputStream(configAsJSON.getBytes("UTF-8"));
+    InputStream in = new ByteArrayInputStream(configAsJSON.getBytes(StandardCharsets.UTF_8));
     return JSONUtils.INSTANCE.load(in, ProfilerConfig.class);
   }
 
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ConfigUploadComponent.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ConfigUploadComponent.java
index eae3c52..336abd0 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ConfigUploadComponent.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ConfigUploadComponent.java
@@ -19,6 +19,7 @@
  */
 package org.apache.metron.profiler.storm.integration;
 
+import java.nio.charset.StandardCharsets;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.imps.CuratorFrameworkState;
@@ -96,7 +97,7 @@ public class ConfigUploadComponent implements InMemoryComponent {
       configBytes = readProfilerConfigFromFile(profilerConfigurationPath);
 
     } else if(profilerConfig != null) {
-      configBytes = profilerConfig.toJSON().getBytes();
+      configBytes = profilerConfig.toJSON().getBytes(StandardCharsets.UTF_8);
     }
 
     if (ArrayUtils.getLength(configBytes) > 0) {
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ProfilerIntegrationTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ProfilerIntegrationTest.java
index ea4ad4e..2452102 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ProfilerIntegrationTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ProfilerIntegrationTest.java
@@ -20,6 +20,7 @@
 
 package org.apache.metron.profiler.storm.integration;
 
+import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.io.FileUtils;
 import org.apache.metron.common.Constants;
@@ -368,7 +369,8 @@ public class ProfilerIntegrationTest extends BaseIntegrationTest {
     }, timeout);
 
     // validate the triage message
-    JSONObject message = (JSONObject) new JSONParser().parse(new String(outputMessages.get(0), "UTF-8"));
+    JSONObject message = (JSONObject) new JSONParser().parse(new String(outputMessages.get(0),
+        StandardCharsets.UTF_8));
     assertEquals("profile-with-triage", message.get(PROFILE_FIELD));
     assertEquals("global",              message.get(ENTITY_FIELD));
     assertEquals(76548935L,             message.get(PERIOD_ID_FIELD));
diff --git a/metron-analytics/metron-statistics/pom.xml b/metron-analytics/metron-statistics/pom.xml
index 6be7bf3..4befad0 100644
--- a/metron-analytics/metron-statistics/pom.xml
+++ b/metron-analytics/metron-statistics/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <artifactId>metron-analytics</artifactId>
         <groupId>org.apache.metron</groupId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <artifactId>metron-statistics</artifactId>
     <url>https://metron.apache.org/</url>
@@ -41,6 +41,7 @@
             <groupId>org.apache.metron</groupId>
             <artifactId>stellar-common</artifactId>
             <version>${project.parent.version}</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
@@ -65,6 +66,8 @@
                 <artifactId>maven-shade-plugin</artifactId>
                 <version>${global_shade_version}</version>
                 <configuration>
+                    <shadedArtifactAttached>true</shadedArtifactAttached>
+                    <shadedClassifierName>uber</shadedClassifierName>
                     <createDependencyReducedPom>true</createDependencyReducedPom>
                 </configuration>
                 <executions>
diff --git a/metron-analytics/pom.xml b/metron-analytics/pom.xml
index 704bbc7..ceb0170 100644
--- a/metron-analytics/pom.xml
+++ b/metron-analytics/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.metron</groupId>
 		<artifactId>Metron</artifactId>
-		<version>0.7.1</version>
+		<version>0.7.2</version>
 	</parent>
 	<description>Stream analytics for Metron</description>
 	<url>https://metron.apache.org/</url>
diff --git a/metron-contrib/metron-docker/pom.xml b/metron-contrib/metron-docker/pom.xml
index a747b39..194a996 100644
--- a/metron-contrib/metron-docker/pom.xml
+++ b/metron-contrib/metron-docker/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>metron-contrib</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <description>Metron Docker</description>
     <url>https://metron.apache.org/</url>
diff --git a/metron-contrib/metron-performance/pom.xml b/metron-contrib/metron-performance/pom.xml
index 627d6c6..40992ab 100644
--- a/metron-contrib/metron-performance/pom.xml
+++ b/metron-contrib/metron-performance/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.metron</groupId>
     <artifactId>metron-contrib</artifactId>
-    <version>0.7.1</version>
+    <version>0.7.2</version>
   </parent>
   <description>Performance Testing Utilities</description>
   <url>https://metron.apache.org/</url>
@@ -43,6 +43,12 @@
       <scope>provided</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.metron</groupId>
+      <artifactId>stellar-common</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
       <groupId>org.apache.kafka</groupId>
       <artifactId>kafka_2.10</artifactId>
       <version>${global_kafka_version}</version>
@@ -77,6 +83,8 @@
               <goal>shade</goal>
             </goals>
             <configuration>
+              <shadedArtifactAttached>true</shadedArtifactAttached>
+              <shadedClassifierName>uber</shadedClassifierName>
               <filters>
                 <filter>
                   <artifact>*:*</artifact>
diff --git a/metron-contrib/metron-performance/src/main/assembly/assembly.xml b/metron-contrib/metron-performance/src/main/assembly/assembly.xml
index 3595284..0b5dfb8 100644
--- a/metron-contrib/metron-performance/src/main/assembly/assembly.xml
+++ b/metron-contrib/metron-performance/src/main/assembly/assembly.xml
@@ -33,7 +33,7 @@
     <fileSet>
       <directory>${project.basedir}/target</directory>
       <includes>
-        <include>${project.artifactId}-${project.version}.jar</include>
+        <include>${project.artifactId}-${project.version}-uber.jar</include>
       </includes>
       <outputDirectory>lib</outputDirectory>
       <useDefaultExcludes>true</useDefaultExcludes>
diff --git a/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/load/LoadOptions.java b/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/load/LoadOptions.java
index b4d217d..609f264 100644
--- a/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/load/LoadOptions.java
+++ b/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/load/LoadOptions.java
@@ -18,6 +18,9 @@
 package org.apache.metron.performance.load;
 
 import com.google.common.base.Joiner;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 import org.apache.commons.cli.*;
 import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.common.utils.cli.CLIOptions;
@@ -122,7 +125,8 @@ public enum LoadOptions implements CLIOptions<LoadOptions> {
       }
       File discreteDistributionFile  = new File(option.get(cli));
       if(discreteDistributionFile.exists()) {
-        try (BufferedReader br = new BufferedReader(new FileReader(discreteDistributionFile))){
+        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(discreteDistributionFile),
+            StandardCharsets.UTF_8))){
           return Optional.ofNullable(BiasedSampler.readDistribution(br));
         } catch (IOException e) {
           throw new IllegalStateException("Unable to read distribution file: " + option.get(cli), e);
@@ -180,7 +184,7 @@ public enum LoadOptions implements CLIOptions<LoadOptions> {
       File templateFile = new File(option.get(cli));
       if(templateFile.exists()) {
         List<String> templates = new ArrayList<>();
-        try(BufferedReader br = new BufferedReader(new FileReader(templateFile))) {
+        try(BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(templateFile), StandardCharsets.UTF_8))) {
           for(String line = null;(line = br.readLine()) != null;) {
             templates.add(line);
           }
diff --git a/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/load/monitor/writers/CSVWriter.java b/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/load/monitor/writers/CSVWriter.java
index 112206d..34df517 100644
--- a/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/load/monitor/writers/CSVWriter.java
+++ b/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/load/monitor/writers/CSVWriter.java
@@ -18,6 +18,9 @@
 package org.apache.metron.performance.load.monitor.writers;
 
 import com.google.common.base.Joiner;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
 import org.apache.metron.performance.load.monitor.Results;
 
 import java.io.File;
@@ -34,7 +37,7 @@ public class CSVWriter implements Consumer<Writable> {
 
   public CSVWriter(File outFile) throws IOException {
     if(outFile != null) {
-      pw = Optional.of(new PrintWriter(new FileWriter(outFile)));
+      pw = Optional.of(new PrintWriter(new OutputStreamWriter(new FileOutputStream(outFile), StandardCharsets.UTF_8)));
     }
   }
 
diff --git a/metron-contrib/metron-performance/src/main/scripts/load_tool.sh b/metron-contrib/metron-performance/src/main/scripts/load_tool.sh
index 1b56a6e..da63197 100755
--- a/metron-contrib/metron-performance/src/main/scripts/load_tool.sh
+++ b/metron-contrib/metron-performance/src/main/scripts/load_tool.sh
@@ -30,7 +30,7 @@ fi
 export METRON_VERSION=${project.version}
 export METRON_HOME=/usr/metron/$METRON_VERSION
 export CLASSNAME="org.apache.metron.performance.load.LoadGenerator"
-export GEN_JAR=${project.artifactId}-$METRON_VERSION.jar
+export GEN_JAR=${project.artifactId}-$METRON_VERSION-uber.jar
 export PARSERS_JAR=metron-parsers-$METRON_VERSION-uber.jar
 
 java -cp $METRON_HOME/lib/$GEN_JAR:$METRON_HOME/lib/$PARSERS_JAR $CLASSNAME "$@"
diff --git a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
index 0d9b34a..c8a6f6e 100644
--- a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
+++ b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
@@ -17,6 +17,9 @@
  */
 package org.apache.metron.performance.load;
 
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.PosixParser;
 import org.apache.commons.io.IOUtils;
@@ -75,7 +78,7 @@ public class LoadOptionsTest {
   public void testTemplatePresent() throws Exception {
     File templateFile= new File("target/template");
     String template = "test template1";
-    try(BufferedWriter w = new BufferedWriter(new FileWriter(templateFile))) {
+    try(BufferedWriter w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(templateFile), StandardCharsets.UTF_8))) {
       IOUtils.write(template, w );
     }
     templateFile.deleteOnExit();
diff --git a/metron-contrib/pom.xml b/metron-contrib/pom.xml
index e1ec23f..e10220b 100644
--- a/metron-contrib/pom.xml
+++ b/metron-contrib/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>Metron</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <description>Contributed Tooling for Metron</description>
     <url>https://metron.apache.org/</url>
diff --git a/metron-deployment/amazon-ec2/conf/defaults.yml b/metron-deployment/amazon-ec2/conf/defaults.yml
index 88125d5..b23ea8b 100644
--- a/metron-deployment/amazon-ec2/conf/defaults.yml
+++ b/metron-deployment/amazon-ec2/conf/defaults.yml
@@ -58,7 +58,7 @@ num_partitions: 3
 retention_in_gb: 25
 
 # metron variables
-metron_version: 0.7.1
+metron_version: 0.7.2
 metron_directory: /usr/metron/{{ metron_version }}
 
 # sensors
diff --git a/metron-deployment/ansible/playbooks/docker_probe_install.yml b/metron-deployment/ansible/playbooks/docker_probe_install.yml
index f8e8dc7..613a60a 100644
--- a/metron-deployment/ansible/playbooks/docker_probe_install.yml
+++ b/metron-deployment/ansible/playbooks/docker_probe_install.yml
@@ -30,7 +30,7 @@
 
 - hosts: sensors
   vars:
-    metron_version: 0.7.1
+    metron_version: 0.7.2
     metron_directory: /usr/metron/{{ metron_version }}
     bro_version: "2.5.5"
     fixbuf_version: "1.7.1"
diff --git a/metron-deployment/ansible/roles/ambari_master/defaults/main.yml b/metron-deployment/ansible/roles/ambari_master/defaults/main.yml
index a31934e..0bc0c2d 100644
--- a/metron-deployment/ansible/roles/ambari_master/defaults/main.yml
+++ b/metron-deployment/ansible/roles/ambari_master/defaults/main.yml
@@ -16,7 +16,7 @@
 #
 ---
 ambari_server_mem: 2048
-ambari_mpack_version: 0.7.1.0
+ambari_mpack_version: 0.7.2.0
 metron_mpack_name: metron_mpack-{{ ambari_mpack_version }}.tar.gz
 metron_mpack_path: "{{ playbook_dir }}/../../packaging/ambari/metron-mpack/target/{{ metron_mpack_name }}"
 elasticsearch_mpack_version: 5.6.14
diff --git a/metron-deployment/ansible/roles/ambari_master/tasks/ambari.yml b/metron-deployment/ansible/roles/ambari_master/tasks/ambari.yml
index ba55f30..0395f36 100644
--- a/metron-deployment/ansible/roles/ambari_master/tasks/ambari.yml
+++ b/metron-deployment/ansible/roles/ambari_master/tasks/ambari.yml
@@ -30,6 +30,12 @@
     replace: " -Xmx{{ ambari_server_mem }}m "
     backup: no
 
+- name: Allow 150 seconds of startup time for ambari server
+  lineinfile:
+    path: /etc/ambari-server/conf/ambari.properties
+    regexp: 'server\.startup\.web\.timeout='
+    line: 'server.startup.web.timeout=150'
+
 - name: Setup Ambari Server
   shell: ambari-server setup -s && touch /etc/ambari-server/configured creates=/etc/ambari-server/configured
   register: ambari_server_setup
diff --git a/metron-deployment/ansible/roles/metron-builder/tasks/build-rpms.yml b/metron-deployment/ansible/roles/metron-builder/tasks/build-rpms.yml
index 7a5b6bd..f3883b8 100644
--- a/metron-deployment/ansible/roles/metron-builder/tasks/build-rpms.yml
+++ b/metron-deployment/ansible/roles/metron-builder/tasks/build-rpms.yml
@@ -15,8 +15,10 @@
 #  limitations under the License.
 #
 ---
-- name: Build Metron RPM Packages
+- name: Build Metron RPM Packages {{ '(skipping rpmlint)' if SKIP_RPMLINT is defined else '' }}
   shell: "{{ item }}"
+  environment:
+    SKIP_RPMLINT: "{{ SKIP_RPMLINT if SKIP_RPMLINT is defined else '' }}"
   args:
     chdir: "{{ metron_build_dir }}/metron-deployment"
   with_items:
diff --git a/metron-deployment/development/README.md b/metron-deployment/development/README.md
index b86a5c4..448b53f 100644
--- a/metron-deployment/development/README.md
+++ b/metron-deployment/development/README.md
@@ -61,3 +61,12 @@ To setup this up, start full dev.
 
 Now, when you go to Swagger or the UIs, you should be able to give a user and password.
 "admin" will have the roles ROLE_ADMIN and ROLE_USER, which can be verified via the "/whoami/roles" endpoint in Swagger. Similarly, there is a user "sam" that only has ROLE_USER. A third user, "tom" has neither role.
+
+## Common Problems
+
+### Mac Mojave - Operation Not Permitted Error
+
+`tee: /etc/exports: Operation not permitted on macOS 10.14 Mojave with nfs exports`
+
+If you have the Mojave OS or newer, you may run into this issue when running `vagrant up`. In order to correct this you will need to grant permissions to your relevant terminal application.
+Navigate to `System Preferences -> Security & Privacy -> Privacy` and add your terminal application to "Full Disk Access". See [https://github.com/hashicorp/vagrant/issues/10234](https://github.com/hashicorp/vagrant/issues/10234) for more details.
diff --git a/metron-deployment/development/centos6/README.md b/metron-deployment/development/centos6/README.md
index 99ec967..a00c5cb 100644
--- a/metron-deployment/development/centos6/README.md
+++ b/metron-deployment/development/centos6/README.md
@@ -29,7 +29,7 @@ Getting Started
 
 The computer used to deploy Apache Metron will need to have the following components installed.
 
- - [Ansible](https://github.com/ansible/ansible) 2.4.0+
+ - [Ansible](https://github.com/ansible/ansible) 2.6.5
  - [Docker](https://www.docker.com/community-edition)
  - [Vagrant](https://www.vagrantup.com) 2.0+
  - [Vagrant Hostmanager Plugin](https://github.com/devopsgroup-io/vagrant-hostmanager)
@@ -53,9 +53,10 @@ Any platform that supports these tools is suitable, but the following instructio
 1. Run the following command in a terminal to install all of the required tools.
 
     ```
-    brew cask install vagrant virtualbox docker ansible
+    brew cask install vagrant virtualbox docker
     brew cask install caskroom/versions/java8
     brew install maven@3.3 git
+    sudo pip install ansible=2.6.5
     vagrant plugin install vagrant-hostmanager
     open /Applications/Docker.app
     ```
@@ -77,6 +78,28 @@ Any platform that supports these tools is suitable, but the following instructio
     vagrant provision
     ```
 
+### Deployment optimizations
+
+1. Set environment variable 
+    ```
+    export ANSIBLE_ARGS='--extra-vars "SKIP_RPMLINT=1"'
+    ```
+    To disable running rpmlint as part of the dev deployment task - this can save a couple of minutes of time on the deployment.
+    Either add this variable to your profile, or use it on the command line like
+
+    ```
+    env ANSIBLE_ARGS='--extra-vars "SKIP_RPMLINT=1"' vagrant up
+    ```
+
+### Deployment debugging
+
+1.  To enable more verbose logging of ansible actions during the deployment, use
+    ```
+    env ANSIBLE_ARGS=' -vvvv' vagrant up
+    ```
+    As this can produce large amounts of logging, it is best to redirect output to a file for later analysis.
+    
+
 ### Explore Metron
 
 Navigate to the following resources to explore your newly minted Apache Metron environment.
diff --git a/metron-deployment/development/centos6/Vagrantfile b/metron-deployment/development/centos6/Vagrantfile
index 50571b4..21ca2bd 100644
--- a/metron-deployment/development/centos6/Vagrantfile
+++ b/metron-deployment/development/centos6/Vagrantfile
@@ -102,5 +102,6 @@ Vagrant.configure(2) do |config|
     ansible.skip_tags = ansibleSkipTags.split(",") if ansibleSkipTags != ''
     ansible.inventory_path = "ansible/inventory"
     ansible.compatibility_mode = "auto"
+    ansible.raw_arguments = Shellwords.shellsplit(ENV['ANSIBLE_ARGS']) if ENV['ANSIBLE_ARGS']
   end
 end
diff --git a/metron-deployment/development/centos6/ansible.cfg b/metron-deployment/development/centos6/ansible.cfg
index 66f0afd..70ac5de 100644
--- a/metron-deployment/development/centos6/ansible.cfg
+++ b/metron-deployment/development/centos6/ansible.cfg
@@ -21,6 +21,7 @@ roles_path = ../../ansible/roles
 pipelining = True
 log_path = ./ansible.log
 callback_plugins = ../../ansible/callback_plugins
+callback_whitelist = profile_tasks
 
 # fix for "ssh throws 'unix domain socket too long' " problem
 [ssh_connection]
diff --git a/metron-deployment/development/centos6/ansible/inventory/group_vars/all b/metron-deployment/development/centos6/ansible/inventory/group_vars/all
index a6782e7..dde70e0 100644
--- a/metron-deployment/development/centos6/ansible/inventory/group_vars/all
+++ b/metron-deployment/development/centos6/ansible/inventory/group_vars/all
@@ -35,7 +35,7 @@ threatintel_hbase_table: threatintel
 enrichment_hbase_table: enrichment
 
 # metron
-metron_version: 0.7.1
+metron_version: 0.7.2
 metron_directory: /usr/metron/{{ metron_version }}
 bro_version: "2.5.5"
 fixbuf_version: "1.7.1"
diff --git a/metron-deployment/development/centos7/Vagrantfile b/metron-deployment/development/centos7/Vagrantfile
index 4706e42..28db76a 100644
--- a/metron-deployment/development/centos7/Vagrantfile
+++ b/metron-deployment/development/centos7/Vagrantfile
@@ -64,7 +64,6 @@ Vagrant.configure(2) do |config|
   if Vagrant.has_plugin?("vagrant-cachier")
     config.cache.enable :yum
     config.cache.scope = :box
-
     config.cache.synced_folder_opts = {
       type: :nfs,
       mount_options: ['rw', 'vers=3', 'tcp', 'nolock']
@@ -102,7 +101,6 @@ Vagrant.configure(2) do |config|
     ansible.skip_tags = ansibleSkipTags.split(",") if ansibleSkipTags != ''
     ansible.inventory_path = "ansible/inventory"
     ansible.compatibility_mode = "auto"
-    ansible.raw_arguments  = [
-    ]
+    ansible.raw_arguments = Shellwords.shellsplit(ENV['ANSIBLE_ARGS']) if ENV['ANSIBLE_ARGS']
   end
 end
diff --git a/metron-deployment/development/centos7/ansible.cfg b/metron-deployment/development/centos7/ansible.cfg
index 66f0afd..70ac5de 100644
--- a/metron-deployment/development/centos7/ansible.cfg
+++ b/metron-deployment/development/centos7/ansible.cfg
@@ -21,6 +21,7 @@ roles_path = ../../ansible/roles
 pipelining = True
 log_path = ./ansible.log
 callback_plugins = ../../ansible/callback_plugins
+callback_whitelist = profile_tasks
 
 # fix for "ssh throws 'unix domain socket too long' " problem
 [ssh_connection]
diff --git a/metron-deployment/development/ubuntu14/Vagrantfile b/metron-deployment/development/ubuntu14/Vagrantfile
index ab44491..fcc5b71 100644
--- a/metron-deployment/development/ubuntu14/Vagrantfile
+++ b/metron-deployment/development/ubuntu14/Vagrantfile
@@ -97,5 +97,6 @@ Vagrant.configure(2) do |config|
     ansible.skip_tags = ansibleSkipTags.split(",") if ansibleSkipTags != ''
     ansible.inventory_path = "ansible/inventory"
     ansible.compatibility_mode = "auto"
+    ansible.raw_arguments = Shellwords.shellsplit(ENV['ANSIBLE_ARGS']) if ENV['ANSIBLE_ARGS']
   end
 end
diff --git a/metron-deployment/development/ubuntu14/ansible/inventory/group_vars/all b/metron-deployment/development/ubuntu14/ansible/inventory/group_vars/all
index 7d230d4..2a0a686 100644
--- a/metron-deployment/development/ubuntu14/ansible/inventory/group_vars/all
+++ b/metron-deployment/development/ubuntu14/ansible/inventory/group_vars/all
@@ -35,7 +35,7 @@ threatintel_hbase_table: threatintel
 enrichment_hbase_table: enrichment
 
 # metron
-metron_version: 0.7.1
+metron_version: 0.7.2
 metron_directory: /usr/metron/{{ metron_version }}
 bro_version: "2.5.5"
 fixbuf_version: "1.7.1"
diff --git a/metron-deployment/packaging/ambari/.gitignore b/metron-deployment/packaging/ambari/.gitignore
index 242a4da..ab5dc85 100644
--- a/metron-deployment/packaging/ambari/.gitignore
+++ b/metron-deployment/packaging/ambari/.gitignore
@@ -4,6 +4,4 @@ elasticsearch.properties.j2
 solr.properties.j2
 hdfs.properties.j2
 enrichment.properties.j2
-enrichment-splitjoin.properties.j2
-enrichment-unified.properties.j2
 pcap.properties.j2
diff --git a/metron-deployment/packaging/ambari/elasticsearch-mpack/pom.xml b/metron-deployment/packaging/ambari/elasticsearch-mpack/pom.xml
index 6fa94d7..21298c9 100644
--- a/metron-deployment/packaging/ambari/elasticsearch-mpack/pom.xml
+++ b/metron-deployment/packaging/ambari/elasticsearch-mpack/pom.xml
@@ -20,13 +20,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.metron.packaging.mpacks</groupId>
     <artifactId>elasticsearch_mpack</artifactId>
-    <version>0.7.1.0</version>
+    <version>0.7.2.0</version>
     <name>Elasticsearch Ambari Management Pack</name>
 
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>metron-deployment</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
         <relativePath>../../..</relativePath>
     </parent>
 
diff --git a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/configuration/elastic-site.xml b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/configuration/elastic-site.xml
index 440c66d..bb6773c 100755
--- a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/configuration/elastic-site.xml
+++ b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/configuration/elastic-site.xml
@@ -54,7 +54,7 @@
     <property>
         <name>path_data</name>
         <value>"/opt/lmm/es_data"</value>
-        <description>Comma-separated list of directories where to store index data allocated for each node: "/mnt/first","/mnt/second".  Number of paths should relate to number of shards, and preferably should be on separate physical volumes.</description>
+        <description>Comma-separated list of directories where to store index data allocated for each node: [ "/mnt/first", "/mnt/second" ].  Number of paths should relate to number of shards, and preferably should be on separate physical volumes.</description>
     </property>
     <property>
         <name>http_cors_enabled</name>
diff --git a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_commands.py b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_commands.py
index 618d10a..277c3c9 100644
--- a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_commands.py
+++ b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_commands.py
@@ -18,20 +18,18 @@ limitations under the License.
 
 """
 
-import os
-
 from ambari_commons.os_check import OSCheck
-from resource_management.core.exceptions import ExecutionFailed
 from resource_management.core.exceptions import ComponentIsNotRunning
-from resource_management.core.resources.system import Execute
+from resource_management.core.exceptions import ExecutionFailed
+from resource_management.core.logger import Logger
+from resource_management.core.resources import User
 from resource_management.core.resources.system import Directory
+from resource_management.core.resources.system import Execute
 from resource_management.core.resources.system import File
 from resource_management.core.source import InlineTemplate
 from resource_management.core.source import Template
-from resource_management.core.resources import User
-from resource_management.core.logger import Logger
-from resource_management.libraries.functions import format as ambari_format
-from resource_management.libraries.functions.get_user_call_output import get_user_call_output
+from resource_management.libraries.functions.get_user_call_output import \
+  get_user_call_output
 
 
 def service_check(cmd, user, label):
diff --git a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_master.py b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_master.py
index 142ce4e..c478639 100755
--- a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_master.py
+++ b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_master.py
@@ -17,12 +17,13 @@ limitations under the License.
 
 """
 
-from resource_management.core import shell
+from resource_management.core.logger import Logger
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.script import Script
-from resource_management.core.logger import Logger
-from elastic_commands import service_check
+
 from elastic_commands import configure_master
+from elastic_commands import service_check
+
 
 class Elasticsearch(Script):
 
diff --git a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_slave.py b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_slave.py
index 2d559ff..c880f22 100755
--- a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_slave.py
+++ b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/elastic_slave.py
@@ -21,8 +21,9 @@ from resource_management.core.logger import Logger
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.script import Script
 
-from elastic_commands import service_check
 from elastic_commands import configure_slave
+from elastic_commands import service_check
+
 
 class Elasticsearch(Script):
 
diff --git a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/service_check.py b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/service_check.py
index 3ac7c83..0487115 100755
--- a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/service_check.py
+++ b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/ELASTICSEARCH/5.6.14/package/scripts/service_check.py
@@ -21,11 +21,11 @@ from __future__ import print_function
 
 import subprocess
 import sys
-import re
 
+from resource_management.core.logger import Logger
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.script import Script
-from resource_management.core.logger import Logger
+
 
 class ServiceCheck(Script):
 
diff --git a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/KIBANA/5.6.14/package/scripts/common.py b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/KIBANA/5.6.14/package/scripts/common.py
index 37100cd..6a32b84 100644
--- a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/KIBANA/5.6.14/package/scripts/common.py
+++ b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/KIBANA/5.6.14/package/scripts/common.py
@@ -17,10 +17,12 @@ limitations under the License.
 
 """
 
-from resource_management.core.logger import Logger
-from resource_management.libraries.functions.get_user_call_output import get_user_call_output
-from resource_management.core.exceptions import ExecutionFailed
 from resource_management.core.exceptions import ComponentIsNotRunning
+from resource_management.core.exceptions import ExecutionFailed
+from resource_management.core.logger import Logger
+from resource_management.libraries.functions.get_user_call_output import \
+  get_user_call_output
+
 
 def service_check(cmd, user, label):
     """
diff --git a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/KIBANA/5.6.14/package/scripts/kibana_master.py b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/KIBANA/5.6.14/package/scripts/kibana_master.py
index c013ea3..7924a99 100755
--- a/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/KIBANA/5.6.14/package/scripts/kibana_master.py
+++ b/metron-deployment/packaging/ambari/elasticsearch-mpack/src/main/resources/common-services/KIBANA/5.6.14/package/scripts/kibana_master.py
@@ -21,11 +21,11 @@ from resource_management.core.resources.system import Directory
 from resource_management.core.resources.system import Execute
 from resource_management.core.resources.system import File
 from resource_management.core.source import InlineTemplate
-from resource_management.libraries.functions.format import format as ambari_format
 from resource_management.libraries.script import Script
 
 from common import service_check
 
+
 class Kibana(Script):
 
     def install(self, env):
diff --git a/metron-deployment/packaging/ambari/metron-mpack/pom.xml b/metron-deployment/packaging/ambari/metron-mpack/pom.xml
index 2568bf2..35bf369 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/pom.xml
+++ b/metron-deployment/packaging/ambari/metron-mpack/pom.xml
@@ -20,13 +20,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.metron.packaging.mpacks</groupId>
     <artifactId>metron_mpack</artifactId>
-    <version>0.7.1.0</version>
+    <version>0.7.2.0</version>
     <name>Metron Ambari Management Pack</name>
 
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>metron-deployment</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
         <relativePath>../../..</relativePath>
     </parent>
 
@@ -110,27 +110,26 @@
                                 <resource>
                                     <directory>${basedir}/../../../../metron-platform/metron-enrichment/metron-enrichment-storm/src/main/config</directory>
                                     <includes>
-                                        <include>enrichment-splitjoin.properties.j2</include>
-                                        <include>enrichment-unified.properties.j2</include>
+                                        <include>enrichment.properties.j2</include>
                                     </includes>
                                     <filtering>false</filtering>
                                 </resource>
                                 <resource>
-                                    <directory>${basedir}/../../../../metron-platform/metron-elasticsearch/src/main/config</directory>
+                                    <directory>${basedir}/../../../../metron-platform/metron-elasticsearch/metron-elasticsearch-storm/src/main/config</directory>
                                     <includes>
                                         <include>elasticsearch.properties.j2</include>
                                     </includes>
                                     <filtering>false</filtering>
                                 </resource>
                                 <resource>
-                                    <directory>${basedir}/../../../../metron-platform/metron-indexing/src/main/config</directory>
+                                    <directory>${basedir}/../../../../metron-platform/metron-indexing/metron-indexing-storm/src/main/config</directory>
                                     <includes>
                                         <include>hdfs.properties.j2</include>
                                     </includes>
                                     <filtering>false</filtering>
                                 </resource>
                                 <resource>
-                                    <directory>${basedir}/../../../../metron-platform/metron-solr/src/main/config</directory>
+                                    <directory>${basedir}/../../../../metron-platform/metron-solr/metron-solr-storm/src/main/config</directory>
                                     <includes>
                                         <include>solr.properties.j2</include>
                                     </includes>
@@ -185,8 +184,7 @@
                         <fileset>
                             <directory>${basedir}/src/main/resources/common-services/METRON/CURRENT/package/templates</directory>
                             <includes>
-                                <include>enrichment-unified.properties.j2</include>
-                                <include>enrichment-splitjoin.properties.j2</include>
+                                <include>enrichment.properties.j2</include>
                                 <include>elasticsearch.properties.j2</include>
                                 <include>hdfs.properties.j2</include>
                             </includes>
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-enrichment-env.xml b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-enrichment-env.xml
index 1fd4702..9fe29e3 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-enrichment-env.xml
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-enrichment-env.xml
@@ -193,88 +193,6 @@
       <empty-value-valid>true</empty-value-valid>
     </value-attributes>
   </property>
-  <property>
-    <name>enrichment_topology</name>
-    <description>Which Enrichment topology to execute. Note: Split-Join is deprecated in favor of the Unified topology.</description>
-    <value>Unified</value>
-    <display-name>Enrichment Topology</display-name>
-    <value-attributes>
-      <type>value-list</type>
-      <entries>
-        <entry>
-          <value>Unified</value>
-        </entry>
-        <entry>
-          <value>Split-Join</value>
-        </entry>
-      </entries>
-      <selection-cardinality>1</selection-cardinality>
-    </value-attributes>
-  </property>
-
-  <!--
-    split-join topology parameters
-  -->
-  <property>
-    <name>enrichment_join_cache_size</name>
-    <description>Enrichment join bolt max cache size for the Split Join Enrichment Topology</description>
-    <value>100000</value>
-    <display-name>Enrichment Join Max Cache Size</display-name>
-  </property>
-  <property>
-    <name>threatintel_join_cache_size</name>
-    <description>Threat Intel join bolt max cache size for the Split Join Enrichment Topology</description>
-    <value>100000</value>
-    <display-name>Threat Intel Join Max Cache Size</display-name>
-  </property>
-  <property>
-    <name>enrichment_kafka_spout_parallelism</name>
-    <description>Kafka spout parallelism for the Split Join Enrichment Topology</description>
-    <value>1</value>
-    <display-name>Enrichment Spout Parallelism</display-name>
-  </property>
-  <property>
-    <name>enrichment_split_parallelism</name>
-    <description>Enrichment split bolt parallelism for the Split Join Enrichment Topology</description>
-    <value>1</value>
-    <display-name>Enrichment Split Parallelism</display-name>
-  </property>
-  <property>
-    <name>enrichment_stellar_parallelism</name>
-    <description>Stellar enrichment bolt parallelism for the Split Join Enrichment Topology</description>
-    <value>1</value>
-    <display-name>Stellar Enrichment Parallelism</display-name>
-  </property>
-  <property>
-    <name>enrichment_join_parallelism</name>
-    <description>Enrichment join bolt parallelism for the Split Join Enrichment Topology</description>
-    <value>1</value>
-    <display-name>Enrichment Join Parallelism</display-name>
-  </property>
-  <property>
-    <name>threat_intel_split_parallelism</name>
-    <description>Threat Intel split bolt parallelism for the Split Join Enrichment Topology</description>
-    <value>1</value>
-    <display-name>Threat Intel Split Parallelism</display-name>
-  </property>
-  <property>
-    <name>threat_intel_stellar_parallelism</name>
-    <description>Threat Intel stellar bolt parallelism for the Split Join Enrichment Topology</description>
-    <value>1</value>
-    <display-name>Threat Intel Stellar Parallelism</display-name>
-  </property>
-  <property>
-    <name>threat_intel_join_parallelism</name>
-    <description>Threat Intel join bolt parallelism for the Split Join Enrichment Topology</description>
-    <value>1</value>
-    <display-name>Threat Intel Join Parallelism</display-name>
-  </property>
-  <property>
-    <name>kafka_writer_parallelism</name>
-    <description>Kafka writer parallelism for the Split Join Enrichment Topology</description>
-    <value>1</value>
-    <display-name>Enrichment Kafka Writer Parallelism</display-name>
-  </property>
 
   <!--
     unified topology parameters
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-parsers-env.xml b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-parsers-env.xml
index 03a2594..85efec5 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-parsers-env.xml
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-parsers-env.xml
@@ -21,7 +21,7 @@
     <property>
         <name>parsers</name>
         <value>bro,snort,yaf</value>
-        <description>Metron parsers to deploy. You can also specify an aggregated parser list by grouping them with double quotes. For example: "parserA,parserB",parserC,parserD</description>
+        <description>Metron parsers to deploy. You can also specify an aggregated parser list by grouping them with double quotes. For example: "parserA,parserB",parserC,parserD. Parser names with hyphens need to be wrapped in single quotes, e.g. 'my-hyphenated-parser-name'</description>
         <display-name>Metron Parsers</display-name>
     </property>
     <property>
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
index 68b1140..145b64e 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/configuration/metron-rest-env.xml
@@ -181,5 +181,16 @@
         <description>The field name where the threat triage score can be found in the search indices. This setting primarily affects the Alerts UI.</description>
         <value>threat:triage:score</value>
     </property>
-
+    <property>
+        <name>storm_status_cache_max_size</name>
+        <value>10000</value>
+        <description>The maximum size for the cache that fronts calls to the Storm API for topology status.</description>
+        <display-name>Storm Status Cache Max Size</display-name>
+    </property>
+    <property>
+        <name>storm_status_cache_timeout_seconds</name>
+        <value>5</value>
+        <description>Duration in seconds for cache entries to timeout. Note that the higher the value, the more stale the returned value will be.</description>
+        <display-name>Storm Status Cache Timeout Seconds</display-name>
+    </property>
 </configuration>
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
index ddc56cf..473c860 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
@@ -375,6 +375,7 @@
                 <config-type>metron-security-env</config-type>
                 <config-type>metron-rest-env</config-type>
                 <config-type>metron-management-ui-env</config-type>
+                <config-type>metron-alerts-ui-env</config-type>
             </configuration-dependencies>
         </component>
         <component>
@@ -401,6 +402,7 @@
           <configuration-dependencies>
             <config-type>metron-security-env</config-type>
             <config-type>metron-rest-env</config-type>
+            <config-type>metron-management-ui-env</config-type>
             <config-type>metron-alerts-ui-env</config-type>
           </configuration-dependencies>
         </component>
@@ -471,13 +473,19 @@
               <name>metron-profiler-repl</name>
             </package>
             <package>
-              <name>metron-indexing</name>
+              <name>metron-indexing-common</name>
             </package>
             <package>
-              <name>metron-elasticsearch</name>
+              <name>metron-indexing-storm</name>
             </package>
             <package>
-              <name>metron-solr</name>
+              <name>metron-elasticsearch-storm</name>
+            </package>
+            <package>
+              <name>metron-solr-common</name>
+            </package>
+            <package>
+              <name>metron-solr-storm</name>
             </package>
             <package>
               <name>metron-pcap</name>
@@ -500,6 +508,9 @@
             <package>
               <name>metron-performance</name>
             </package>
+            <package>
+              <name>stellar-common</name>
+            </package>
           </packages>
         </osSpecific>
         <osSpecific>
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py
index f837043..edec983 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_commands.py
@@ -18,10 +18,10 @@ limitations under the License.
 
 """
 
+import metron_service
 from resource_management.core.logger import Logger
-from resource_management.core.resources.system import Execute, File
+from resource_management.core.resources.system import Execute
 
-import metron_service
 
 # Wrap major operations and functionality in this class
 class AlertsUICommands:
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
index 7cc2c31..c620385 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/alerts_ui_master.py
@@ -17,20 +17,12 @@ limitations under the License.
 
 """
 
-from resource_management.core.exceptions import ComponentIsNotRunning
-from resource_management.core.exceptions import ExecutionFailed
+from alerts_ui_commands import AlertsUICommands
 from resource_management.core.exceptions import Fail
-from resource_management.core.resources.system import Directory
 from resource_management.core.resources.system import File
 from resource_management.core.source import Template
 from resource_management.libraries.functions.format import format
-from resource_management.libraries.functions.get_user_call_output import get_user_call_output
 from resource_management.libraries.script import Script
-from resource_management.core.resources.system import Execute
-
-from resource_management.core.logger import Logger
-
-from alerts_ui_commands import AlertsUICommands
 
 
 class AlertsUIMaster(Script):
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/dashboard/dashboardindex.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/dashboard/dashboardindex.py
index f0903ac..4de089e 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/dashboard/dashboardindex.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/dashboard/dashboardindex.py
@@ -16,12 +16,14 @@
 #  limitations under the License.
 #
 
-from elasticsearch import Elasticsearch
-from elasticsearch.helpers import bulk
+import argparse
+import os
+import os.path
+
 import cPickle as pickle
-import argparse, sys, os.path
 import errno
-import os
+from elasticsearch import Elasticsearch
+from elasticsearch.helpers import bulk
 
 
 class DashboardIndex(object):
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/enrichment_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/enrichment_commands.py
index 5d82c8c..487f166 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/enrichment_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/enrichment_commands.py
@@ -16,15 +16,15 @@ limitations under the License.
 """
 
 import os
+
 import time
 
+import metron_service
+from metron_security import kinit
 from resource_management.core.exceptions import Fail
 from resource_management.core.logger import Logger
 from resource_management.core.resources.system import Execute
 
-import metron_service
-from metron_security import kinit
-
 
 # Wrap major operations and functionality in this class
 class EnrichmentCommands:
@@ -146,20 +146,9 @@ class EnrichmentCommands:
 
     def start_enrichment_topology(self, env):
         Logger.info("Starting Metron enrichment topology: {0}".format(self.__enrichment_topology))
-
         if not self.is_topology_active(env):
-
-            # which enrichment topology needs started?
-            if self.__params.enrichment_topology == "Unified":
-                topology_flux = "{0}/flux/enrichment/remote-unified.yaml".format(self.__params.metron_home)
-                topology_props = "{0}/config/enrichment-unified.properties".format(self.__params.metron_home)
-            elif self.__params.enrichment_topology == "Split-Join":
-                topology_flux = "{0}/flux/enrichment/remote-splitjoin.yaml".format(self.__params.metron_home)
-                topology_props = "{0}/config/enrichment-splitjoin.properties".format(self.__params.metron_home)
-            else:
-                raise Fail("Unexpected enrichment topology; name=" + self.__params.enrichment_topology)
-
-            # start the topology
+            topology_flux = "{0}/flux/enrichment/remote.yaml".format(self.__params.metron_home)
+            topology_props = "{0}/config/enrichment.properties".format(self.__params.metron_home)
             start_cmd_template = """{0}/bin/start_enrichment_topology.sh --remote {1} --filter {2}"""
             Logger.info('Starting ' + self.__enrichment_topology)
             start_cmd = start_cmd_template.format(self.__params.metron_home, topology_flux, topology_props)
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/enrichment_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/enrichment_master.py
index ff89b6b..15d08e1 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/enrichment_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/enrichment_master.py
@@ -14,17 +14,17 @@ See the License for the specific language governing permissions and
 limitations under the License.
 """
 
+import metron_security
+import metron_service
+from enrichment_commands import EnrichmentCommands
+from metron_security import storm_security_setup
 from resource_management.core.exceptions import ComponentIsNotRunning
+from resource_management.core.logger import Logger
 from resource_management.core.resources.system import File
 from resource_management.core.source import Template
 from resource_management.libraries.functions.format import format
 from resource_management.libraries.script import Script
-from resource_management.core.logger import Logger
 
-from enrichment_commands import EnrichmentCommands
-from metron_security import storm_security_setup
-import metron_service
-import metron_security
 
 class Enrichment(Script):
 
@@ -38,16 +38,11 @@ class Enrichment(Script):
         env.set_params(params)
 
         Logger.info("Running enrichment configure")
-        File(format("{metron_config_path}/enrichment-splitjoin.properties"),
-             content=Template("enrichment-splitjoin.properties.j2"),
+        File(format("{metron_config_path}/enrichment.properties"),
+             content=Template("enrichment.properties.j2"),
              owner=params.metron_user,
              group=params.metron_group)
 
-        File(format("{metron_config_path}/enrichment-unified.properties"),
-            content=Template("enrichment-unified.properties.j2"),
-            owner=params.metron_user,
-            group=params.metron_group)
-
         if not metron_service.is_zk_configured(params):
             metron_service.init_zk_config(params)
             metron_service.set_zk_configured(params)
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_commands.py
index d557da5..87397f4 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_commands.py
@@ -17,18 +17,19 @@ limitations under the License.
 
 import os
 import re
-import requests
+
 import time
 
-from datetime import datetime
+import metron_security
+import metron_service
 from resource_management.core.exceptions import Fail
 from resource_management.core.logger import Logger
-from resource_management.core.resources.system import Execute, File
+from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions import format as ambari_format
 from resource_management.libraries.functions.format import format
+from resource_management.libraries.functions.get_user_call_output import \
+    get_user_call_output
 
-import metron_service
-import metron_security
 
 # Wrap major operations and functionality in this class
 class IndexingCommands:
@@ -205,9 +206,9 @@ class IndexingCommands:
         Logger.info("Installing Solr schemas")
         if self.__params.security_enabled:
             metron_security.kinit(self.__params.kinit_path_local,
-                                  self.__params.solr_keytab_path,
-                                  self.__params.solr_principal_name,
-                                  self.__params.solr_user)
+                                  self.__params.metron_keytab_path,
+                                  self.__params.metron_principal_name,
+                                  execute_user=self.__params.metron_user)
 
         try:
             commands = IndexingCommands(params)
@@ -221,7 +222,7 @@ class IndexingCommands:
 
                 Execute(
                 cmd.format(params.metron_home, collection_name),
-                user=self.__params.solr_user)
+                user=self.__params.metron_user)
             return True
 
         except Exception as e:
@@ -236,9 +237,9 @@ class IndexingCommands:
         Logger.info("Deleting Solr schemas")
         if self.__params.security_enabled:
             metron_security.kinit(self.__params.kinit_path_local,
-                                  self.__params.solr_keytab_path,
-                                  self.__params.solr_principal_name,
-                                  self.__params.solr_user)
+                                  self.__params.metron_keytab_path,
+                                  self.__params.metron_principal_name,
+                                  execute_user=self.__params.metron_user)
 
         commands = IndexingCommands(params)
         for collection_name in commands.get_solr_schemas():
@@ -251,7 +252,7 @@ class IndexingCommands:
 
             Execute(
                 cmd.format(params.metron_home, collection_name),
-                user=self.__params.solr_user)
+                user=self.__params.metron_user)
 
     def start_batch_indexing_topology(self, env):
         Logger.info('Starting ' + self.__batch_indexing_topology)
@@ -435,47 +436,43 @@ class IndexingCommands:
 
         Logger.info("Indexing service check completed successfully")
 
-    def get_zeppelin_auth_details(self, ses, zeppelin_server_url, env):
+    def get_zeppelin_auth_details(self, zeppelin_server_url, env):
         """
-        With Ambari 2.5+, Zeppelin server is enabled to work with Shiro authentication, which requires user/password
-        for authentication (see https://zeppelin.apache.org/docs/0.6.0/security/shiroauthentication.html for details).
+        With Ambari 2.5+, Zeppelin server is enabled to work with Shiro authentication by default, which requires
+        user/password for authentication (see https://zeppelin.apache.org/docs/0.6.0/security/shiroauthentication.html
+        for details).
+
+        This method uses the Shiro authentication credentials on the Zeppelin server to authenticate and returns the
+        cookie information to be used for importing Zeppelin notebooks.
 
-        This method checks if Shiro authentication is enabled on the Zeppelin server. And if enabled, it returns the
-        session connection details to be used for importing Zeppelin notebooks.
-        :param ses: Session handle
         :param zeppelin_server_url: Zeppelin Server URL
-        :return: ses
+        :return: session_id - the cookie handle to be used for subsequent interaction
         """
         from params import params
         env.set_params(params)
 
-        # Check if authentication is enabled on the Zeppelin server
+        session_id = None
         try:
-            ses.get(ambari_format('http://{zeppelin_server_url}/api/login'))
-
-            # Establish connection if authentication is enabled
-            try:
-                Logger.info("Shiro authentication is found to be enabled on the Zeppelin server.")
-                # Read the Shiro admin user credentials from Zeppelin config in Ambari
-                seen_users = False
-                username = None
-                password = None
-                if re.search(r'^\[users\]', params.zeppelin_shiro_ini_content, re.MULTILINE):
-                    seen_users = True
-                    tokens = re.search(r'^admin\ =.*', params.zeppelin_shiro_ini_content, re.MULTILINE).group()
-                    userpassword = tokens.split(',')[0].strip()
-                    username = userpassword.split('=')[0].strip()
-                    password = userpassword.split('=')[1].strip()
-                else:
-                    Logger.error("ERROR: Admin credentials config was not found in shiro.ini. Notebook import may fail.")
-
-                zeppelin_payload = {'userName': username, 'password' : password}
-                ses.post(ambari_format('http://{zeppelin_server_url}/api/login'), data=zeppelin_payload)
-            except:
-                pass
-
-        # If authentication is not enabled, fall back to default method of imporing notebooks
-        except requests.exceptions.RequestException:
-            ses.get(ambari_format('http://{zeppelin_server_url}/api/notebook'))
-
-        return ses
+            Logger.info("Shiro authentication is found to be enabled on the Zeppelin server.")
+            # Read the Shiro admin user credentials from Zeppelin config in Ambari
+            username = None
+            password = None
+            if re.search(r'^\[users\]', params.zeppelin_shiro_ini_content, re.MULTILINE):
+                tokens = re.search(r'^admin\ =.*', params.zeppelin_shiro_ini_content, re.MULTILINE).group()
+                userpassword = tokens.split(',')[0].strip()
+                username = userpassword.split('=')[0].strip()
+                password = userpassword.split('=')[1].strip()
+            else:
+                Logger.error("ERROR: Admin credentials config was not found in shiro.ini. Notebook import may fail.")
+
+            zeppelin_creds = "userName=%s&password=%s" % (username, password)
+            cmd = 'curl -i --data \'{0}\' -X POST \"http://{1}/api/login\" | grep JSESSIONID | grep -v deleteMe | tail -1'
+            cmd = cmd.format(zeppelin_creds, params.zeppelin_server_url)
+            return_code, stdout, stderr = get_user_call_output(cmd, user=params.metron_user)
+            session_id = stdout.replace("Set-Cookie: ",'').strip()
+
+        except Exception as e1:
+            msg = "Unable to get Shiro authentication details: Error={0}"
+            Logger.error(msg.format(e1))
+
+        return session_id
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_master.py
index d058745..57423ca 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/indexing_master.py
@@ -14,25 +14,25 @@ See the License for the specific language governing permissions and
 limitations under the License.
 """
 
-import errno
 import os
-import requests
 
-from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
+import errno
 
+import metron_service
+from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
+from indexing_commands import IndexingCommands
+from metron_security import storm_security_setup
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.logger import Logger
 from resource_management.core.resources.system import Execute
 from resource_management.core.resources.system import File
-from resource_management.core.source import Template
-from resource_management.libraries.functions.format import format
 from resource_management.core.source import StaticFile
+from resource_management.core.source import Template
 from resource_management.libraries.functions import format as ambari_format
+from resource_management.libraries.functions.format import format
 from resource_management.libraries.script import Script
-
-from metron_security import storm_security_setup
-import metron_service
-from indexing_commands import IndexingCommands
+from resource_management.libraries.functions.get_user_call_output import \
+    get_user_call_output
 
 
 class Indexing(Script):
@@ -229,16 +229,18 @@ class Indexing(Script):
         Logger.info(ambari_format('Searching for Zeppelin Notebooks in {metron_config_zeppelin_path}'))
 
         # Check if authentication is configured on Zeppelin server, and fetch details if enabled.
-        ses = requests.session()
-        ses = commands.get_zeppelin_auth_details(ses, params.zeppelin_server_url, env)
+        session_id = commands.get_zeppelin_auth_details(params.zeppelin_server_url, env)
         for dirName, subdirList, files in os.walk(params.metron_config_zeppelin_path):
             for fileName in files:
                 if fileName.endswith(".json"):
                     Logger.info("Importing notebook: " + fileName)
-                    zeppelin_import_url = ambari_format('http://{zeppelin_server_url}/api/notebook/import')
-                    zeppelin_notebook = {'file' : open(os.path.join(dirName, fileName), 'rb')}
-                    res = ses.post(zeppelin_import_url, files=zeppelin_notebook)
-                    Logger.info("Result: " + res.text)
+                    zeppelin_notebook = os.path.join(dirName, fileName)
+                    zeppelin_import_url = 'curl -i -b \"{0}\" http://{1}/api/notebook/import -d @\'{2}\''
+                    zeppelin_import_url = zeppelin_import_url.format(session_id, params.zeppelin_server_url, zeppelin_notebook)
+                    return_code, import_result, stderr = get_user_call_output(zeppelin_import_url, user=params.metron_user)
+                    Logger.info("Status of importing notebook: " + import_result)
+                    if return_code != 0:
+                        Logger.error("Error importing notebook: " + fileName + " Error Message: " + stderr)
 
 if __name__ == "__main__":
     Indexing().execute()
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py
index 4e81df6..82a2dd2 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_commands.py
@@ -18,12 +18,10 @@ limitations under the License.
 
 """
 
+import metron_service
 from resource_management.core.logger import Logger
-from resource_management.core.resources.system import Execute, File
-from resource_management.core.exceptions import ExecutionFailed
-from resource_management.libraries.functions.get_user_call_output import get_user_call_output
+from resource_management.core.resources.system import Execute
 
-import metron_service
 
 # Wrap major operations and functionality in this class
 class ManagementUICommands:
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py
index c50b09c..c41bf75 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/management_ui_master.py
@@ -17,16 +17,13 @@ limitations under the License.
 
 """
 
+from management_ui_commands import ManagementUICommands
+from resource_management.core.exceptions import Fail
 from resource_management.core.resources.system import Directory
 from resource_management.core.resources.system import File
 from resource_management.core.source import Template
 from resource_management.libraries.functions.format import format
 from resource_management.libraries.script import Script
-from resource_management.core.resources.system import Execute
-from resource_management.core.logger import Logger
-from resource_management.core.exceptions import Fail
-
-from management_ui_commands import ManagementUICommands
 
 
 class ManagementUIMaster(Script):
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_client.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_client.py
index 97083c6..6f9f9a9 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_client.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_client.py
@@ -17,15 +17,14 @@ limitations under the License.
 
 """
 
-from resource_management.libraries.script.script import Script
-from resource_management.core.exceptions import ClientComponentHasNoStatus
-from resource_management.core.exceptions import Fail
-from resource_management.core.resources.system import Directory
 from metron_security import storm_security_setup
 from metron_service import install_metron_knox
-from metron_service import metron_knox_topology_setup
 from metron_service import is_metron_knox_installed
-from metron_service import set_metron_knox_installed
+from metron_service import metron_knox_topology_setup
+from resource_management.core.exceptions import ClientComponentHasNoStatus
+from resource_management.core.exceptions import Fail
+from resource_management.libraries.script.script import Script
+
 
 class MetronClient(Script):
 
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_security.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_security.py
index d9486e8..635dbc4 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_security.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_security.py
@@ -15,12 +15,13 @@ limitations under the License.
 """
 
 import os.path
-from resource_management.core.source import Template
-from resource_management.core.source import InlineTemplate
-from resource_management.core.resources.system import Directory, File
+
 from resource_management.core import global_lock
 from resource_management.core.logger import Logger
+from resource_management.core.resources.system import Directory, File
 from resource_management.core.resources.system import Execute
+from resource_management.core.source import InlineTemplate
+from resource_management.core.source import Template
 from resource_management.libraries.functions import format as ambari_format
 
 
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py
index d7c505e..9703d1f 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/metron_service.py
@@ -16,22 +16,22 @@ limitations under the License.
 
 import json
 import os
-import subprocess
 
 from datetime import datetime
-from resource_management.core.logger import Logger
+
+from metron_security import kinit
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.exceptions import Fail
+from resource_management.core.logger import Logger
 from resource_management.core.resources.system import Directory, File
 from resource_management.core.resources.system import Execute
-from resource_management.core.source import Template
 from resource_management.core.source import InlineTemplate
+from resource_management.core.source import Template
 from resource_management.libraries.functions import format as ambari_format
-from resource_management.libraries.functions.get_user_call_output import get_user_call_output
+from resource_management.libraries.functions.get_user_call_output import \
+  get_user_call_output
 from resource_management.libraries.script import Script
 
-from metron_security import kinit
-
 
 def is_zk_configured(params):
   return os.path.isfile(params.zk_configured_flag_file)
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params.py
index 953435d..c39c76e 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params.py
@@ -22,7 +22,7 @@ from resource_management.libraries.functions.default import default
 from resource_management.libraries.functions.expect import expect
 
 if OSCheck.is_windows_family():
-    from params_windows import *
+  pass
 else:
     from params_linux import *
 
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
index 64105e3..c4a6a7b 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/params_linux.py
@@ -21,19 +21,16 @@ limitations under the License.
 import functools
 import os
 
+import status_params
 from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import format
 from resource_management.libraries.functions import get_kinit_path
 from resource_management.libraries.functions import stack_select
 from resource_management.libraries.functions.default import default
-from resource_management.libraries.functions.get_not_managed_resources import get_not_managed_resources
+from resource_management.libraries.functions.get_not_managed_resources import \
+  get_not_managed_resources
 from resource_management.libraries.resources.hdfs_resource import HdfsResource
 from resource_management.libraries.script import Script
-from resource_management.libraries.functions.version import format_stack_version
-from resource_management.libraries.functions.stack_features import check_stack_feature
-from resource_management.libraries.functions import StackFeature
-
-import status_params
 
 # server configurations
 config = Script.get_config()
@@ -64,6 +61,8 @@ metron_alerts_ui_host = status_params.metron_alerts_ui_host
 metron_alerts_ui_port = status_params.metron_alerts_ui_port
 metron_alerts_ui_path = metron_home + '/web/alerts-ui/'
 metron_jvm_flags = config['configurations']['metron-rest-env']['metron_jvm_flags']
+storm_status_cache_max_size = config['configurations']['metron-rest-env']['storm_status_cache_max_size']
+storm_status_cache_timeout_seconds = config['configurations']['metron-rest-env']['storm_status_cache_timeout_seconds']
 
 # Construct the profiles as a temp variable first. Only the first time it's set will carry through
 metron_spring_profiles_active = config['configurations']['metron-rest-env']['metron_spring_profiles_active']
@@ -343,18 +342,6 @@ enrichment_topology_worker_childopts += config['configurations']['metron-enrichm
 enrichment_topology_max_spout_pending = config['configurations']['metron-enrichment-env']['enrichment_topology_max_spout_pending']
 enrichment_topology = config['configurations']['metron-enrichment-env']['enrichment_topology']
 
-# Enrichment - Split Join topology
-enrichment_join_cache_size = config['configurations']['metron-enrichment-env']['enrichment_join_cache_size']
-threatintel_join_cache_size = config['configurations']['metron-enrichment-env']['threatintel_join_cache_size']
-enrichment_kafka_spout_parallelism = config['configurations']['metron-enrichment-env']['enrichment_kafka_spout_parallelism']
-enrichment_split_parallelism = config['configurations']['metron-enrichment-env']['enrichment_split_parallelism']
-enrichment_stellar_parallelism = config['configurations']['metron-enrichment-env']['enrichment_stellar_parallelism']
-enrichment_join_parallelism = config['configurations']['metron-enrichment-env']['enrichment_join_parallelism']
-threat_intel_split_parallelism = config['configurations']['metron-enrichment-env']['threat_intel_split_parallelism']
-threat_intel_stellar_parallelism = config['configurations']['metron-enrichment-env']['threat_intel_stellar_parallelism']
-threat_intel_join_parallelism = config['configurations']['metron-enrichment-env']['threat_intel_join_parallelism']
-kafka_writer_parallelism = config['configurations']['metron-enrichment-env']['kafka_writer_parallelism']
-
 # Enrichment - Unified topology
 unified_kafka_spout_parallelism = config['configurations']['metron-enrichment-env']['unified_kafka_spout_parallelism']
 unified_enrichment_parallelism = config['configurations']['metron-enrichment-env']['unified_enrichment_parallelism']
@@ -465,6 +452,7 @@ knox_group = config['configurations']['knox-env']['knox_group']
 metron_knox_root_path = '/gateway/metron'
 metron_rest_path = '/api/v1'
 metron_alerts_ui_login_path = '/login'
+metron_alerts_ui_context_menu_config_url = '/assets/context-menu.conf.json'
 metron_management_ui_login_path = '/login'
 metron_knox_enabled = config['configurations']['metron-security-env']['metron.knox.enabled']
 metron_knox_sso_pubkey = config['configurations']['metron-security-env']['metron.knox.sso.pubkey']
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/status_params.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/status_params.py
index fc5daac..aec0afe 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/status_params.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/params/status_params.py
@@ -18,10 +18,10 @@ limitations under the License.
 
 """
 
-from resource_management.libraries.script import Script
-from resource_management.libraries.functions import get_kinit_path
 from resource_management.libraries.functions import default, format
+from resource_management.libraries.functions import get_kinit_path
 from resource_management.libraries.functions.version import format_stack_version
+from resource_management.libraries.script import Script
 
 config = Script.get_config()
 
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_commands.py
index a687085..2bcbefa 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_commands.py
@@ -22,15 +22,14 @@ import os
 import re
 import shlex
 import subprocess
+
 import time
 
-from datetime import datetime
+import metron_security
+import metron_service
 from resource_management.core.exceptions import Fail
 from resource_management.core.logger import Logger
-from resource_management.core.resources.system import Execute, File
-
-import metron_service
-import metron_security
+from resource_management.core.resources.system import Execute
 
 
 # Wrap major operations and functionality in this class
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_master.py
index d5b333a..f76828f 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/parser_master.py
@@ -17,14 +17,13 @@ limitations under the License.
 
 """
 
+import metron_service
+from metron_security import storm_security_setup
+from parser_commands import ParserCommands
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.logger import Logger
 from resource_management.libraries.script import Script
 
-from metron_security import storm_security_setup
-import metron_service
-from parser_commands import ParserCommands
-
 
 class ParserMaster(Script):
     def get_component_name(self):
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/pcap_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/pcap_commands.py
index 2190916..00f3b3c 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/pcap_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/pcap_commands.py
@@ -19,17 +19,14 @@ limitations under the License.
 """
 
 import os
-import re
-import subprocess
+
 import time
 
-from datetime import datetime
+import metron_security
+import metron_service
 from resource_management.core.exceptions import Fail
 from resource_management.core.logger import Logger
-from resource_management.core.resources.system import Execute, File
-
-import metron_service
-import metron_security
+from resource_management.core.resources.system import Execute
 
 
 # Wrap major operations and functionality in this class
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/pcap_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/pcap_master.py
index 109c035..ead5b57 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/pcap_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/pcap_master.py
@@ -14,22 +14,17 @@ See the License for the specific language governing permissions and
 limitations under the License.
 """
 
-import os
+import metron_security
+import metron_service
+from metron_security import storm_security_setup
+from pcap_commands import PcapCommands
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.logger import Logger
-from resource_management.core.resources.system import Execute
 from resource_management.core.resources.system import File
 from resource_management.core.source import Template
 from resource_management.libraries.functions.format import format
-from resource_management.core.source import StaticFile
-from resource_management.libraries.functions import format as ambari_format
 from resource_management.libraries.script import Script
 
-from metron_security import storm_security_setup
-import metron_service
-import metron_security
-from pcap_commands import PcapCommands
-
 
 class Pcap(Script):
     __configured = False
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/profiler_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/profiler_commands.py
index b026a30..8f13e62 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/profiler_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/profiler_commands.py
@@ -16,15 +16,15 @@ limitations under the License.
 """
 
 import os
+
 import time
 
+import metron_security
+import metron_service
 from resource_management.core.exceptions import Fail
 from resource_management.core.logger import Logger
 from resource_management.core.resources.system import Execute
 
-import metron_security
-import metron_service
-
 
 # Wrap major operations and functionality in this class
 class ProfilerCommands:
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/profiler_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/profiler_master.py
index ddfadd2..6dced58 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/profiler_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/profiler_master.py
@@ -14,22 +14,17 @@ See the License for the specific language governing permissions and
 limitations under the License.
 """
 
-import os
+import metron_security
+import metron_service
+from metron_security import storm_security_setup
+from profiler_commands import ProfilerCommands
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.logger import Logger
-from resource_management.core.resources.system import Execute
 from resource_management.core.resources.system import File
 from resource_management.core.source import Template
 from resource_management.libraries.functions.format import format
-from resource_management.core.source import StaticFile
-from resource_management.libraries.functions import format as ambari_format
 from resource_management.libraries.script import Script
 
-from metron_security import storm_security_setup
-import metron_service
-import metron_security
-from profiler_commands import ProfilerCommands
-
 
 class Profiler(Script):
     __configured = False
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py
index bab9129..df8a7fc 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_commands.py
@@ -19,16 +19,14 @@ limitations under the License.
 """
 import os
 
-from datetime import datetime
+import metron_service
+from metron_security import kinit
 from resource_management.core.logger import Logger
 from resource_management.core.resources.system import Directory, Execute, File
 from resource_management.libraries.functions import get_user_call_output
 from resource_management.libraries.functions.format import format
 from resource_management.libraries.functions.show_logs import show_logs
 
-import metron_service
-from metron_security import kinit
-
 
 # Wrap major operations and functionality in this class
 class RestCommands:
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py
index 90f4ac5..4370bd1 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/rest_master.py
@@ -17,19 +17,19 @@ limitations under the License.
 
 """
 
+import metron_service
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.exceptions import ExecutionFailed
 from resource_management.core.exceptions import Fail
-from resource_management.core.resources.system import Directory
 from resource_management.core.resources.system import File
 from resource_management.core.source import Template
 from resource_management.libraries.functions.format import format
-from resource_management.libraries.functions.get_user_call_output import get_user_call_output
+from resource_management.libraries.functions.get_user_call_output import \
+  get_user_call_output
 from resource_management.libraries.script import Script
-
-import metron_service
 from rest_commands import RestCommands
 
+
 class RestMaster(Script):
 
     def install(self, env):
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py
index 2007f36..f1a017d 100755
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/scripts/service_check.py
@@ -19,16 +19,16 @@ limitations under the License.
 """
 from __future__ import print_function
 
-from resource_management.core.logger import Logger
-from resource_management.libraries.script import Script
-
-from parser_commands import ParserCommands
+from alerts_ui_commands import AlertsUICommands
 from enrichment_commands import EnrichmentCommands
 from indexing_commands import IndexingCommands
-from profiler_commands import ProfilerCommands
-from rest_commands import RestCommands
 from management_ui_commands import ManagementUICommands
-from alerts_ui_commands import AlertsUICommands
+from parser_commands import ParserCommands
+from profiler_commands import ProfilerCommands
+from resource_management.core.logger import Logger
+from resource_management.libraries.script import Script
+from rest_master import RestCommands
+
 
 class ServiceCheck(Script):
 
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/alerts-ui-app-config.json.j2 b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/alerts-ui-app-config.json.j2
index edbc1b6..192e830 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/alerts-ui-app-config.json.j2
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/alerts-ui-app-config.json.j2
@@ -1,4 +1,7 @@
 {
   "apiRoot": "{{metron_rest_path}}",
-  "loginPath": "{{metron_alerts_ui_login_path}}"
+  "loginPath": "{{metron_alerts_ui_login_path}}",
+  "contextMenuConfigURL": "{{metron_alerts_ui_context_menu_config_url}}",
+  "managementUIHost": "{{metron_management_ui_host}}",
+  "managementUIPort": "{{metron_management_ui_port}}"
 }
\ No newline at end of file
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/management-ui-app-config.json.j2 b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/management-ui-app-config.json.j2
index 12c3168..c03a35f 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/management-ui-app-config.json.j2
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/management-ui-app-config.json.j2
@@ -1,4 +1,6 @@
 {
   "apiRoot": "{{metron_rest_path}}",
-  "loginPath": "{{metron_management_ui_login_path}}"
+  "loginPath": "{{metron_management_ui_login_path}}",
+  "alertsUIHost": "{{metron_alerts_ui_host}}",
+  "alertsUIPort": "{{metron_alerts_ui_port}}"
 }
\ No newline at end of file
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2 b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
index 936118c..5c43bbd 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2
@@ -66,3 +66,6 @@ PCAP_FINAL_OUTPUT_PATH="{{pcap_final_output_path}}"
 PCAP_PAGE_SIZE="{{pcap_page_size}}"
 PCAP_YARN_QUEUE="{{pcap_yarn_queue}}"
 PCAP_FINALIZER_THREADPOOL_SIZE="{{pcap_finalizer_threadpool_size}}"
+STORM_STATUS_CACHE_MAX_SIZE="{{storm_status_cache_max_size}}"
+STORM_STATUS_CACHE_TIMEOUT_SECONDS="{{storm_status_cache_timeout_seconds}}"
+
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py
index 36cec7c..6584a37 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/service_advisor.py
@@ -17,12 +17,10 @@ See the License for the specific language governing permissions and
 limitations under the License.
 """
 import os
-import fnmatch
-import imp
-import socket
-import sys
 import traceback
 
+import imp
+
 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
 STACKS_DIR = os.path.join(SCRIPT_DIR, '../../../../../stacks/')
 PARENT_FILE = os.path.join(STACKS_DIR, 'service_advisor.py')
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/themes/metron_theme.json b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/themes/metron_theme.json
index 69084e3..41fd044 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/themes/metron_theme.json
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/themes/metron_theme.json
@@ -65,7 +65,7 @@
             "display-name": "Enrichment",
             "layout": {
               "tab-columns": "1",
-              "tab-rows": "5",
+              "tab-rows": "4",
               "sections": [
                 {
                   "name": "section-enrichment-adapters",
@@ -135,26 +135,7 @@
                   "subsections": [
                     {
                       "name": "subsection-enrichment-unified",
-                      "display-name": "Unified Topology",
-                      "row-index": "0",
-                      "column-index": "0",
-                      "row-span": "1",
-                      "column-span": "1"
-                    }
-                  ]
-                },
-                {
-                  "name": "section-enrichment-splitjoin",
-                  "row-index": "4",
-                  "column-index": "0",
-                  "row-span": "1",
-                  "column-span": "1",
-                  "section-columns": "1",
-                  "section-rows": "1",
-                  "subsections": [
-                    {
-                      "name": "subsection-enrichment-splitjoin",
-                      "display-name": "Split Join Topology",
+                      "display-name": "Topology",
                       "row-index": "0",
                       "column-index": "0",
                       "row-span": "1",
@@ -611,46 +592,6 @@
           "subsection-name": "subsection-enrichment-storm"
         },
         {
-          "config": "metron-enrichment-env/enrichment_join_cache_size",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/threatintel_join_cache_size",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/enrichment_kafka_spout_parallelism",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/enrichment_split_parallelism",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/enrichment_stellar_parallelism",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/enrichment_join_parallelism",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/threat_intel_split_parallelism",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/threat_intel_stellar_parallelism",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/threat_intel_join_parallelism",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
-          "config": "metron-enrichment-env/kafka_writer_parallelism",
-          "subsection-name": "subsection-enrichment-splitjoin"
-        },
-        {
           "config": "metron-enrichment-env/unified_kafka_spout_parallelism",
           "subsection-name": "subsection-enrichment-unified"
         },
@@ -915,6 +856,14 @@
           "subsection-name": "subsection-rest"
         },
         {
+          "config": "metron-rest-env/storm_status_cache_max_size",
+          "subsection-name": "subsection-rest"
+        },
+        {
+          "config": "metron-rest-env/storm_status_cache_timeout_seconds",
+          "subsection-name": "subsection-rest"
+        },
+        {
           "config": "metron-management-ui-env/metron_management_ui_port",
           "subsection-name": "subsection-management-ui"
         },
@@ -1648,6 +1597,18 @@
         }
       },
       {
+        "config": "metron-rest-env/storm_status_cache_max_size",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
+        "config": "metron-rest-env/storm_status_cache_timeout_seconds",
+        "widget": {
+          "type": "text-field"
+        }
+      },
+      {
         "config": "metron-pcap-env/pcap_page_size",
         "widget": {
           "type": "text-field"
diff --git a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/mpack.json b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/mpack.json
index d314ebf..9444d54 100644
--- a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/mpack.json
+++ b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/mpack.json
@@ -1,7 +1,7 @@
 {
   "type": "full-release",
   "name": "metron-ambari.mpack",
-  "version": "0.7.1.0",
+  "version": "0.7.2.0",
   "description": "Ambari Management Pack for Apache Metron",
   "prerequisites": {
     "min-ambari-version": "2.4.0.0",
diff --git a/metron-deployment/packaging/docker/deb-docker/README.md b/metron-deployment/packaging/docker/deb-docker/README.md
index a0ac0b3..3f91b3f 100644
--- a/metron-deployment/packaging/docker/deb-docker/README.md
+++ b/metron-deployment/packaging/docker/deb-docker/README.md
@@ -28,7 +28,7 @@ If you are installing Metron using Ambari, these packages are necessary prerequi
 
 ### Quick Start
 
-1. Execute the following command from the project's root directory.
+1. Execute the following command from the project's root directory. This will build/package **all** of Metron prior to building the DEBs. See [Build Packages](#build-packages) below to only build the DEBs.
     ```
     mvn clean package -DskipTests -Pbuild-debs
     ```
diff --git a/metron-deployment/packaging/docker/deb-docker/pom.xml b/metron-deployment/packaging/docker/deb-docker/pom.xml
index 98ccd8c..84e0be5 100644
--- a/metron-deployment/packaging/docker/deb-docker/pom.xml
+++ b/metron-deployment/packaging/docker/deb-docker/pom.xml
@@ -21,11 +21,11 @@
     <artifactId>metron-debs</artifactId>
     <packaging>pom</packaging>
     <name>metron-debs</name>
-    <version>0.7.1</version>
+    <version>0.7.2</version>
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>metron-deployment</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
         <relativePath>../../..</relativePath>
     </parent>
     <description>DEB Package Builder for Apache Metron</description>
diff --git a/metron-deployment/packaging/docker/rpm-docker/README.md b/metron-deployment/packaging/docker/rpm-docker/README.md
index 7667ed1..4f2bc08 100644
--- a/metron-deployment/packaging/docker/rpm-docker/README.md
+++ b/metron-deployment/packaging/docker/rpm-docker/README.md
@@ -26,7 +26,7 @@ If you are installing Metron using Ambari, these packages are necessary prerequi
 
 ### Quick Start
 
-1. Execute the following command from the project's root directory.
+1. Execute the following command from the project's root directory. This will build/package **all** of Metron prior to building the RPMs. See [Build Packages](#build-packages) below to only build the RPMs.
     ```
     mvn clean package -DskipTests -Pbuild-rpms
     ```
@@ -41,7 +41,7 @@ If you are installing Metron using Ambari, these packages are necessary prerequi
 If Metron has already been built, just the RPM packages can be built by executing the following commands.
   ```
   cd metron-deployment
-  mvn clean package -Pbuild-debs
+  mvn clean package -Pbuild-rpms
   ```
 
 ### How does this work?
diff --git a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
index dc40967..673ace5 100644
--- a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
+++ b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
@@ -45,25 +45,28 @@ Group:          Applications/Internet
 URL:            %{url}
 Source0:        metron-common-%{full_version}-archive.tar.gz
 Source1:        metron-parsers-common-%{full_version}-archive.tar.gz
-Source2:        metron-elasticsearch-%{full_version}-archive.tar.gz
+Source2:        metron-elasticsearch-storm-%{full_version}-archive.tar.gz
 Source3:        metron-data-management-%{full_version}-archive.tar.gz
-Source4:        metron-solr-%{full_version}-archive.tar.gz
-Source5:        metron-enrichment-common-%{full_version}-archive.tar.gz
-Source6:        metron-enrichment-storm-%{full_version}-archive.tar.gz
-Source7:        metron-indexing-%{full_version}-archive.tar.gz
-Source8:        metron-pcap-backend-%{full_version}-archive.tar.gz
-Source9:        metron-profiler-storm-%{full_version}-archive.tar.gz
-Source10:       metron-rest-%{full_version}-archive.tar.gz
-Source11:       metron-config-%{full_version}-archive.tar.gz
-Source12:       metron-management-%{full_version}-archive.tar.gz
-Source13:       metron-maas-service-%{full_version}-archive.tar.gz
-Source14:       metron-alerts-%{full_version}-archive.tar.gz
-Source15:       metron-performance-%{full_version}-archive.tar.gz
-Source16:       metron-profiler-spark-%{full_version}-archive.tar.gz
-Source17:       metron-profiler-repl-%{full_version}-archive.tar.gz
-Source18:       metron-parsing-storm-%{full_version}-archive.tar.gz
-Source19:       metron-parsers-%{full_version}-archive.tar.gz
-Source20:       metron-hbase-server-%{full_version}-archive.tar.gz
+Source4:        metron-solr-common-%{full_version}-archive.tar.gz
+Source5:        metron-solr-storm-%{full_version}-archive.tar.gz
+Source6:        metron-enrichment-common-%{full_version}-archive.tar.gz
+Source7:        metron-enrichment-storm-%{full_version}-archive.tar.gz
+Source8:        metron-indexing-common-%{full_version}-archive.tar.gz
+Source9:        metron-indexing-storm-%{full_version}-archive.tar.gz
+Source10:       metron-pcap-backend-%{full_version}-archive.tar.gz
+Source11:       metron-profiler-storm-%{full_version}-archive.tar.gz
+Source12:       metron-rest-%{full_version}-archive.tar.gz
+Source13:       metron-config-%{full_version}-archive.tar.gz
+Source14:       metron-management-%{full_version}-archive.tar.gz
+Source15:       metron-maas-service-%{full_version}-archive.tar.gz
+Source16:       metron-alerts-%{full_version}-archive.tar.gz
+Source17:       metron-performance-%{full_version}-archive.tar.gz
+Source18:       metron-profiler-spark-%{full_version}-archive.tar.gz
+Source19:       metron-profiler-repl-%{full_version}-archive.tar.gz
+Source20:       metron-parsing-storm-%{full_version}-archive.tar.gz
+Source21:       metron-parsers-%{full_version}-archive.tar.gz
+Source22:       metron-hbase-server-%{full_version}-archive.tar.gz
+Source23:       stellar-common-%{full_version}-archive.tar.gz
 
 %description
 Apache Metron provides a scalable advanced security analytics framework
@@ -107,6 +110,9 @@ tar -xzf %{SOURCE17} -C %{buildroot}%{metron_home}
 tar -xzf %{SOURCE18} -C %{buildroot}%{metron_home}
 tar -xzf %{SOURCE19} -C %{buildroot}%{metron_home}
 tar -xzf %{SOURCE20} -C %{buildroot}%{metron_home}
+tar -xzf %{SOURCE21} -C %{buildroot}%{metron_home}
+tar -xzf %{SOURCE22} -C %{buildroot}%{metron_home}
+tar -xzf %{SOURCE23} -C %{buildroot}%{metron_home}
 
 install %{buildroot}%{metron_home}/bin/metron-management-ui %{buildroot}/etc/init.d/
 install %{buildroot}%{metron_home}/bin/metron-alerts-ui %{buildroot}/etc/init.d/
@@ -138,7 +144,7 @@ This package installs the Metron common files %{metron_home}
 %{metron_home}/bin/cluster_info.py
 %{metron_home}/bin/tgt_renew.py
 %{metron_home}/config/zookeeper/global.json
-%attr(0644,root,root) %{metron_home}/lib/metron-common-%{full_version}.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-common-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -192,6 +198,7 @@ This package installs the Metron Bundled Parser files
 %{metron_home}/config/zookeeper/parsers/websphere.json
 %{metron_home}/config/zookeeper/parsers/yaf.json
 %{metron_home}/config/zookeeper/parsers/asa.json
+%{metron_home}/config/zookeeper/parsers/leef.json
 %{metron_home}/patterns/asa
 %{metron_home}/patterns/fireeye
 %{metron_home}/patterns/sourcefire
@@ -221,15 +228,15 @@ This package installs the Metron Parser Storm files
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-%package        elasticsearch
-Summary:        Metron Elasticsearch Files
+%package        elasticsearch-storm
+Summary:        Metron Elasticsearch Storm Files
 Group:          Applications/Internet
-Provides:       elasticsearch = %{version}
+Provides:       elasticsearch-storm = %{version}
 
-%description    elasticsearch
-This package installs the Metron Elasticsearch files
+%description    elasticsearch-storm
+This package installs the Metron Elasticsearch Storm files
 
-%files          elasticsearch
+%files          elasticsearch-storm
 %defattr(-,root,root,755)
 %dir %{metron_root}
 %dir %{metron_home}
@@ -238,7 +245,7 @@ This package installs the Metron Elasticsearch files
 %dir %{metron_home}/lib
 %{metron_home}/bin/start_elasticsearch_topology.sh
 %{metron_home}/config/elasticsearch.properties
-%attr(0644,root,root) %{metron_home}/lib/metron-elasticsearch-%{full_version}-uber.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-elasticsearch-storm-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -257,7 +264,7 @@ This package installs performance tools useful for Metron
 %dir %{metron_home}/bin
 %dir %{metron_home}/lib
 %{metron_home}/bin/load_tool.sh
-%attr(0644,root,root) %{metron_home}/lib/metron-performance-%{full_version}.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-performance-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -283,32 +290,30 @@ This package installs the Metron Parser files
 %{metron_home}/bin/prune_hdfs_files.sh
 %{metron_home}/bin/threatintel_bulk_prune.sh
 %{metron_home}/bin/threatintel_taxii_load.sh
-%attr(0644,root,root) %{metron_home}/lib/metron-data-management-%{full_version}.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-data-management-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-%package        solr
-Summary:        Metron Solr Files
+%package        solr-common
+Summary:        Metron Solr Common Files
 Group:          Applications/Internet
-Provides:       solr = %{version}
+Provides:       solr-common = %{version}
 
-%description    solr
-This package installs the Metron Solr files
+%description    solr-common
+This package installs the Metron Solr Common files
 
-%files          solr
+%files          solr-common
 %defattr(-,root,root,755)
 %dir %{metron_root}
 %dir %{metron_home}
 %dir %{metron_home}/bin
 %dir %{metron_home}/config
-%dir %{metron_home}/lib
 %{metron_home}/bin/create_collection.sh
 %{metron_home}/bin/delete_collection.sh
 %{metron_home}/bin/install_solr.sh
 %{metron_home}/bin/start_solr.sh
 %{metron_home}/bin/start_solr_topology.sh
 %{metron_home}/bin/stop_solr.sh
-%{metron_home}/config/solr.properties
 %{metron_home}/config/schema/bro/schema.xml
 %{metron_home}/config/schema/bro/solrconfig.xml
 %{metron_home}/config/schema/error/schema.xml
@@ -319,7 +324,27 @@ This package installs the Metron Solr files
 %{metron_home}/config/schema/snort/solrconfig.xml
 %{metron_home}/config/schema/yaf/schema.xml
 %{metron_home}/config/schema/yaf/solrconfig.xml
-%attr(0644,root,root) %{metron_home}/lib/metron-solr-%{full_version}-uber.jar
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+%package        solr-storm
+Summary:        Metron Solr Storm Files
+Group:          Applications/Internet
+Provides:       solr-storm = %{version}
+
+%description    solr-storm
+This package installs the Metron Solr Storm files
+
+%files          solr-storm
+%defattr(-,root,root,755)
+%dir %{metron_root}
+%dir %{metron_home}
+%dir %{metron_home}/bin
+%dir %{metron_home}/config
+%dir %{metron_home}/lib
+%{metron_home}/bin/start_solr_topology.sh
+%{metron_home}/config/solr.properties
+%attr(0644,root,root) %{metron_home}/lib/metron-solr-storm-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -365,32 +390,27 @@ This package installs the Metron Enrichment Storm files
 %dir %{metron_home}/flux
 %dir %{metron_home}/flux/enrichment
 %{metron_home}/bin/start_enrichment_topology.sh
-%{metron_home}/config/enrichment-splitjoin.properties
-%{metron_home}/config/enrichment-unified.properties
-%{metron_home}/flux/enrichment/remote-splitjoin.yaml
-%{metron_home}/flux/enrichment/remote-unified.yaml
+%{metron_home}/config/enrichment.properties
+%{metron_home}/flux/enrichment/remote.yaml
 %attr(0644,root,root) %{metron_home}/lib/metron-enrichment-storm-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-%package        indexing
+%package        indexing-common
 Summary:        Metron Indexing Files
 Group:          Applications/Internet
-Provides:       indexing = %{version}
+Provides:       indexing-common = %{version}
 
-%description    indexing
+%description    indexing-common
 This package installs the Metron Indexing files
 
-%files          indexing
+%files          indexing-common
 %defattr(-,root,root,755)
 %dir %{metron_root}
 %dir %{metron_home}
 %dir %{metron_home}/bin
 %dir %{metron_home}/flux
 %dir %{metron_home}/flux/indexing
-%{metron_home}/bin/start_hdfs_topology.sh
-%{metron_home}/flux/indexing/batch/remote.yaml
-%{metron_home}/flux/indexing/random_access/remote.yaml
 %{metron_home}/config/zookeeper/indexing/bro.json
 %{metron_home}/config/zookeeper/indexing/snort.json
 %{metron_home}/config/zookeeper/indexing/websphere.json
@@ -404,6 +424,27 @@ This package installs the Metron Indexing files
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+%package        indexing-storm
+Summary:        Metron Indexing Storm Files
+Group:          Applications/Internet
+Provides:       indexing-storm = %{version}
+
+%description    indexing-storm
+This package installs the Metron Indexing Storm files
+
+%files          indexing-storm
+%defattr(-,root,root,755)
+%dir %{metron_root}
+%dir %{metron_home}
+%dir %{metron_home}/bin
+%dir %{metron_home}/flux
+%dir %{metron_home}/flux/indexing
+%{metron_home}/bin/start_hdfs_topology.sh
+%{metron_home}/flux/indexing/batch/remote.yaml
+%{metron_home}/flux/indexing/random_access/remote.yaml
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 %package        metron-management
 Summary:        Metron Management Libary
 Group:          Applications/Internet
@@ -416,7 +457,7 @@ This package installs the Metron Management Library
 %defattr(-,root,root,755)
 %dir %{metron_root}
 %dir %{metron_home}/lib
-%attr(0644,root,root) %{metron_home}/lib/metron-management-%{full_version}.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-management-%{full_version}-uber.jar
 
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -445,7 +486,7 @@ This package installs the Metron PCAP files %{metron_home}
 %{metron_home}/bin/pcap_zeppelin_run.sh
 %{metron_home}/flux/pcap/remote.yaml
 %{metron_home}/config/zeppelin/metron/metron-pcap.json
-%attr(0644,root,root) %{metron_home}/lib/metron-pcap-backend-%{full_version}.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-pcap-backend-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -500,7 +541,7 @@ This package installs the Metron Rest %{metron_home}
 %{metron_home}/bin/metron-rest.sh
 %{metron_home}/bin/pcap_to_pdml.sh
 %{metron_home}/bin/install_metron_knox.sh
-%attr(0644,root,root) %{metron_home}/lib/metron-rest-%{full_version}.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-rest-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -616,6 +657,7 @@ This package installs the Metron Alerts UI %{metron_home}
 %attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/fonts/Roboto/*.ttf
 %attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/images/*
 %attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/app-config.json
+%attr(0644,root,root) %{metron_home}/web/alerts-ui/assets/context-menu.conf.json
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -636,7 +678,7 @@ This package installs the Metron Profiler for Spark %{metron_home}
 %dir %{metron_home}/bin
 %{metron_home}/bin/start_batch_profiler.sh
 %dir %{metron_home}/lib
-%attr(0644,root,root) %{metron_home}/lib/metron-profiler-spark-%{full_version}.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-profiler-spark-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -653,7 +695,7 @@ This package installs the Metron Profiler for the Stellar REPL %{metron_home}
 %dir %{metron_root}
 %dir %{metron_home}
 %dir %{metron_home}/lib
-%attr(0644,root,root) %{metron_home}/lib/metron-profiler-repl-%{full_version}.jar
+%attr(0644,root,root) %{metron_home}/lib/metron-profiler-repl-%{full_version}-uber.jar
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -676,6 +718,23 @@ This package installs the Metron HBase Server files
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+%package        stellar-common
+Summary:        Stellar Common Files
+Group:          Applications/Internet
+Provides:       stellar-common = %{version}
+
+%description    stellar-common
+This package installs the Stellar Common files
+
+%files          stellar-common
+%defattr(-,root,root,755)
+%dir %{metron_root}
+%dir %{metron_home}
+%dir %{metron_home}/lib
+%attr(0644,root,root) %{metron_home}/lib/stellar-common-%{full_version}-uber.jar
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 %post config
 chkconfig --add metron-management-ui
 chkconfig --add metron-alerts-ui
diff --git a/metron-deployment/packaging/docker/rpm-docker/build.sh b/metron-deployment/packaging/docker/rpm-docker/build.sh
index 68566b7..749cf8f 100755
--- a/metron-deployment/packaging/docker/rpm-docker/build.sh
+++ b/metron-deployment/packaging/docker/rpm-docker/build.sh
@@ -44,7 +44,11 @@ if [ $? -ne 0 ]; then
   exit 1
 fi
 
-rpmlint -i SPECS/metron.spec RPMS/*/metron* SRPMS/metron
+if [ -z "${SKIP_RPMLINT}" ] || [ $SKIP_RPMLINT -eq 0 ]; then
+  rpmlint -i SPECS/metron.spec RPMS/*/metron* SRPMS/metron]
+else
+  echo -n "SKIP_RPMLINT is non null and not equal to 0 - bypassing rpmlint"
+fi
 
 # Ensure original user permissions are maintained after build
 if [ $OWNER_UID -ne 0 ]; then
diff --git a/metron-deployment/packaging/docker/rpm-docker/pom.xml b/metron-deployment/packaging/docker/rpm-docker/pom.xml
index 1d580b0..63c0402 100644
--- a/metron-deployment/packaging/docker/rpm-docker/pom.xml
+++ b/metron-deployment/packaging/docker/rpm-docker/pom.xml
@@ -21,11 +21,11 @@
     <artifactId>metron-rpm</artifactId>
     <packaging>pom</packaging>
     <name>metron-rpm</name>
-    <version>0.7.1</version>
+    <version>0.7.2</version>
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>metron-deployment</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
         <relativePath>../../..</relativePath>
     </parent>
     <description>RPM Builder for Apache Metron</description>
@@ -120,7 +120,7 @@
                                     </includes>
                                 </resource>
                                 <resource>
-                                    <directory>${metron_dir}/metron-platform/metron-elasticsearch/target/</directory>
+                                    <directory>${metron_dir}/metron-platform/metron-elasticsearch/metron-elasticsearch-storm/target/</directory>
                                     <includes>
                                         <include>*.tar.gz</include>
                                     </includes>
@@ -144,7 +144,13 @@
                                     </includes>
                                 </resource>
                                 <resource>
-                                    <directory>${metron_dir}/metron-platform/metron-indexing/target/</directory>
+                                    <directory>${metron_dir}/metron-platform/metron-indexing/metron-indexing-common/target/</directory>
+                                    <includes>
+                                        <include>*.tar.gz</include>
+                                    </includes>
+                                </resource>
+                                <resource>
+                                    <directory>${metron_dir}/metron-platform/metron-indexing/metron-indexing-storm/target/</directory>
                                     <includes>
                                         <include>*.tar.gz</include>
                                     </includes>
@@ -180,7 +186,13 @@
                                     </includes>
                                 </resource>
                                 <resource>
-                                    <directory>${metron_dir}/metron-platform/metron-solr/target/</directory>
+                                    <directory>${metron_dir}/metron-platform/metron-solr/metron-solr-common/target/</directory>
+                                    <includes>
+                                        <include>*.tar.gz</include>
+                                    </includes>
+                                </resource>
+                                <resource>
+                                    <directory>${metron_dir}/metron-platform/metron-solr/metron-solr-storm/target/</directory>
                                     <includes>
                                         <include>*.tar.gz</include>
                                     </includes>
@@ -233,6 +245,12 @@
                                         <include>*.tar.gz</include>
                                     </includes>
                                 </resource>
+                                <resource>
+                                    <directory>${metron_dir}/metron-stellar/stellar-common/target/</directory>
+                                    <includes>
+                                        <include>*.tar.gz</include>
+                                    </includes>
+                                </resource>
                             </resources>
                         </configuration>
                     </execution>
diff --git a/metron-deployment/pom.xml b/metron-deployment/pom.xml
index 31227fd..deeb0ac 100644
--- a/metron-deployment/pom.xml
+++ b/metron-deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.metron</groupId>
         <artifactId>Metron</artifactId>
-        <version>0.7.1</version>
+        <version>0.7.2</version>
     </parent>
     <description>Building and deploying Metron</description>
     <url>https://metron.apache.org/</url>
diff --git a/metron-interface/metron-alerts/README.md b/metron-interface/metron-alerts/README.md
index bcf29c0..1eb5709 100644
--- a/metron-interface/metron-alerts/README.md
+++ b/metron-interface/metron-alerts/README.md
@@ -22,6 +22,7 @@ limitations under the License.
 - [Cypress Tests](#cypress-tests)
 - [Mpack Integration](#mpack-integration)
 - [Installing on an existing Cluster](#installing-on-an-existing-cluster)
+- [Click Through Navigation feature](#click-through-navigation-feature)
 
 ## Caveats
 ### Local Storage
@@ -210,3 +211,6 @@ From the dashboard, you'll be able to run tests separately and reach additional
 
 If you like to learn more about Cypress based tests please visit [Cypress.io](http://cypress.io).
 You can find more information about debuggin in this [section of the official documentation](https://docs.cypress.io/guides/guides/debugging.html#Using-debugger).
+
+## Click Through Navigation feature
+Click Through Navigation is a feature helps users to integrate Metron Alerts UI with other services. You can find more on this on the following [page](./src/app/shared/context-menu/README.md).
\ No newline at end of file
diff --git a/metron-interface/metron-alerts/cypress/fixtures/context-menu.conf.json b/metron-interface/metron-alerts/cypress/fixtures/context-menu.conf.json
new file mode 100644
index 0000000..d28507b
--- /dev/null
+++ b/metron-interface/metron-alerts/cypress/fixtures/context-menu.conf.json
@@ -0,0 +1,49 @@
+{
+  "isEnabled": true,
+  "config": {
+    "alertEntry": [
+      {
+        "label": "Internal ticketing system",
+        "urlPattern": "http://mytickets.org/tickets/{id}"
+      }
+    ],
+    "metaAlertEntry": [
+      {
+        "label": "MetaAlert specific item",
+        "urlPattern": "http://mytickets.org/tickets/{id}"
+      }
+    ],
+    "id": [
+      {
+        "label": "Dynamic menu item 01",
+        "urlPattern": "http://mytickets.org/tickets/{}"
+      }
+    ],
+    "ip_src_addr": [
+      {
+        "label": "IP Investigation Notebook",
+        "urlPattern": "http://zepellin.example.com:9000/notebook/BLAHBAH?ip={ip_src_addr}"
+      },
+      {
+        "label": "IP Conversation Investigation",
+        "urlPattern": "http://zepellin.example.com:9000/notebook/BLAHBAH?ip_src_addr={ip_src_addr}&ip_dst_addr={ip_dst_addr}"
+      }
+    ],
+    "ip_dst_addr": [
+      {
+        "label": "IP Investigation Notebook",
+        "urlPattern": "http://zepellin.example.com:9000/notebook/BLAHBAH?ip={ip_dst_addr}"
+      },
+      {
+        "label": "IP Conversation Investigation",
+        "urlPattern": "http://zepellin.example.com:9000/notebook/BLAHBAH?ip_src_addr={ip_src_addr}&ip_dst_addr={ip_dst_addr}"
+      }
+    ],
+    "host": [
+      {
+        "label": "Whois Reputation Service",
+        "urlPattern": "https://www.whois.com/whois/{}"
+      }
+    ]
+  }
+}
diff --git a/metron-interface/metron-alerts/cypress/integration/alert-list/context-menu.spec.js b/metron-interface/metron-alerts/cypress/integration/alert-list/context-menu.spec.js
new file mode 100644
index 0000000..951f57e
--- /dev/null
+++ b/metron-interface/metron-alerts/cypress/integration/alert-list/context-menu.spec.js
@@ -0,0 +1,89 @@
+/// <reference types="Cypress" />
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import * as appConfigJSON from '../../../src/assets/app-config.json';
+
+context('Context Menu on Alerts', () => {
+
+  beforeEach(() => {
+    cy.server();
+    cy.route({
+      method: 'GET',
+      url: '/api/v1/user',
+      response: 'user'
+    });
+    cy.route({
+        method: 'POST',
+        url: '/api/v1/logout',
+        response: []
+    });
+
+    cy.route('GET', '/api/v1/global/config', 'fixture:config.json');
+    cy.route('POST', 'search', 'fixture:search.json');
+
+    cy.route('GET', appConfigJSON.contextMenuConfigURL, 'fixture:context-menu.conf.json');
+
+    cy.visit('login');
+    cy.get('[name="user"]').type('user');
+    cy.get('[name="password"]').type('password');
+    cy.contains('LOG IN').click();
+
+    cy.get('[data-qe-id="alert-search-btn"]').click();
+  });
+
+  it('clicking on a table cell should show context menu', () => {
+    cy.get('[data-qe-id="row-5"] > :nth-child(6) > a').click();
+    cy.get('[data-qe-id="cm-dropdown"]').should('be.visible');
+  });
+
+  it('clicking on "Add to search bar" should apply value to filter bar', () => {
+    cy.get('[data-qe-id="row-5"] > :nth-child(6) > a').click();
+    cy.get('[data-qe-id="cm-dropdown"]').should('be.visible');
+    cy.contains('Add to search bar').click();
+    cy.get('.ace_keyword').should('contain', 'ip_src_addr:');
+    cy.get('.ace_value').should('contain', '192.168.66.121');
+  });
+
+  it('clicking on "Add to search bar" should close the dropdown of context menu', () => {
+    cy.get('[data-qe-id="row-5"] > :nth-child(6) > a').click();
+    cy.get('[data-qe-id="cm-dropdown"]').should('be.visible');
+    cy.contains('Add to search bar').click();
+    cy.get('[data-qe-id="cm-dropdown"]').should('not.be.visible');
+  });
+
+  it('dynamic items should be rendered', () => {
+    cy.get('[data-qe-id="row-5"] > :nth-child(6) > a').click();
+    cy.get('[data-qe-id="cm-dropdown"]').should('be.visible');
+    cy.get('[data-qe-id="cm-dropdown"]').contains('IP Investigation Notebook').should('be.visible');
+  });
+
+  // this use case was a former bug caused by the behaviour of the rxjs Subject class
+  // here we pinning down the fix with a test
+  it('dynamic items should be rendered after a clicking a predefined item', () => {
+    cy.get('[data-qe-id="row-5"] > :nth-child(6) > a').click();
+    cy.get('[data-qe-id="cm-dropdown"]').should('be.visible');
+    cy.contains('Add to search bar').click();
+
+    cy.wait(300);
+
+    cy.get('[data-qe-id="row-5"] > :nth-child(6) > a').click();
+    cy.get('[data-qe-id="cm-dropdown"]').should('be.visible');
+    cy.get('[data-qe-id="cm-dropdown"]').contains('IP Investigation Notebook').should('be.visible');
+  });
+
+})
diff --git a/metron-interface/metron-alerts/cypress/integration/pcap/pcap.spec.js b/metron-interface/metron-alerts/cypress/integration/pcap/pcap.spec.js
index fa0cd51..c5811a4 100644
--- a/metron-interface/metron-alerts/cypress/integration/pcap/pcap.spec.js
+++ b/metron-interface/metron-alerts/cypress/integration/pcap/pcap.spec.js
@@ -222,7 +222,7 @@ context('PCAP Tab', () => {
   it('showing date validation messages', () => {
     cy.contains('PCAP').click();
 
-    cy.get('[data-qe-id="end-time"]').click();
+    cy.get('[data-qe-id="end-time"] .input-group-text.calendar').click();
     cy.get('.pika-select-year').select('2015');
     cy.get('[data-day="11"] > .pika-button').click();
 
diff --git a/metron-interface/metron-alerts/package-lock.json b/metron-interface/metron-alerts/package-lock.json
index 8ce6443..0907b10 100644
--- a/metron-interface/metron-alerts/package-lock.json
+++ b/metron-interface/metron-alerts/package-lock.json
@@ -1,238 +1,126 @@
 {
   "name": "metron-alerts",
-  "version": "0.7.1",
+  "version": "0.7.2",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
     "@angular-devkit/architect": {
-      "version": "0.6.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.8.tgz",
-      "integrity": "sha512-ZKTm/zC61iY9IBHOEAKoMSzZpvhkmv+1O/HHzpHEuR551jCzu6vSyCmMY9Z7GBcccscCV+hjeSMwgFrFRcqlkw==",
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.0.tgz",
+      "integrity": "sha512-oDBrWlfKh/0t2ag4T8gz9xzPMItxfctinlsHxhw7dPQ+etq1mIcWgQkiKiDrz4l46YiGipBRlC55j+6f37omAA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "0.6.8",
-        "rxjs": "^6.0.0"
+        "@angular-devkit/core": "7.3.0",
+        "rxjs": "6.3.3"
+      },
+      "dependencies": {
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        }
       }
     },
     "@angular-devkit/build-angular": {
-      "version": "0.6.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.6.8.tgz",
-      "integrity": "sha512-VGqYAk8jpISraz2UHfsDre270NOUmV0CTSZw2p9sm5g/XIr5m+IHetFZz3gpoAr9+If2aFTs8Rt3sGdCRzwBqA==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/architect": "0.6.8",
-        "@angular-devkit/build-optimizer": "0.6.8",
-        "@angular-devkit/core": "0.6.8",
-        "@ngtools/webpack": "6.0.8",
-        "ajv": "~6.4.0",
-        "autoprefixer": "^8.4.1",
-        "cache-loader": "^1.2.2",
-        "chalk": "~2.2.2",
-        "circular-dependency-plugin": "^5.0.2",
-        "clean-css": "^4.1.11",
-        "copy-webpack-plugin": "^4.5.1",
-        "file-loader": "^1.1.11",
-        "glob": "^7.0.3",
-        "html-webpack-plugin": "^3.0.6",
-        "istanbul": "^0.4.5",
-        "istanbul-instrumenter-loader": "^3.0.1",
-        "karma-source-map-support": "^1.2.0",
-        "less": "^3.0.4",
-        "less-loader": "^4.1.0",
-        "license-webpack-plugin": "^1.3.1",
-        "lodash": "^4.17.4",
-        "memory-fs": "^0.4.1",
-        "mini-css-extract-plugin": "~0.4.0",
-        "minimatch": "^3.0.4",
-        "node-sass": "^4.9.0",
-        "opn": "^5.1.0",
-        "parse5": "^4.0.0",
-        "portfinder": "^1.0.13",
-        "postcss": "^6.0.22",
-        "postcss-import": "^11.1.0",
-        "postcss-loader": "^2.1.5",
-        "postcss-url": "^7.3.2",
-        "raw-loader": "^0.5.1",
-        "resolve": "^1.5.0",
-        "rxjs": "^6.0.0",
-        "sass-loader": "^7.0.1",
-        "silent-error": "^1.1.0",
-        "source-map-support": "^0.5.0",
-        "stats-webpack-plugin": "^0.6.2",
-        "style-loader": "^0.21.0",
-        "stylus": "^0.54.5",
-        "stylus-loader": "^3.0.2",
-        "tree-kill": "^1.2.0",
-        "uglifyjs-webpack-plugin": "^1.2.5",
-        "url-loader": "^1.0.1",
-        "webpack": "~4.8.1",
-        "webpack-dev-middleware": "^3.1.3",
-        "webpack-dev-server": "^3.1.4",
-        "webpack-merge": "^4.1.2",
-        "webpack-sources": "^1.1.0",
-        "webpack-subresource-integrity": "^1.1.0-rc.4"
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.13.0.tgz",
+      "integrity": "sha512-JjoSXbmwOsuDJxngyChr6aOSZ2qsrvSL1MHwqgXhZswmC/KghBF0aZ7y8Wzr27zDCQ174Axts7+IAk6b+aWIqw==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.13.0",
+        "@angular-devkit/build-optimizer": "0.13.0",
+        "@angular-devkit/build-webpack": "0.13.0",
+        "@angular-devkit/core": "7.3.0",
+        "@ngtools/webpack": "7.3.0",
+        "ajv": "6.7.0",
+        "autoprefixer": "9.4.6",
+        "circular-dependency-plugin": "5.0.2",
+        "clean-css": "4.2.1",
+        "copy-webpack-plugin": "4.6.0",
+        "file-loader": "3.0.1",
+        "glob": "7.1.3",
+        "istanbul": "0.4.5",
+        "istanbul-instrumenter-loader": "3.0.1",
+        "karma-source-map-support": "1.3.0",
+        "less": "3.9.0",
+        "less-loader": "4.1.0",
+        "license-webpack-plugin": "2.1.0",
+        "loader-utils": "1.2.3",
+        "mini-css-extract-plugin": "0.5.0",
+        "minimatch": "3.0.4",
+        "node-sass": "4.11.0",
+        "opn": "5.4.0",
+        "parse5": "4.0.0",
+        "postcss": "7.0.14",
+        "postcss-import": "12.0.1",
+        "postcss-loader": "3.0.0",
+        "raw-loader": "1.0.0",
+        "rxjs": "6.3.3",
+        "sass-loader": "7.1.0",
+        "semver": "5.6.0",
+        "source-map-loader": "0.2.4",
+        "source-map-support": "0.5.10",
+        "speed-measure-webpack-plugin": "1.3.0",
+        "stats-webpack-plugin": "0.7.0",
+        "style-loader": "0.23.1",
+        "stylus": "0.54.5",
+        "stylus-loader": "3.0.2",
+        "terser-webpack-plugin": "1.2.1",
+        "tree-kill": "1.2.1",
+        "webpack": "4.29.0",
+        "webpack-dev-middleware": "3.5.1",
+        "webpack-dev-server": "3.1.14",
+        "webpack-merge": "4.2.1",
+        "webpack-sources": "1.3.0",
+        "webpack-subresource-integrity": "1.1.0-rc.6"
       },
       "dependencies": {
         "ajv": {
-          "version": "6.4.0",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz",
-          "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=",
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz",
+          "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==",
           "dev": true,
           "requires": {
-            "fast-deep-equal": "^1.0.0",
+            "fast-deep-equal": "^2.0.1",
             "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.3.0",
-            "uri-js": "^3.0.2"
-          }
-        },
-        "ansi-styles": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^1.9.0"
-          }
-        },
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        },
-        "aws-sign2": {
-          "version": "0.7.0",
-          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-          "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
-          "dev": true
-        },
-        "chalk": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz",
-          "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.1.0",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^4.0.0"
-          }
-        },
-        "form-data": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
-          "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
-          "dev": true,
-          "requires": {
-            "asynckit": "^0.4.0",
-            "combined-stream": "1.0.6",
-            "mime-types": "^2.1.12"
-          },
-          "dependencies": {
-            "combined-stream": {
-              "version": "1.0.6",
-              "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
-              "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
-              "dev": true,
-              "requires": {
-                "delayed-stream": "~1.0.0"
-              }
-            }
-          }
-        },
-        "har-schema": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-          "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-          "dev": true
-        },
-        "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,
-          "requires": {
-            "ajv": "^5.1.0",
-            "har-schema": "^2.0.0"
-          },
-          "dependencies": {
-            "ajv": {
-              "version": "5.5.2",
-              "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
-              "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
-              "dev": 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"
-              }
-            }
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
           }
         },
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
           "dev": true
         },
-        "http-signature": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-          "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+        "glob": {
+          "version": "7.1.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+          "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
           "dev": true,
           "requires": {
-            "assert-plus": "^1.0.0",
-            "jsprim": "^1.2.2",
-            "sshpk": "^1.7.0"
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
           }
         },
-        "mime-db": {
-          "version": "1.35.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
-          "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==",
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
           "dev": true
         },
-        "mime-types": {
-          "version": "2.1.19",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
-          "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
-          "dev": true,
-          "requires": {
-            "mime-db": "~1.35.0"
-          }
-        },
-        "nan": {
-          "version": "2.10.0",
-          "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
-          "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
-          "dev": true,
-          "optional": true
-        },
-        "node-gyp": {
-          "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",
-            "graceful-fs": "^4.1.2",
-            "mkdirp": "^0.5.0",
-            "nopt": "2 || 3",
-            "npmlog": "0 || 1 || 2 || 3 || 4",
-            "osenv": "0",
-            "request": "^2.87.0",
-            "rimraf": "2",
-            "semver": "~5.3.0",
-            "tar": "^2.0.0",
-            "which": "1"
-          }
-        },
         "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==",
+          "version": "4.11.0",
+          "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz",
+          "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==",
           "dev": true,
           "optional": true,
           "requires": {
@@ -251,101 +139,25 @@
             "nan": "^2.10.0",
             "node-gyp": "^3.8.0",
             "npmlog": "^4.0.0",
-            "request": "2.87.0",
+            "request": "^2.88.0",
             "sass-graph": "^2.2.4",
             "stdout-stream": "^1.4.0",
             "true-case-path": "^1.0.2"
-          },
-          "dependencies": {
-            "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
-            },
-            "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",
-                "has-ansi": "^2.0.0",
-                "strip-ansi": "^3.0.0",
-                "supports-color": "^2.0.0"
-              }
-            },
-            "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
-            }
-          }
-        },
-        "performance-now": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-          "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
-          "dev": true
-        },
-        "punycode": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-          "dev": true
-        },
-        "qs": {
-          "version": "6.5.2",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
-          "dev": true
-        },
-        "request": {
-          "version": "2.87.0",
-          "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
-          "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
-          "dev": 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"
           }
         },
-        "resolve": {
-          "version": "1.8.1",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
-          "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
           "dev": true,
           "requires": {
-            "path-parse": "^1.0.5"
+            "tslib": "^1.9.0"
           }
         },
-        "safe-buffer": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+        "semver": {
+          "version": "5.6.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+          "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
           "dev": true
         },
         "source-map": {
@@ -355,100 +167,159 @@
           "dev": true
         },
         "source-map-support": {
-          "version": "0.5.9",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
-          "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
+          "version": "0.5.10",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
+          "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
           "dev": true,
           "requires": {
             "buffer-from": "^1.0.0",
             "source-map": "^0.6.0"
           }
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "dev": true,
-          "requires": {
-            "has-flag": "^2.0.0"
-          }
-        },
-        "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,
-          "requires": {
-            "punycode": "^1.4.1"
-          },
-          "dependencies": {
-            "punycode": {
-              "version": "1.4.1",
-              "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-              "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-              "dev": true
-            }
-          }
-        },
-        "uri-js": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz",
-          "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=",
-          "dev": true,
-          "requires": {
-            "punycode": "^2.1.0"
-          }
-        },
-        "uuid": {
-          "version": "3.3.2",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
-          "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
-          "dev": true
         }
       }
     },
     "@angular-devkit/build-optimizer": {
-      "version": "0.6.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.6.8.tgz",
-      "integrity": "sha512-of5syQbv3uNPp4AQkfRecfnp8AE8kvffbfYi+FFPZ6OGr7e59T1fGwk6+Zgb2qQFQg8HO2tzWI/uygtLIqmbmw==",
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.13.0.tgz",
+      "integrity": "sha512-fhWuzbMVV/UNYE7rHSKutrWTCZle34N5cdtFz6qhK1k/wn7Vmtg9cFOwzx0SPdIlOEn576NB4DS/4UG3B5WCUQ==",
       "dev": true,
       "requires": {
-        "loader-utils": "^1.1.0",
-        "source-map": "^0.5.6",
-        "typescript": "~2.9.1",
-        "webpack-sources": "^1.1.0"
+        "loader-utils": "1.2.3",
+        "source-map": "0.5.6",
+        "typescript": "3.2.4",
+        "webpack-sources": "1.3.0"
+      }
+    },
+    "@angular-devkit/build-webpack": {
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.13.0.tgz",
+      "integrity": "sha512-idtFoSbQ3Y3WqXlDlU7oTPV9TIU1kjLqce0nK1Kst+t40GTc+Q4iUJJ7KsKE3nV6TPyrL1N/IvIF7+hSJnYm8A==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.13.0",
+        "@angular-devkit/core": "7.3.0",
+        "rxjs": "6.3.3"
       },
       "dependencies": {
-        "typescript": {
-          "version": "2.9.2",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
-          "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
-          "dev": true
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
         }
       }
     },
     "@angular-devkit/core": {
-      "version": "0.6.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.8.tgz",
-      "integrity": "sha512-rkIa1OSVWTt4g9leLSK/PsqOj3HZbDKHbZjqlslyfVa3AyCeiumFoOgViOVXlYgPX3HHDbE5uH24nyUWSD8uww==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.0.tgz",
+      "integrity": "sha512-b0qtAUpgqLpWY8W6vWRv1aj6bXkZCP1rvywl8i8TbGMY67CWRcy5J3fNAMmjiZS+LJixFlIXYf4iOydglyJMfg==",
       "dev": true,
       "requires": {
-        "ajv": "~6.4.0",
-        "chokidar": "^2.0.3",
-        "rxjs": "^6.0.0",
-        "source-map": "^0.5.6"
+        "ajv": "6.7.0",
+        "chokidar": "2.0.4",
+        "fast-json-stable-stringify": "2.0.0",
+        "rxjs": "6.3.3",
+        "source-map": "0.7.3"
       },
       "dependencies": {
         "ajv": {
-          "version": "6.4.0",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz",
-          "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=",
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz",
+          "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==",
           "dev": true,
           "requires": {
-            "fast-deep-equal": "^1.0.0",
+            "fast-deep-equal": "^2.0.1",
             "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.3.0",
-            "uri-js": "^3.0.2"
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "chokidar": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+          "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+          "dev": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.0",
+            "braces": "^2.3.0",
+            "fsevents": "^1.2.2",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.1",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "lodash.debounce": "^4.0.8",
+            "normalize-path": "^2.1.1",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.0.0",
+            "upath": "^1.0.5"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+          "dev": true
+        },
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "dev": true
+        }
+      }
+    },
+    "@angular-devkit/schematics": {
+      "version": "7.3.9",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.3.9.tgz",
+      "integrity": "sha512-xzROGCYp7aQbeJ3V6YC0MND7wKEAdWqmm/GaCufEk0dDS8ZGe0sQhcM2oBRa2nQqGQNeThFIH51kx+FayrJP0w==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "7.3.9",
+        "rxjs": "6.3.3"
+      },
+      "dependencies": {
+        "@angular-devkit/core": {
+          "version": "7.3.9",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.9.tgz",
+          "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.9.1",
+            "chokidar": "2.0.4",
+            "fast-json-stable-stringify": "2.0.0",
+            "rxjs": "6.3.3",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.9.1",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz",
+          "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
           }
         },
         "anymatch": {
@@ -467,12 +338,6 @@
           "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
           "dev": true
         },
-        "arr-flatten": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-          "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-          "dev": true
-        },
         "array-unique": {
           "version": "0.3.2",
           "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
@@ -657,6 +522,12 @@
             }
           }
         },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -680,1489 +551,1845 @@
             }
           }
         },
-        "fsevents": {
-          "version": "1.2.4",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
-          "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
           "dev": true,
-          "optional": true,
           "requires": {
-            "nan": "^2.9.2",
-            "node-pre-gyp": "^0.10.0"
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
           },
           "dependencies": {
-            "abbrev": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ansi-regex": {
-              "version": "2.1.1",
-              "bundled": true,
-              "dev": true
-            },
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "are-we-there-yet": {
-              "version": "1.1.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
-              }
-            },
-            "balanced-match": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true
-            },
-            "brace-expansion": {
-              "version": "1.1.11",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-              }
-            },
-            "chownr": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "code-point-at": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true
-            },
-            "concat-map": {
-              "version": "0.0.1",
-              "bundled": true,
-              "dev": true
-            },
-            "console-control-strings": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true
-            },
-            "core-util-is": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "debug": {
-              "version": "2.6.9",
-              "bundled": true,
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "ms": "2.0.0"
+                "is-extglob": "^2.1.0"
               }
-            },
-            "deep-extend": {
-              "version": "0.5.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "delegates": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "detect-libc": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "fs-minipass": {
-              "version": "1.2.5",
-              "bundled": true,
+            }
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        },
+        "is-extglob": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+          "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.1"
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "minipass": "^2.2.1"
+                "is-buffer": "^1.1.5"
               }
-            },
-            "fs.realpath": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "gauge": {
-              "version": "2.7.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
+            }
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+          "dev": true
+        },
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "dev": true
+        }
+      }
+    },
+    "@angular/animations": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.15.tgz",
+      "integrity": "sha512-8oBt3HLgd2+kyJHUgsd7OzKCCss67t2sch15XNoIWlOLfxclqU+EfFE6t/vCzpT8/+lpZS6LU9ZrTnb+UBj5jg==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/cdk": {
+      "version": "7.3.7",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.3.7.tgz",
+      "integrity": "sha512-xbXxhHHKGkVuW6K7pzPmvpJXIwpl0ykBnvA2g+/7Sgy5Pd35wCC+UtHD9RYczDM/mkygNxMQtagyCErwFnDtQA==",
+      "requires": {
+        "parse5": "^5.0.0",
+        "tslib": "^1.7.1"
+      },
+      "dependencies": {
+        "parse5": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
+          "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
+          "optional": true
+        }
+      }
+    },
+    "@angular/cli": {
+      "version": "7.3.9",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.3.9.tgz",
+      "integrity": "sha512-7oJj7CKDlFUbQav1x1CV4xKKcbt0pnxY4unKcm7Q1tVXhu8bU2bc3cDA0aJnbofcYb6TJcd/C2qHgCt78q7edA==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.13.9",
+        "@angular-devkit/core": "7.3.9",
+        "@angular-devkit/schematics": "7.3.9",
+        "@schematics/angular": "7.3.9",
+        "@schematics/update": "0.13.9",
+        "@yarnpkg/lockfile": "1.1.0",
+        "ini": "1.3.5",
+        "inquirer": "6.2.1",
+        "npm-package-arg": "6.1.0",
+        "open": "6.0.0",
+        "pacote": "9.4.0",
+        "semver": "5.6.0",
+        "symbol-observable": "1.2.0"
+      },
+      "dependencies": {
+        "@angular-devkit/architect": {
+          "version": "0.13.9",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.9.tgz",
+          "integrity": "sha512-EAFtCs9dsGhpMRC45PoYsrkiExpWz9Ax15qXfzwdDRacz5DmdOVt+QpkLW1beUOwiyj/bhFyj23eaONK2RTn/w==",
+          "dev": true,
+          "requires": {
+            "@angular-devkit/core": "7.3.9",
+            "rxjs": "6.3.3"
+          }
+        },
+        "@angular-devkit/core": {
+          "version": "7.3.9",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.9.tgz",
+          "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.9.1",
+            "chokidar": "2.0.4",
+            "fast-json-stable-stringify": "2.0.0",
+            "rxjs": "6.3.3",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.9.1",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz",
+          "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "dev": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          }
+        },
+        "arr-diff": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+          "dev": true
+        },
+        "array-unique": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+          "dev": true
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "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"
               }
-            },
-            "glob": {
-              "version": "7.1.2",
-              "bundled": true,
+            }
+          }
+        },
+        "chokidar": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+          "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+          "dev": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.0",
+            "braces": "^2.3.0",
+            "fsevents": "^1.2.2",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.1",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "lodash.debounce": "^4.0.8",
+            "normalize-path": "^2.1.1",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.0.0",
+            "upath": "^1.0.5"
+          }
+        },
+        "expand-brackets": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+          "dev": true,
+          "requires": {
+            "debug": "^2.3.3",
+            "define-property": "^0.2.5",
+            "extend-shallow": "^2.0.1",
+            "posix-character-classes": "^0.1.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "0.2.5",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
+                "is-descriptor": "^0.1.0"
               }
             },
-            "has-unicode": {
+            "extend-shallow": {
               "version": "2.0.1",
-              "bundled": true,
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
-              "optional": true
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
             },
-            "iconv-lite": {
-              "version": "0.4.21",
-              "bundled": true,
+            "is-accessor-descriptor": {
+              "version": "0.1.6",
+              "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "safer-buffer": "^2.1.0"
+                "kind-of": "^3.0.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "^1.1.5"
+                  }
+                }
               }
             },
-            "ignore-walk": {
-              "version": "3.0.1",
-              "bundled": true,
+            "is-data-descriptor": {
+              "version": "0.1.4",
+              "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "minimatch": "^3.0.4"
+                "kind-of": "^3.0.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "^1.1.5"
+                  }
+                }
               }
             },
-            "inflight": {
-              "version": "1.0.6",
-              "bundled": true,
+            "is-descriptor": {
+              "version": "0.1.6",
+              "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+              "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
               "dev": true,
-              "optional": true,
               "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
+                "is-accessor-descriptor": "^0.1.6",
+                "is-data-descriptor": "^0.1.4",
+                "kind-of": "^5.0.0"
               }
             },
-            "inherits": {
-              "version": "2.0.3",
-              "bundled": true,
+            "kind-of": {
+              "version": "5.1.0",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+              "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
               "dev": true
-            },
-            "ini": {
-              "version": "1.3.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "is-fullwidth-code-point": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "number-is-nan": "^1.0.0"
-              }
-            },
-            "isarray": {
+            }
+          }
+        },
+        "extglob": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+          "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+          "dev": true,
+          "requires": {
+            "array-unique": "^0.3.2",
+            "define-property": "^1.0.0",
+            "expand-brackets": "^2.1.4",
+            "extend-shallow": "^2.0.1",
+            "fragment-cache": "^0.2.1",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "define-property": {
               "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minimatch": {
-              "version": "3.0.4",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "brace-expansion": "^1.1.7"
-              }
-            },
-            "minimist": {
-              "version": "0.0.8",
-              "bundled": true,
-              "dev": true
-            },
-            "minipass": {
-              "version": "2.2.4",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "safe-buffer": "^5.1.1",
-                "yallist": "^3.0.0"
-              }
-            },
-            "minizlib": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.2.1"
-              }
-            },
-            "mkdirp": {
-              "version": "0.5.1",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "minimist": "0.0.8"
-              }
-            },
-            "ms": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "needle": {
-              "version": "2.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "debug": "^2.1.2",
-                "iconv-lite": "^0.4.4",
-                "sax": "^1.2.4"
-              }
-            },
-            "node-pre-gyp": {
-              "version": "0.10.0",
-              "bundled": true,
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "detect-libc": "^1.0.2",
-                "mkdirp": "^0.5.1",
-                "needle": "^2.2.0",
-                "nopt": "^4.0.1",
-                "npm-packlist": "^1.1.6",
-                "npmlog": "^4.0.2",
-                "rc": "^1.1.7",
-                "rimraf": "^2.6.1",
-                "semver": "^5.3.0",
-                "tar": "^4"
+                "is-descriptor": "^1.0.0"
               }
             },
-            "nopt": {
-              "version": "4.0.1",
-              "bundled": true,
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "abbrev": "1",
-                "osenv": "^0.1.4"
+                "is-extendable": "^0.1.0"
               }
-            },
-            "npm-bundled": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "npm-packlist": {
-              "version": "1.1.10",
-              "bundled": true,
+            }
+          }
+        },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "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,
-              "optional": true,
               "requires": {
-                "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1"
+                "is-extendable": "^0.1.0"
               }
-            },
-            "npmlog": {
-              "version": "4.1.2",
-              "bundled": true,
+            }
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
+                "is-extglob": "^2.1.0"
               }
-            },
-            "number-is-nan": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true
-            },
-            "object-assign": {
-              "version": "4.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "once": {
-              "version": "1.4.0",
-              "bundled": true,
+            }
+          }
+        },
+        "ini": {
+          "version": "1.3.5",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+          "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+          "dev": true
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        },
+        "is-extglob": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+          "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.1"
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
-                "wrappy": "1"
+                "is-buffer": "^1.1.5"
               }
-            },
-            "os-homedir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "os-tmpdir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "osenv": {
-              "version": "0.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "os-homedir": "^1.0.0",
-                "os-tmpdir": "^1.0.0"
-              }
-            },
-            "path-is-absolute": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "process-nextick-args": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "rc": {
-              "version": "1.2.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "deep-extend": "^0.5.1",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
-              },
-              "dependencies": {
-                "minimist": {
-                  "version": "1.2.0",
-                  "bundled": true,
-                  "dev": true,
-                  "optional": true
-                }
-              }
-            },
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
-              }
-            },
-            "rimraf": {
-              "version": "2.6.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "glob": "^7.0.5"
-              }
-            },
-            "safe-buffer": {
-              "version": "5.1.1",
-              "bundled": true,
-              "dev": true
-            },
-            "safer-buffer": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "sax": {
-              "version": "1.2.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "semver": {
-              "version": "5.5.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "set-blocking": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "signal-exit": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "~5.1.0"
-              }
-            },
-            "strip-ansi": {
-              "version": "3.0.1",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^2.0.0"
-              }
-            },
-            "strip-json-comments": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "tar": {
-              "version": "4.4.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "chownr": "^1.0.1",
-                "fs-minipass": "^1.2.5",
-                "minipass": "^2.2.4",
-                "minizlib": "^1.1.0",
-                "mkdirp": "^0.5.0",
-                "safe-buffer": "^5.1.1",
-                "yallist": "^3.0.2"
-              }
-            },
-            "util-deprecate": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "wide-align": {
-              "version": "1.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "string-width": "^1.0.2"
-              }
-            },
-            "wrappy": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true
-            },
-            "yallist": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true
             }
           }
         },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+          "dev": true
         },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+          "dev": true
         },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
           "dev": true,
           "requires": {
-            "kind-of": "^6.0.0"
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
           }
         },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
+            "tslib": "^1.9.0"
           }
         },
-        "is-extglob": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+        "semver": {
+          "version": "5.6.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+          "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
           "dev": true
         },
-        "is-glob": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
-          "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "dev": true
+        }
+      }
+    },
+    "@angular/common": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.2.15.tgz",
+      "integrity": "sha512-2b5JY2HWVHCf3D1GZjmde7jdAXSTXkYtmjLtA9tQkjOOTr80eHpNSujQqnzb97dk9VT9OjfjqTQd7K3pxZz8jw==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/compiler": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.2.15.tgz",
+      "integrity": "sha512-5yb4NcLk8GuXkYf7Dcor4XkGueYp4dgihzDmMjYDUrV0NPhubKlr+SwGtLOtzgRBWJ1I2bO0S3zwa0q0OgIPOw==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/compiler-cli": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.2.15.tgz",
+      "integrity": "sha512-+AsfyKawmj/sa+m4Pz8VSRFbCfx/3IOjAuuEjhopbyr154YpPDSu8NTbcwzq3yfbVcPwK4/4exmbQzpsndaCTg==",
+      "dev": true,
+      "requires": {
+        "canonical-path": "1.0.0",
+        "chokidar": "^2.1.1",
+        "convert-source-map": "^1.5.1",
+        "dependency-graph": "^0.7.2",
+        "magic-string": "^0.25.0",
+        "minimist": "^1.2.0",
+        "reflect-metadata": "^0.1.2",
+        "shelljs": "^0.8.1",
+        "source-map": "^0.6.1",
+        "tslib": "^1.9.0",
+        "yargs": "9.0.1"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+          "dev": true
+        },
+        "cross-spawn": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
           "dev": true,
           "requires": {
-            "is-extglob": "^2.1.1"
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
           }
         },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+        "execa": {
+          "version": "0.7.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
           "dev": true,
           "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
+            "cross-spawn": "^5.0.1",
+            "get-stream": "^3.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"
           }
         },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-          "dev": true
-        },
-        "kind-of": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
-          "dev": true
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
         },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+        "load-json-file": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
           "dev": true,
           "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "braces": "^2.3.1",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "extglob": "^2.0.4",
-            "fragment-cache": "^0.2.1",
-            "kind-of": "^6.0.2",
-            "nanomatch": "^1.2.9",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.2"
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "strip-bom": "^3.0.0"
           }
         },
-        "nan": {
-          "version": "2.10.0",
-          "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
-          "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+        "mem": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+          "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
           "dev": true,
-          "optional": true
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
         },
-        "punycode": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
           "dev": true
         },
-        "uri-js": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz",
-          "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=",
+        "os-locale": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
           "dev": true,
           "requires": {
-            "punycode": "^2.1.0"
+            "execa": "^0.7.0",
+            "lcid": "^1.0.0",
+            "mem": "^1.1.0"
           }
-        }
-      }
-    },
-    "@angular-devkit/schematics": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.7.4.tgz",
-      "integrity": "sha512-Gkm2mBMm6a0mNKqZsAcS42VaO7zNSIXhIKbMyZQIcQ1ZMwbsx+Rs0dliQwFVfEVCNGc1pjh0Idc5O5V/g/N5Fw==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "0.7.4",
-        "rxjs": "^6.0.0"
-      },
-      "dependencies": {
-        "@angular-devkit/core": {
-          "version": "0.7.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.7.4.tgz",
-          "integrity": "sha512-Blh44vzZVzE8B9xIwjRoo7hXPGSDdlrrax0rntvt3DDGVTjsSGm43qT95aDmXiwJruOCJNC5DsaP3+tTAkAyQQ==",
+        },
+        "path-type": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
           "dev": true,
           "requires": {
-            "ajv": "~6.4.0",
-            "chokidar": "^2.0.3",
-            "rxjs": "^6.0.0",
-            "source-map": "^0.5.6"
+            "pify": "^2.0.0"
           }
         },
-        "ajv": {
-          "version": "6.4.0",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz",
-          "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=",
+        "read-pkg": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
           "dev": true,
           "requires": {
-            "fast-deep-equal": "^1.0.0",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.3.0",
-            "uri-js": "^3.0.2"
+            "load-json-file": "^2.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^2.0.0"
           }
         },
-        "anymatch": {
+        "read-pkg-up": {
           "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
           "dev": true,
           "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
+            "find-up": "^2.0.0",
+            "read-pkg": "^2.0.0"
           }
         },
-        "arr-diff": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         },
-        "arr-flatten": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-          "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
           "dev": true
         },
-        "array-unique": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+        "which-module": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
           "dev": true
         },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+        "yargs": {
+          "version": "9.0.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
+          "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
           "dev": true,
           "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "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"
-              }
-            }
+            "camelcase": "^4.1.0",
+            "cliui": "^3.2.0",
+            "decamelize": "^1.1.1",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^2.0.0",
+            "read-pkg-up": "^2.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",
+            "yargs-parser": "^7.0.0"
           }
         },
-        "chokidar": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
-          "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+        "yargs-parser": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
+          "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
           "dev": true,
           "requires": {
-            "anymatch": "^2.0.0",
-            "async-each": "^1.0.0",
-            "braces": "^2.3.0",
-            "fsevents": "^1.2.2",
-            "glob-parent": "^3.1.0",
-            "inherits": "^2.0.1",
-            "is-binary-path": "^1.0.0",
-            "is-glob": "^4.0.0",
-            "lodash.debounce": "^4.0.8",
-            "normalize-path": "^2.1.1",
-            "path-is-absolute": "^1.0.0",
-            "readdirp": "^2.0.0",
-            "upath": "^1.0.5"
-          }
-        },
-        "expand-brackets": {
-          "version": "2.1.4",
-          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-          "dev": true,
-          "requires": {
-            "debug": "^2.3.3",
-            "define-property": "^0.2.5",
-            "extend-shallow": "^2.0.1",
-            "posix-character-classes": "^0.1.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "0.2.5",
-              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-              "dev": true,
-              "requires": {
-                "is-descriptor": "^0.1.0"
-              }
-            },
-            "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"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "0.1.6",
-              "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-              "dev": true,
-              "requires": {
-                "kind-of": "^3.0.2"
-              },
-              "dependencies": {
-                "kind-of": {
-                  "version": "3.2.2",
-                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                  "dev": true,
-                  "requires": {
-                    "is-buffer": "^1.1.5"
-                  }
-                }
-              }
-            },
-            "is-data-descriptor": {
-              "version": "0.1.4",
-              "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-              "dev": true,
-              "requires": {
-                "kind-of": "^3.0.2"
-              },
-              "dependencies": {
-                "kind-of": {
-                  "version": "3.2.2",
-                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                  "dev": true,
-                  "requires": {
-                    "is-buffer": "^1.1.5"
-                  }
-                }
-              }
-            },
-            "is-descriptor": {
-              "version": "0.1.6",
-              "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-              "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-              "dev": true,
-              "requires": {
-                "is-accessor-descriptor": "^0.1.6",
-                "is-data-descriptor": "^0.1.4",
-                "kind-of": "^5.0.0"
-              }
-            },
-            "kind-of": {
-              "version": "5.1.0",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-              "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-              "dev": true
-            }
+            "camelcase": "^4.1.0"
           }
+        }
+      }
+    },
+    "@angular/core": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.15.tgz",
+      "integrity": "sha512-XsuYm0jEU/mOqwDOk2utThv8J9kESkAerfuCHClE9rB2TtHUOGCfekF7lJWqjjypu6/J9ygoPFo7hdAE058ZGg==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/forms": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.15.tgz",
+      "integrity": "sha512-p0kcIQLtBBC1qeTA6M3nOuXf/k91E80FKquVM9zEsO2kDjI0oZJVfFYL2UMov5samlJOPN+t6lRHEIUa7ApPsw==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/http": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/http/-/http-7.2.15.tgz",
+      "integrity": "sha512-TR7PEdmLWNIre3Zn8lvyb4lSrvPUJhKLystLnp4hBMcWsJqq5iK8S3bnlR4viZ9HMlf7bW7+Hm4SI6aB3tdUtw==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/platform-browser": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.2.15.tgz",
+      "integrity": "sha512-aYgmPsbC9Tvp9vmKWD8voeAp4crwCay7/D6lM3ClEe2EeK934LuEXq3/uczMrFVbnIX7BBIo8fh03Tl7wbiGPw==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/platform-browser-dynamic": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.15.tgz",
+      "integrity": "sha512-UL2PqhzXMD769NQ6Lh6pxlBDKvN9Qol3XLRFil80lwJ1GRW16ITeYbCamcafIH2GOyd88IhmYcbMfUQ/6q4MMQ==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/router": {
+      "version": "7.2.15",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.2.15.tgz",
+      "integrity": "sha512-qAubRJRQanguUqJQ76J9GSZ4JFtoyhJKRmX5P23ANZJXpB6YLzF2fJmOGi+E6cV8F0tKBMEq1pjxFTisx0MXwQ==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@ant-design/colors": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.1.0.tgz",
+      "integrity": "sha512-Td7g1P53sNFyT4Gya6836e70TrhoVZ+HjZs6mpWIHrxl4/VqsjjOyzj/8ktOuw0lCx+BfYu9UO1CiJ0MoYYfhg==",
+      "requires": {
+        "tinycolor2": "^1.4.1"
+      }
+    },
+    "@ant-design/icons-angular": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@ant-design/icons-angular/-/icons-angular-2.1.0.tgz",
+      "integrity": "sha512-FDOtuxPKm2CaxWBWFqP2a5abtrrlVz8HzBdLEJJD68bW9ombWQKH71ZMp1Iw53Koqn1KTUCy0jPqSuSwx5wcrA==",
+      "requires": {
+        "@ant-design/colors": "^3.1.0",
+        "tslib": "^1.9.0"
+      }
+    },
+    "@babel/code-frame": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz",
+      "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "7.0.0-beta.51"
+      }
+    },
+    "@babel/generator": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz",
+      "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "7.0.0-beta.51",
+        "jsesc": "^2.5.1",
+        "lodash": "^4.17.5",
+        "source-map": "^0.5.0",
+        "trim-right": "^1.0.1"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "2.5.1",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz",
+          "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=",
+          "dev": true
         },
-        "extglob": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-          "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz",
+      "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=",
+      "dev": true,
+      "requires": {
+        "@babel/helper-get-function-arity": "7.0.0-beta.51",
+        "@babel/template": "7.0.0-beta.51",
+        "@babel/types": "7.0.0-beta.51"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz",
+      "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "7.0.0-beta.51"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz",
+      "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=",
+      "dev": true,
+      "requires": {
+        "@babel/types": "7.0.0-beta.51"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz",
+      "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.0",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "array-unique": "^0.3.2",
-            "define-property": "^1.0.0",
-            "expand-brackets": "^2.1.4",
-            "extend-shallow": "^2.0.1",
-            "fragment-cache": "^0.2.1",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-              "dev": true,
-              "requires": {
-                "is-descriptor": "^1.0.0"
-              }
-            },
-            "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"
-              }
-            }
+            "color-convert": "^1.9.0"
           }
         },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+          "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
           "dev": true,
           "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "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"
-              }
-            }
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
           }
         },
-        "fsevents": {
-          "version": "1.2.4",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
-          "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "nan": "^2.9.2",
-            "node-pre-gyp": "^0.10.0"
-          },
-          "dependencies": {
-            "abbrev": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ansi-regex": {
-              "version": "2.1.1",
-              "bundled": true,
-              "dev": true
-            },
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true,
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "@babel/parser": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz",
+      "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=",
+      "dev": true
+    },
+    "@babel/template": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz",
+      "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "7.0.0-beta.51",
+        "@babel/parser": "7.0.0-beta.51",
+        "@babel/types": "7.0.0-beta.51",
+        "lodash": "^4.17.5"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz",
+      "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "7.0.0-beta.51",
+        "@babel/generator": "7.0.0-beta.51",
+        "@babel/helper-function-name": "7.0.0-beta.51",
+        "@babel/helper-split-export-declaration": "7.0.0-beta.51",
+        "@babel/parser": "7.0.0-beta.51",
+        "@babel/types": "7.0.0-beta.51",
+        "debug": "^3.1.0",
+        "globals": "^11.1.0",
+        "invariant": "^2.2.0",
+        "lodash": "^4.17.5"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "globals": {
+          "version": "11.7.0",
+          "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz",
+          "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==",
+          "dev": true
+        },
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/types": {
+      "version": "7.0.0-beta.51",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz",
+      "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2",
+        "lodash": "^4.17.5",
+        "to-fast-properties": "^2.0.0"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.15",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+          "dev": true
+        },
+        "to-fast-properties": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+          "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+          "dev": true
+        }
+      }
+    },
+    "@cypress/listr-verbose-renderer": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz",
+      "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3",
+        "cli-cursor": "^1.0.2",
+        "date-fns": "^1.27.2",
+        "figures": "^1.7.0"
+      }
+    },
+    "@cypress/xvfb": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
+      "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.1.0",
+        "lodash.once": "^4.1.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "@ngtools/webpack": {
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.3.0.tgz",
+      "integrity": "sha512-U/By0Jlwy7nYwrGNtFirTg1aAsEHBL/9DhfFxPI0iu27FWiMttROuN6hmKbbnOmpbiYAVl5qTy3WXPXUIJjG1A==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "7.3.0",
+        "enhanced-resolve": "4.1.0",
+        "rxjs": "6.3.3",
+        "tree-kill": "1.2.1",
+        "webpack-sources": "1.3.0"
+      },
+      "dependencies": {
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        }
+      }
+    },
+    "@schematics/angular": {
+      "version": "7.3.9",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.3.9.tgz",
+      "integrity": "sha512-B3lytFtFeYNLfWdlrIzvy3ulFRccD2/zkoL0734J+DAGfUz7vbysJ50RwYL46sQUcKdZdvb48ktfu1S8yooP6Q==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "7.3.9",
+        "@angular-devkit/schematics": "7.3.9",
+        "typescript": "3.2.4"
+      },
+      "dependencies": {
+        "@angular-devkit/core": {
+          "version": "7.3.9",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.9.tgz",
+          "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.9.1",
+            "chokidar": "2.0.4",
+            "fast-json-stable-stringify": "2.0.0",
+            "rxjs": "6.3.3",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.9.1",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz",
+          "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "dev": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          }
+        },
+        "arr-diff": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+          "dev": true
+        },
+        "array-unique": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+          "dev": true
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "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,
-              "optional": true
-            },
-            "are-we-there-yet": {
-              "version": "1.1.4",
-              "bundled": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "chokidar": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+          "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+          "dev": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.0",
+            "braces": "^2.3.0",
+            "fsevents": "^1.2.2",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.1",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "lodash.debounce": "^4.0.8",
+            "normalize-path": "^2.1.1",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.0.0",
+            "upath": "^1.0.5"
+          }
+        },
+        "expand-brackets": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+          "dev": true,
+          "requires": {
+            "debug": "^2.3.3",
+            "define-property": "^0.2.5",
+            "extend-shallow": "^2.0.1",
+            "posix-character-classes": "^0.1.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "0.2.5",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
+                "is-descriptor": "^0.1.0"
               }
             },
-            "balanced-match": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true
-            },
-            "brace-expansion": {
-              "version": "1.1.11",
-              "bundled": true,
+            "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": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
+                "is-extendable": "^0.1.0"
               }
             },
-            "chownr": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "code-point-at": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true
-            },
-            "concat-map": {
-              "version": "0.0.1",
-              "bundled": true,
-              "dev": true
-            },
-            "console-control-strings": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true
-            },
-            "core-util-is": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "debug": {
-              "version": "2.6.9",
-              "bundled": true,
+            "is-accessor-descriptor": {
+              "version": "0.1.6",
+              "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "ms": "2.0.0"
+                "kind-of": "^3.0.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "^1.1.5"
+                  }
+                }
               }
             },
-            "deep-extend": {
-              "version": "0.5.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "delegates": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "detect-libc": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "fs-minipass": {
-              "version": "1.2.5",
-              "bundled": true,
+            "is-data-descriptor": {
+              "version": "0.1.4",
+              "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "minipass": "^2.2.1"
+                "kind-of": "^3.0.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "^1.1.5"
+                  }
+                }
               }
             },
-            "fs.realpath": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "gauge": {
-              "version": "2.7.4",
-              "bundled": true,
+            "is-descriptor": {
+              "version": "0.1.6",
+              "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+              "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
               "dev": true,
-              "optional": true,
               "requires": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
+                "is-accessor-descriptor": "^0.1.6",
+                "is-data-descriptor": "^0.1.4",
+                "kind-of": "^5.0.0"
               }
             },
-            "glob": {
-              "version": "7.1.2",
-              "bundled": true,
+            "kind-of": {
+              "version": "5.1.0",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+              "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+              "dev": true
+            }
+          }
+        },
+        "extglob": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+          "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+          "dev": true,
+          "requires": {
+            "array-unique": "^0.3.2",
+            "define-property": "^1.0.0",
+            "expand-brackets": "^2.1.4",
+            "extend-shallow": "^2.0.1",
+            "fragment-cache": "^0.2.1",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
+                "is-descriptor": "^1.0.0"
               }
             },
-            "has-unicode": {
+            "extend-shallow": {
               "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "iconv-lite": {
-              "version": "0.4.21",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safer-buffer": "^2.1.0"
-              }
-            },
-            "ignore-walk": {
-              "version": "3.0.1",
-              "bundled": true,
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "minimatch": "^3.0.4"
+                "is-extendable": "^0.1.0"
               }
-            },
-            "inflight": {
-              "version": "1.0.6",
-              "bundled": true,
+            }
+          }
+        },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "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,
-              "optional": true,
               "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
+                "is-extendable": "^0.1.0"
               }
-            },
-            "inherits": {
-              "version": "2.0.3",
-              "bundled": true,
-              "dev": true
-            },
-            "ini": {
-              "version": "1.3.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "is-fullwidth-code-point": {
-              "version": "1.0.0",
-              "bundled": true,
+            }
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
               "dev": true,
               "requires": {
-                "number-is-nan": "^1.0.0"
+                "is-extglob": "^2.1.0"
               }
-            },
-            "isarray": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minimatch": {
-              "version": "3.0.4",
-              "bundled": true,
+            }
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        },
+        "is-extglob": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+          "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.1"
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
               "dev": true,
               "requires": {
-                "brace-expansion": "^1.1.7"
+                "is-buffer": "^1.1.5"
               }
-            },
-            "minimist": {
-              "version": "0.0.8",
-              "bundled": true,
-              "dev": true
-            },
-            "minipass": {
-              "version": "2.2.4",
-              "bundled": true,
+            }
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+          "dev": true
+        },
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "dev": true
+        },
+        "typescript": {
+          "version": "3.2.4",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz",
+          "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==",
+          "dev": true
+        }
+      }
+    },
+    "@schematics/update": {
+      "version": "0.13.9",
+      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.13.9.tgz",
+      "integrity": "sha512-4MQcaKFxhMzZyE//+DknDh3h3duy3avg2oxSHxdwXlCZ8Q92+4lpegjJcSRiqlEwO4qeJ5XnrjrvzfIiaIZOmA==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "7.3.9",
+        "@angular-devkit/schematics": "7.3.9",
+        "@yarnpkg/lockfile": "1.1.0",
+        "ini": "1.3.5",
+        "pacote": "9.4.0",
+        "rxjs": "6.3.3",
+        "semver": "5.6.0",
+        "semver-intersect": "1.4.0"
+      },
+      "dependencies": {
+        "@angular-devkit/core": {
+          "version": "7.3.9",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.9.tgz",
+          "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.9.1",
+            "chokidar": "2.0.4",
+            "fast-json-stable-stringify": "2.0.0",
+            "rxjs": "6.3.3",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.9.1",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz",
+          "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "dev": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          }
+        },
+        "arr-diff": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+          "dev": true
+        },
+        "array-unique": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+          "dev": true
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "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": {
-                "safe-buffer": "^5.1.1",
-                "yallist": "^3.0.0"
+                "is-extendable": "^0.1.0"
               }
-            },
-            "minizlib": {
-              "version": "1.1.0",
-              "bundled": true,
+            }
+          }
+        },
+        "chokidar": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+          "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+          "dev": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.0",
+            "braces": "^2.3.0",
+            "fsevents": "^1.2.2",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.1",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "lodash.debounce": "^4.0.8",
+            "normalize-path": "^2.1.1",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.0.0",
+            "upath": "^1.0.5"
+          }
+        },
+        "expand-brackets": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+          "dev": true,
+          "requires": {
+            "debug": "^2.3.3",
+            "define-property": "^0.2.5",
+            "extend-shallow": "^2.0.1",
+            "posix-character-classes": "^0.1.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "0.2.5",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "minipass": "^2.2.1"
+                "is-descriptor": "^0.1.0"
               }
             },
-            "mkdirp": {
-              "version": "0.5.1",
-              "bundled": true,
+            "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": {
-                "minimist": "0.0.8"
+                "is-extendable": "^0.1.0"
               }
             },
-            "ms": {
-              "version": "2.0.0",
-              "bundled": true,
+            "is-accessor-descriptor": {
+              "version": "0.1.6",
+              "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
               "dev": true,
-              "optional": true
-            },
-            "needle": {
-              "version": "2.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "debug": "^2.1.2",
-                "iconv-lite": "^0.4.4",
-                "sax": "^1.2.4"
-              }
-            },
-            "node-pre-gyp": {
-              "version": "0.10.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "detect-libc": "^1.0.2",
-                "mkdirp": "^0.5.1",
-                "needle": "^2.2.0",
-                "nopt": "^4.0.1",
-                "npm-packlist": "^1.1.6",
-                "npmlog": "^4.0.2",
-                "rc": "^1.1.7",
-                "rimraf": "^2.6.1",
-                "semver": "^5.3.0",
-                "tar": "^4"
-              }
-            },
-            "nopt": {
-              "version": "4.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
               "requires": {
-                "abbrev": "1",
-                "osenv": "^0.1.4"
+                "kind-of": "^3.0.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "^1.1.5"
+                  }
+                }
               }
             },
-            "npm-bundled": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "npm-packlist": {
-              "version": "1.1.10",
-              "bundled": true,
+            "is-data-descriptor": {
+              "version": "0.1.4",
+              "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1"
+                "kind-of": "^3.0.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "^1.1.5"
+                  }
+                }
               }
             },
-            "npmlog": {
-              "version": "4.1.2",
-              "bundled": true,
+            "is-descriptor": {
+              "version": "0.1.6",
+              "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+              "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
               "dev": true,
-              "optional": true,
               "requires": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
+                "is-accessor-descriptor": "^0.1.6",
+                "is-data-descriptor": "^0.1.4",
+                "kind-of": "^5.0.0"
               }
             },
-            "number-is-nan": {
-              "version": "1.0.1",
-              "bundled": true,
+            "kind-of": {
+              "version": "5.1.0",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+              "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
               "dev": true
-            },
-            "object-assign": {
-              "version": "4.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "once": {
-              "version": "1.4.0",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "wrappy": "1"
-              }
-            },
-            "os-homedir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "os-tmpdir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "osenv": {
-              "version": "0.1.5",
-              "bundled": true,
+            }
+          }
+        },
+        "extglob": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+          "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+          "dev": true,
+          "requires": {
+            "array-unique": "^0.3.2",
+            "define-property": "^1.0.0",
+            "expand-brackets": "^2.1.4",
+            "extend-shallow": "^2.0.1",
+            "fragment-cache": "^0.2.1",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "1.0.0",
+              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "os-homedir": "^1.0.0",
-                "os-tmpdir": "^1.0.0"
+                "is-descriptor": "^1.0.0"
               }
             },
-            "path-is-absolute": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "process-nextick-args": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "rc": {
-              "version": "1.2.7",
-              "bundled": true,
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "deep-extend": "^0.5.1",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
-              },
-              "dependencies": {
-                "minimist": {
-                  "version": "1.2.0",
-                  "bundled": true,
-                  "dev": true,
-                  "optional": true
-                }
+                "is-extendable": "^0.1.0"
               }
-            },
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
+            }
+          }
+        },
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+          "dev": true
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "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,
-              "optional": true,
               "requires": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
+                "is-extendable": "^0.1.0"
               }
-            },
-            "rimraf": {
-              "version": "2.6.2",
-              "bundled": true,
+            }
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
               "dev": true,
-              "optional": true,
               "requires": {
-                "glob": "^7.0.5"
+                "is-extglob": "^2.1.0"
               }
-            },
-            "safe-buffer": {
-              "version": "5.1.1",
-              "bundled": true,
-              "dev": true
-            },
-            "safer-buffer": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "sax": {
-              "version": "1.2.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "semver": {
-              "version": "5.5.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "set-blocking": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "signal-exit": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "~5.1.0"
-              }
-            },
-            "strip-ansi": {
-              "version": "3.0.1",
-              "bundled": true,
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^2.0.0"
-              }
-            },
-            "strip-json-comments": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "tar": {
-              "version": "4.4.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "chownr": "^1.0.1",
-                "fs-minipass": "^1.2.5",
-                "minipass": "^2.2.4",
-                "minizlib": "^1.1.0",
-                "mkdirp": "^0.5.0",
-                "safe-buffer": "^5.1.1",
-                "yallist": "^3.0.2"
-              }
-            },
-            "util-deprecate": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "wide-align": {
-              "version": "1.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "string-width": "^1.0.2"
-              }
-            },
-            "wrappy": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true
-            },
-            "yallist": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true
             }
           }
         },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
+        "ini": {
+          "version": "1.3.5",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+          "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+          "dev": true
         },
         "is-accessor-descriptor": {
           "version": "1.0.0",
@@ -2200,9 +2427,9 @@
           "dev": true
         },
         "is-glob": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
-          "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+          "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
           "dev": true,
           "requires": {
             "is-extglob": "^2.1.1"
@@ -2234,6 +2461,12 @@
           "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
           "dev": true
         },
+        "json-schema-traverse": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+          "dev": true
+        },
         "kind-of": {
           "version": "6.0.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -2261,11825 +2494,2330 @@
             "to-regex": "^3.0.2"
           }
         },
-        "nan": {
-          "version": "2.10.0",
-          "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
-          "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+        "rxjs": {
+          "version": "6.3.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
           "dev": true,
-          "optional": true
+          "requires": {
+            "tslib": "^1.9.0"
+          }
         },
-        "punycode": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+        "semver": {
+          "version": "5.6.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+          "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
           "dev": true
         },
-        "uri-js": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz",
-          "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=",
-          "dev": true,
-          "requires": {
-            "punycode": "^2.1.0"
-          }
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "dev": true
         }
       }
     },
-    "@angular/cli": {
-      "version": "6.1.4",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.1.4.tgz",
-      "integrity": "sha512-9lkFGZGV38p5p/s4p91hc8r4z1WaUKgige8pGNBIuW93esnkjoll5/NKx4siU2wsaPd/4njaP5f2iuUuyYNtbg==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/architect": "0.7.4",
-        "@angular-devkit/core": "0.7.4",
-        "@angular-devkit/schematics": "0.7.4",
-        "@schematics/angular": "0.7.4",
-        "@schematics/update": "0.7.4",
-        "opn": "^5.3.0",
-        "rxjs": "^6.0.0",
-        "semver": "^5.1.0",
-        "symbol-observable": "^1.2.0",
-        "yargs-parser": "^10.0.0"
+    "@types/ace": {
+      "version": "0.0.32",
+      "resolved": "https://registry.npmjs.org/@types/ace/-/ace-0.0.32.tgz",
+      "integrity": "sha1-1YSBOWBgdUDdsgLeiz4ilQTUXP8=",
+      "dev": true
+    },
+    "@types/bootstrap": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-4.1.2.tgz",
+      "integrity": "sha512-BiC/IxqyLS68UFp71t2Px80ql/FpaUKSy469aa6HTDFRkv/FvdzRZjF6ifDql/VKSLyin5AZa/yARLetMFM4rQ==",
+      "requires": {
+        "@types/jquery": "*",
+        "popper.js": "^1.14.1"
+      }
+    },
+    "@types/es6-promise": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-0.0.33.tgz",
+      "integrity": "sha1-KApwfmKxtr7xqGzAhh7GPNBsf/M=",
+      "dev": true
+    },
+    "@types/jasmine": {
+      "version": "2.5.38",
+      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.38.tgz",
+      "integrity": "sha1-pDeRJMSSHU4h3lTsdGacnps1Zxc=",
+      "dev": true
+    },
+    "@types/jquery": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.6.tgz",
+      "integrity": "sha512-403D4wN95Mtzt2EoQHARf5oe/jEPhzBOBNrunk+ydQGW8WmkQ/E8rViRAEB1qEt/vssfGfNVD6ujP4FVeegrLg=="
+    },
+    "@types/moment": {
+      "version": "2.13.0",
+      "resolved": "https://registry.npmjs.org/@types/moment/-/moment-2.13.0.tgz",
+      "integrity": "sha1-YE69GJvDvDShVIaJQE5hoqSqyJY=",
+      "dev": true,
+      "requires": {
+        "moment": "*"
+      }
+    },
+    "@types/node": {
+      "version": "6.0.78",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.78.tgz",
+      "integrity": "sha512-+vD6E8ixntRzzZukoF3uP1iV+ZjVN3koTcaeK+BEoc/kSfGbLDIGC7RmCaUgVpUfN6cWvfczFRERCyKM9mkvXg==",
+      "dev": true
+    },
+    "@types/pikaday-time": {
+      "version": "1.4.5",
+      "resolved": "https://registry.npmjs.org/@types/pikaday-time/-/pikaday-time-1.4.5.tgz",
+      "integrity": "sha1-040HYaJnOzjAjgULvQieYcw8LRc=",
+      "dev": true,
+      "requires": {
+        "moment": ">=2.14.0"
+      }
+    },
+    "@types/q": {
+      "version": "0.0.32",
+      "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
+      "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
+      "dev": true
+    },
+    "@types/source-list-map": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
+      "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
+      "dev": true
+    },
+    "@types/webpack-sources": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.5.tgz",
+      "integrity": "sha512-zfvjpp7jiafSmrzJ2/i3LqOyTYTuJ7u1KOXlKgDlvsj9Rr0x7ZiYu5lZbXwobL7lmsRNtPXlBfmaUD8eU2Hu8w==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*",
+        "@types/source-list-map": "*",
+        "source-map": "^0.6.1"
       },
       "dependencies": {
-        "@angular-devkit/architect": {
-          "version": "0.7.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.7.4.tgz",
-          "integrity": "sha512-qcxLtA5XhUCqNyyMOD+s7oIVywNnhUNE1qoopnm6MN0FJ1n7iQMU5TPZBTiXDWQVnbGODObi7tGo7gFnEBML5Q==",
-          "dev": true,
-          "requires": {
-            "@angular-devkit/core": "0.7.4",
-            "rxjs": "^6.0.0"
-          }
-        },
-        "@angular-devkit/core": {
-          "version": "0.7.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.7.4.tgz",
-          "integrity": "sha512-Blh44vzZVzE8B9xIwjRoo7hXPGSDdlrrax0rntvt3DDGVTjsSGm43qT95aDmXiwJruOCJNC5DsaP3+tTAkAyQQ==",
-          "dev": true,
-          "requires": {
-            "ajv": "~6.4.0",
-            "chokidar": "^2.0.3",
-            "rxjs": "^6.0.0",
-            "source-map": "^0.5.6"
-          }
-        },
-        "ajv": {
-          "version": "6.4.0",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz",
-          "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^1.0.0",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.3.0",
-            "uri-js": "^3.0.2"
-          }
-        },
-        "anymatch": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-          "dev": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          }
-        },
-        "arr-diff": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-          "dev": true
-        },
-        "arr-flatten": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-          "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-          "dev": true
-        },
-        "array-unique": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
+        }
+      }
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz",
+      "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/helper-module-context": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/wast-parser": "1.7.11"
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz",
+      "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz",
+      "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz",
+      "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz",
+      "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.7.11"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz",
+      "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-module-context": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz",
+      "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz",
+      "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz",
+      "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-buffer": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/wasm-gen": "1.7.11"
+      }
+    },
+    "@webassemblyjs/ieee754": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz",
+      "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==",
+      "dev": true,
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz",
+      "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==",
+      "dev": true,
+      "requires": {
+        "@xtuc/long": "4.2.1"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz",
+      "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==",
+      "dev": true
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz",
+      "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-buffer": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/helper-wasm-section": "1.7.11",
+        "@webassemblyjs/wasm-gen": "1.7.11",
+        "@webassemblyjs/wasm-opt": "1.7.11",
+        "@webassemblyjs/wasm-parser": "1.7.11",
+        "@webassemblyjs/wast-printer": "1.7.11"
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz",
+      "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/ieee754": "1.7.11",
+        "@webassemblyjs/leb128": "1.7.11",
+        "@webassemblyjs/utf8": "1.7.11"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz",
+      "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-buffer": "1.7.11",
+        "@webassemblyjs/wasm-gen": "1.7.11",
+        "@webassemblyjs/wasm-parser": "1.7.11"
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz",
+      "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/helper-api-error": "1.7.11",
+        "@webassemblyjs/helper-wasm-bytecode": "1.7.11",
+        "@webassemblyjs/ieee754": "1.7.11",
+        "@webassemblyjs/leb128": "1.7.11",
+        "@webassemblyjs/utf8": "1.7.11"
+      }
+    },
+    "@webassemblyjs/wast-parser": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz",
+      "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/floating-point-hex-parser": "1.7.11",
+        "@webassemblyjs/helper-api-error": "1.7.11",
+        "@webassemblyjs/helper-code-frame": "1.7.11",
+        "@webassemblyjs/helper-fsm": "1.7.11",
+        "@xtuc/long": "4.2.1"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.7.11",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz",
+      "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.7.11",
+        "@webassemblyjs/wast-parser": "1.7.11",
+        "@xtuc/long": "4.2.1"
+      }
+    },
+    "@xtuc/ieee754": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+      "dev": true
+    },
+    "@xtuc/long": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz",
+      "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==",
+      "dev": true
+    },
+    "@yarnpkg/lockfile": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
+      "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
+      "dev": true
+    },
+    "JSONStream": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
+      "dev": true,
+      "requires": {
+        "jsonparse": "^1.2.0",
+        "through": ">=2.2.7 <3"
+      }
+    },
+    "abbrev": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
+      "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=",
+      "dev": true
+    },
+    "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"
+      }
+    },
+    "ace-builds": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.2.6.tgz",
+      "integrity": "sha1-qSM8J8N7hJTyCvhJF+4WGUia9Ck="
+    },
+    "acorn": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz",
+      "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==",
+      "dev": true
+    },
+    "acorn-dynamic-import": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
+      "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
+      "dev": 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==",
+      "dev": true
+    },
+    "after": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+      "dev": true
+    },
+    "agent-base": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
+      "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+      "requires": {
+        "es6-promisify": "^5.0.0"
+      }
+    },
+    "agentkeepalive": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
+      "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
+      "dev": true,
+      "requires": {
+        "humanize-ms": "^1.2.1"
+      }
+    },
+    "ajv": {
+      "version": "6.5.3",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+      "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
+      "requires": {
+        "fast-deep-equal": "^2.0.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "dependencies": {
+        "fast-deep-equal": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
         },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "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"
-              }
-            }
-          }
-        },
-        "camelcase": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
-          "dev": true
-        },
-        "chokidar": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
-          "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
-          "dev": true,
-          "requires": {
-            "anymatch": "^2.0.0",
-            "async-each": "^1.0.0",
-            "braces": "^2.3.0",
-            "fsevents": "^1.2.2",
-            "glob-parent": "^3.1.0",
-            "inherits": "^2.0.1",
-            "is-binary-path": "^1.0.0",
-            "is-glob": "^4.0.0",
-            "lodash.debounce": "^4.0.8",
-            "normalize-path": "^2.1.1",
-            "path-is-absolute": "^1.0.0",
-            "readdirp": "^2.0.0",
-            "upath": "^1.0.5"
-          }
-        },
-        "expand-brackets": {
-          "version": "2.1.4",
-          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-          "dev": true,
-          "requires": {
-            "debug": "^2.3.3",
-            "define-property": "^0.2.5",
-            "extend-shallow": "^2.0.1",
-            "posix-character-classes": "^0.1.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "0.2.5",
-              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-              "dev": true,
-              "requires": {
-                "is-descriptor": "^0.1.0"
-              }
-            },
-            "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"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "0.1.6",
-              "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-              "dev": true,
-              "requires": {
-                "kind-of": "^3.0.2"
-              },
-              "dependencies": {
-                "kind-of": {
-                  "version": "3.2.2",
-                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                  "dev": true,
-                  "requires": {
-                    "is-buffer": "^1.1.5"
-                  }
-                }
-              }
-            },
... 83543 lines suppressed ...